2 * Worldvisions Weaver Software:
3 * Copyright (C) 2002 Net Integration Technologies, Inc.
5 * A UniConfGen framework to simplify writing filtering generators.
7 #include "unifiltergen.h"
9 /***** UniFilterGen *****/
11 UniFilterGen::UniFilterGen(IUniConfGen
*inner
)
18 UniFilterGen::~UniFilterGen()
20 IUniConfGen
*gen
= xinner
;
26 void UniFilterGen::setinner(IUniConfGen
*inner
)
29 xinner
->del_callback(this);
32 xinner
->add_callback(this, wv::bind(&UniFilterGen::gencallback
, this,
37 bool UniFilterGen::keymap(const UniConfKey
&unmapped_key
, UniConfKey
&mapped_key
)
39 // by default, don't rename the key
40 mapped_key
= unmapped_key
;
44 bool UniFilterGen::reversekeymap(const UniConfKey
&mapped_key
, UniConfKey
&unmapped_key
)
46 // by default, don't rename the key
47 unmapped_key
= mapped_key
;
52 void UniFilterGen::commit()
59 bool UniFilterGen::refresh()
62 return xinner
->refresh();
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
);
82 return WvString::null
;
86 void UniFilterGen::flush_buffers()
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
)
108 bool UniFilterGen::exists(const UniConfKey
&key
)
110 UniConfKey mapped_key
;
111 if (xinner
&& keymap(key
, mapped_key
))
112 return xinner
->exists(mapped_key
);
118 bool UniFilterGen::haschildren(const UniConfKey
&key
)
120 UniConfKey mapped_key
;
121 if (xinner
&& keymap(key
, mapped_key
))
122 return xinner
->haschildren(mapped_key
);
128 bool UniFilterGen::isok()
131 return xinner
->isok();
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
);
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
);
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
);