00001
00002
00003
00004
00005
00006
00007
00008 #include "uniconfroot.h"
00009 #include "unisubtreegen.h"
00010 #include "wvlinkerhack.h"
00011
00012 WV_LINK(UniAutoGen);
00013
00014
00021 WvString uniautogen_moniker("default:ini:/etc/uniconf.conf");
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 static IUniConfGen *creator(WvStringParm s, IObject *_obj)
00044 {
00045 UniConfRoot cfg((UniConfGen *)
00046 wvcreate<IUniConfGen>(uniautogen_moniker, _obj), true);
00047 const UniConfKey appname(s);
00048
00049 for (int i = appname.numsegments(); i >= 0; i--)
00050 {
00051 UniConfKey prefix(appname.first(i)), suffix(appname.removefirst(i));
00052
00053 if (!!cfg.xget(prefix))
00054 {
00055 return new UniSubtreeGen(wvcreate<IUniConfGen>(cfg.xget(prefix)),
00056 suffix);
00057 }
00058 }
00059
00060 return wvcreate<IUniConfGen>("null:");
00061 }
00062
00063
00064 static WvMoniker<IUniConfGen> autoreg("auto", creator);