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 }