WvStreams
debian/libwvstreams-dev/usr/include/wvstreams/uniconfroot.h
1/* -*- Mode: C++ -*-
2 * Worldvisions Weaver Software:
3 * Copyright (C) 1997-2002 Net Integration Technologies, Inc.
4 *
5 * Defines the root management class for UniConf.
6 */
7#ifndef __UNICONFROOT_H
8#define __UNICONFROOT_H
9
10#include "uniconf.h"
11#include "uniconftree.h"
12#include "unimountgen.h"
13
14
20{
21public:
22 void *cookie;
23 bool recurse;
24 UniConfCallback cb;
25
26 UniWatchInfo(void *_cookie, bool _recurse, UniConfCallback _cb)
27 : cookie(_cookie), recurse(_recurse), cb(_cb) { }
28
30 bool recursive()
31 { return recurse; }
32
34 void notify(const UniConf &cfg, const UniConfKey &key)
35 { cb(cfg, key); }
36
38 bool operator== (const UniWatchInfo &other) const
39 { return other.cookie == cookie; }
40};
41DeclareWvList(UniWatchInfo);
42
43
48class UniWatchInfoTree : public UniConfTree<UniWatchInfoTree>
49{
50public:
51 UniWatchInfoList watches;
52
56
59 { return haschildren() || ! watches.isempty(); }
60};
61
62
73class UniConfRoot : public UniConf
74{
75 friend class UniConf;
76 friend class UniConf::Iter;
77 friend class UniConf::RecursiveIter;
78
79 UniWatchInfoTree watchroot;
80
82 UniConfRoot(const UniConfRoot &other);
83
84public:
87
93 UniConfRoot(WvStringParm moniker, bool refresh = true);
94
100 UniConfRoot(UniConfGen *gen, bool refresh = true);
101
103 ~UniConfRoot();
104
109 void add_callback(void *cookie, const UniConfKey &key,
110 const UniConfCallback &callback, bool recurse = true);
111
115 void del_callback(void *cookie, const UniConfKey &key,
116 bool recurse = true);
117
122 void add_setbool(const UniConfKey &key, bool *flag, bool recurse = true);
123
127 void del_setbool(const UniConfKey &key, bool *flag, bool recurse = true);
128
129private:
136 void check(UniWatchInfoTree *node, const UniConfKey &key, int segleft);
137
143 void deletioncheck(UniWatchInfoTree *node, const UniConfKey &key);
144
146 void prune(UniWatchInfoTree *node);
147
149 void gen_callback(const UniConfKey &key, WvStringParm value);
150
151protected:
152 friend class UniUnwrapGen;
153 UniMountGen mounts;
154
155public:
157 static void setbool_callback(bool *flag, const UniConf &,
158 const UniConfKey &)
159 { *flag = true; }
160
161};
162
163#endif //__UNICONFROOT_H
A default implementation of IUniConfGen, providing various handy features that save trouble when impl...
Represents a UniConf key which is a path in a hierarchy structured much like the traditional Unix fil...
Represents the root of a hierarhical registry consisting of pairs of UniConfKeys and associated strin...
void add_callback(void *cookie, const UniConfKey &key, const UniConfCallback &callback, bool recurse=true)
Requests notification when any of the keys covered by the recursive depth specification change by inv...
UniConfRoot()
Creates an empty UniConf tree with no mounted stores.
static void setbool_callback(bool *flag, const UniConf &, const UniConfKey &)
Internal callback for setbool style notifications.
void del_callback(void *cookie, const UniConfKey &key, bool recurse=true)
Cancels notification requested using add_callback().
void del_setbool(const UniConfKey &key, bool *flag, bool recurse=true)
Cancels notification requested using add_setbool().
~UniConfRoot()
Destroys the UniConf tree along with all uncommitted data.
void add_setbool(const UniConfKey &key, bool *flag, bool recurse=true)
Requests notification when any of the keys covered by the recursive depth specification change by set...
A recursively composed dictionary for tree-structured data indexed by UniConfKey.
UniWatchInfoTree * parent() const
Returns a pointer to the parent node, or NULL if there is none.
This iterator walks through all immediate children of a UniConf node.
This iterator performs depth-first traversal of a subtree.
UniConf instances function as handles to subtrees of a UniConf tree and expose a high-level interface...
UniConfKey key() const
Returns the path of this node relative to its parent.
bool refresh() const
Refreshes information about this key recursively.
Definition uniconf.cc:119
const UniConfKey & key() const
Returns the key field.
bool haschildren() const
Returns true if the node has children.
The UniMountTree implementation realized as a UniConfGen.
Deprecated: a UniConfGen that delegates all requests to an inner UniConf.
bool isessential()
Returns true if the node should not be pruned.
void notify(const UniConf &cfg, const UniConfKey &key)
Notifies that a key has changed.
bool operator==(const UniWatchInfo &other) const
Equality test.
A WvFastString acts exactly like a WvString, but can take (const char *) strings without needing to a...