X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fconfig.cpp;h=61f7322e742ead72279f2d89a33f1012a4c8f497;hb=cbb3c4c6aab7b04f7bd2178fb8f12846d532a472;hp=de6b9bce34525c0f86e4dd4f2b3a306840807649;hpb=0d80cabf649b931b26e7055385156c75a7385d35;p=builder.git diff --git a/source/config.cpp b/source/config.cpp index de6b9bc..61f7322 100644 --- a/source/config.cpp +++ b/source/config.cpp @@ -54,6 +54,19 @@ void Config::load(const Path::Path &fn) struct stat st; Path::stat(fn, st); mtime=Time::TimeStamp::from_unixtime(st.st_mtime); + + Parser::Parser parser(in, fn.str()); + Loader loader(*this); + loader.load(parser); +} + +void Config::save(const Path::Path &fn) const +{ + ofstream out(fn.str().c_str()); + if(!out) return; + + for(OptionMap::const_iterator i=options.begin(); i!=options.end(); ++i) + out<<"option \""<second.name<<"\" \""<second.value<<"\";\n"; } Config::Option::Option(const string &n, const string &v, const string &d): @@ -62,3 +75,16 @@ Config::Option::Option(const string &n, const string &v, const string &d): descr(d), value(v) { } + +Config::Loader::Loader(Config &c): + conf(c) +{ + add("option", &Loader::option); +} + +void Config::Loader::option(const string &n, const string &v) +{ + OptionMap::iterator i=conf.options.find(n); + if(i!=conf.options.end()) + i->second.value=v; +}