00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "wvconf.h"
00011
00012
00013 WvConfigSection::WvConfigSection(WvStringParm _name)
00014 : name(_name)
00015 {
00016 }
00017
00018
00019 WvConfigSection::~WvConfigSection()
00020 {
00021
00022
00023 }
00024
00025
00026 WvConfigEntry *WvConfigSection::operator[] (WvStringParm ename)
00027 {
00028 Iter i(*this);
00029
00030 for (i.rewind(); i.next();)
00031 {
00032 if (strcasecmp(i().name, ename) == 0)
00033 return &i();
00034 }
00035
00036 return NULL;
00037 }
00038
00039
00040 const char *WvConfigSection::get(WvStringParm entry, const char *def_val)
00041 {
00042 WvConfigEntry *e = (*this)[entry];
00043 return e ? (const char *)e->value : def_val;
00044 }
00045
00046
00047 void WvConfigSection::set(WvStringParm entry, WvStringParm value)
00048 {
00049 WvString clean_entry = entry;
00050 trim_string(clean_entry.edit());
00051 WvConfigEntry *e = (*this)[clean_entry];
00052
00053
00054 if (!value || !value[0])
00055 {
00056 if (e) unlink(e);
00057 return;
00058 }
00059
00060
00061 if (e)
00062 e->set(value);
00063 else
00064 append(new WvConfigEntry(clean_entry, value), true);
00065 }
00066
00067
00068 void WvConfigSection::quick_set(WvStringParm entry, WvStringParm value)
00069 {
00070 WvString clean_entry = entry;
00071 trim_string(clean_entry.edit());
00072 append(new WvConfigEntry(clean_entry, value), true);
00073 }
00074
00075
00076 void WvConfigSection::dump(WvStream &fp)
00077 {
00078 Iter i(*this);
00079
00080 for (i.rewind(); i.next(); )
00081 {
00082 WvConfigEntry &e = *i;
00083 if (e.value && e.value[0])
00084 fp.print("%s = %s\n", e.name, e.value);
00085 else
00086 fp.print("%s =\n", e.name);
00087 }
00088 }