unifiltergen.cc

00001 /*
00002  * Worldvisions Weaver Software:
00003  *   Copyright (C) 2002 Net Integration Technologies, Inc.
00004  * 
00005  * A UniConfGen framework to simplify writing filtering generators.
00006  */
00007 #include "unifiltergen.h"
00008 
00009 /***** UniFilterGen *****/
00010 
00011 UniFilterGen::UniFilterGen(IUniConfGen *inner) 
00012     : xinner(NULL)
00013 {
00014     setinner(inner);
00015 }
00016 
00017 
00018 UniFilterGen::~UniFilterGen()
00019 {
00020     IUniConfGen *gen = xinner;
00021     setinner(NULL);
00022     WVRELEASE(gen);
00023 }
00024 
00025 
00026 void UniFilterGen::setinner(IUniConfGen *inner)
00027 {
00028     if (xinner)
00029         xinner->del_callback(this);
00030     xinner = inner;
00031     if (xinner)
00032         xinner->add_callback(this, UniConfGenCallback(this,
00033             &UniFilterGen::gencallback));
00034 }
00035 
00036 
00037 UniConfKey UniFilterGen::keymap(const UniConfKey &key)
00038 {
00039     // by default, don't rename the key
00040     return key;
00041 }
00042 
00043 UniConfKey UniFilterGen::reversekeymap(const UniConfKey &key)
00044 {
00045     // by default, don't rename the key
00046     return key;
00047 }
00048 
00049 
00050 void UniFilterGen::commit()
00051 {
00052     if (xinner)
00053         xinner->commit();
00054 }
00055 
00056 
00057 bool UniFilterGen::refresh()
00058 {
00059     if (xinner)
00060         return xinner->refresh();
00061     else
00062         return false;
00063 }
00064 
00065 
00066 void UniFilterGen::prefetch(const UniConfKey &key, bool recursive)
00067 {
00068     if (xinner)
00069         xinner->prefetch(keymap(key), recursive);
00070 }
00071 
00072 
00073 WvString UniFilterGen::get(const UniConfKey &key)
00074 {
00075     if (xinner)
00076         return xinner->get(keymap(key));
00077     else
00078         return WvString::null;
00079 }
00080 
00081 
00082 void UniFilterGen::flush_buffers()
00083 {
00084     if (xinner)
00085         xinner->flush_buffers();
00086 }
00087 
00088 
00089 void UniFilterGen::set(const UniConfKey &key, WvStringParm value)
00090 {
00091     if (xinner)
00092         xinner->set(keymap(key), value);
00093 }
00094 
00095 
00096 void UniFilterGen::setv(const UniConfPairList &pairs)
00097 {
00098     if (xinner)
00099         xinner->setv(pairs);
00100 }
00101 
00102 
00103 bool UniFilterGen::exists(const UniConfKey &key)
00104 {
00105     if (xinner)
00106         return xinner->exists(keymap(key));
00107     else
00108         return false;
00109 }
00110 
00111 
00112 bool UniFilterGen::haschildren(const UniConfKey &key)
00113 {
00114     if (xinner)
00115         return xinner->haschildren(keymap(key));
00116     else
00117         return false;
00118 }
00119 
00120 
00121 bool UniFilterGen::isok()
00122 {
00123     if (xinner)
00124         return xinner->isok();
00125     else
00126         return false;
00127 }
00128 
00129 
00130 UniConfGen::Iter *UniFilterGen::iterator(const UniConfKey &key)
00131 {
00132     if (xinner)
00133         return xinner->iterator(keymap(key));
00134     else
00135         return NULL;
00136 }
00137 
00138 
00139 UniConfGen::Iter *UniFilterGen::recursiveiterator(const UniConfKey &key)
00140 {
00141     if (xinner)
00142         return xinner->recursiveiterator(keymap(key));
00143     else
00144         return NULL;
00145 }
00146 
00147 
00148 void UniFilterGen::gencallback(const UniConfKey &key, WvStringParm value)
00149 {
00150     if (xinner)
00151         delta(reversekeymap(key), value);
00152     else
00153         delta(keymap(key), value);
00154 }

Generated on Wed Jul 12 17:53:19 2006 for WvStreams by  doxygen 1.4.7