Make WvStreams compile with gcc 4.4.
[wvstreams.git] / uniconf / unifiltergen.cc
blobecd2d4068e96d8bd402a1a6bd812c8fe9f908937
1 /*
2 * Worldvisions Weaver Software:
3 * Copyright (C) 2002 Net Integration Technologies, Inc.
4 *
5 * A UniConfGen framework to simplify writing filtering generators.
6 */
7 #include "unifiltergen.h"
9 /***** UniFilterGen *****/
11 UniFilterGen::UniFilterGen(IUniConfGen *inner)
12 : xinner(NULL)
14 setinner(inner);
18 UniFilterGen::~UniFilterGen()
20 IUniConfGen *gen = xinner;
21 setinner(NULL);
22 WVRELEASE(gen);
26 void UniFilterGen::setinner(IUniConfGen *inner)
28 if (xinner)
29 xinner->del_callback(this);
30 xinner = inner;
31 if (xinner)
32 xinner->add_callback(this, wv::bind(&UniFilterGen::gencallback, this,
33 _1, _2));
37 bool UniFilterGen::keymap(const UniConfKey &unmapped_key, UniConfKey &mapped_key)
39 // by default, don't rename the key
40 mapped_key = unmapped_key;
41 return true;
44 bool UniFilterGen::reversekeymap(const UniConfKey &mapped_key, UniConfKey &unmapped_key)
46 // by default, don't rename the key
47 unmapped_key = mapped_key;
48 return true;
52 void UniFilterGen::commit()
54 if (xinner)
55 xinner->commit();
59 bool UniFilterGen::refresh()
61 if (xinner)
62 return xinner->refresh();
63 else
64 return false;
68 void UniFilterGen::prefetch(const UniConfKey &key, bool recursive)
70 UniConfKey mapped_key;
71 if (xinner && keymap(key, mapped_key))
72 xinner->prefetch(mapped_key, recursive);
76 WvString UniFilterGen::get(const UniConfKey &key)
78 UniConfKey mapped_key;
79 if (xinner && keymap(key, mapped_key))
80 return xinner->get(mapped_key);
81 else
82 return WvString::null;
86 void UniFilterGen::flush_buffers()
88 if (xinner)
89 xinner->flush_buffers();
93 void UniFilterGen::set(const UniConfKey &key, WvStringParm value)
95 UniConfKey mapped_key;
96 if (xinner && keymap(key, mapped_key))
97 xinner->set(mapped_key, value);
101 void UniFilterGen::setv(const UniConfPairList &pairs)
103 if (xinner)
104 xinner->setv(pairs);
108 bool UniFilterGen::exists(const UniConfKey &key)
110 UniConfKey mapped_key;
111 if (xinner && keymap(key, mapped_key))
112 return xinner->exists(mapped_key);
113 else
114 return false;
118 bool UniFilterGen::haschildren(const UniConfKey &key)
120 UniConfKey mapped_key;
121 if (xinner && keymap(key, mapped_key))
122 return xinner->haschildren(mapped_key);
123 else
124 return false;
128 bool UniFilterGen::isok()
130 if (xinner)
131 return xinner->isok();
132 else
133 return false;
137 UniConfGen::Iter *UniFilterGen::iterator(const UniConfKey &key)
139 UniConfKey mapped_key;
140 if (xinner && keymap(key, mapped_key))
141 return xinner->iterator(mapped_key);
142 else
143 return NULL;
147 UniConfGen::Iter *UniFilterGen::recursiveiterator(const UniConfKey &key)
149 UniConfKey mapped_key;
150 if (xinner && keymap(key, mapped_key))
151 return xinner->recursiveiterator(mapped_key);
152 else
153 return NULL;
157 void UniFilterGen::gencallback(const UniConfKey &key, WvStringParm value)
159 UniConfKey unmapped_key;
160 if (xinner && reversekeymap(key, unmapped_key))
161 delta(unmapped_key, value);