/usr/include/wvstreams/unireplicategen.h is in libwvstreams-dev 4.6.1-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | /* -*- Mode: C++ -*-
 * Worldvisions Weaver Software:
 *   Copyright (C) 2002 Net Integration Technologies, Inc.
 *
 * A UniConf generator that caches keys/values in memory.
 */
#ifndef __UNIREPLICATEGEN_H
#define __UNIREPLICATEGEN_H
#include "uniconftree.h"
#include "wvlog.h"
/**
 * A UniConf generator that replicates generators between an ordered list
 * of inner generators, with the priority given by the list.
 *
 * Replication of the data occurs when the generator is contructed, whenever
 * prepend() or append() is called, or whenever any of the generators in the
 * list goes from !isok() to isok().  If two inner generators contain different
 * values for the same before replication, then they will both have the value
 * of the earlier generator (as ordered in the moniker) after replication.
 *
 * If an asynchronous change occurs in any of the inner generators, the
 * new value will be set in all generators irrespective of priority.
 */
class UniReplicateGen : public UniConfGen
{
private:
    struct Gen
    {
    	IUniConfGen *gen;
    	bool was_ok;
    	bool auto_free;
    	
    	Gen(IUniConfGen *_gen, bool _auto_free)
    	    	: gen(_gen), was_ok(gen->isok()), auto_free(_auto_free) {}
    	~Gen() { if (auto_free) WVRELEASE(gen); }
    	
    	bool isok() { return was_ok = gen->isok(); }
    };
    DeclareWvList(Gen);
    GenList gens;
    
    bool processing_callback;
    Gen *first_ok() const;
    
    void replicate_if_any_have_become_ok();
    
protected:
    void replicate(const UniConfKey &key = "/");
    void deltacallback(Gen *src_gen, const UniConfKey &key,
		       WvStringParm value);
public:
    UniReplicateGen();
    UniReplicateGen(const IUniConfGenList &_gens, bool autofree = true);
    virtual ~UniReplicateGen();
    
    void prepend(IUniConfGen *gen, bool autofree = true);
    void append(IUniConfGen *gen, bool autofree = true);
    /***** Overridden members *****/
    virtual bool isok();
    virtual void commit();
    virtual bool refresh();
    virtual void flush_buffers() { }
    virtual void set(const UniConfKey &key, WvStringParm value);
    virtual void setv(const UniConfPairList &pairs);
    virtual WvString get(const UniConfKey &key);
    virtual Iter *iterator(const UniConfKey &key);
};
#endif // __UNIREPLICATEGEN_H
 |