]> git.tdb.fi Git - builder.git/blobdiff - source/config.cpp
Refactor transitive dependencies to work on all targets
[builder.git] / source / config.cpp
diff --git a/source/config.cpp b/source/config.cpp
deleted file mode 100644 (file)
index 99e5981..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-#include <fstream>
-#include <msp/error.h>
-#include <msp/path/utils.h>
-#include <msp/time/utils.h>
-#include "config.h"
-
-using namespace std;
-using namespace Msp;
-
-/**
-Adds a configuration option.
-
-@param   n  Option name
-@param   v  Default value
-@param   d  Description
-*/
-void Config::add_option(const string &n, const string &v, const string &d)
-{
-       options.insert(OptionMap::value_type(n, Option(n, v, d)));
-}
-
-/**
-Gets the given option from the configuration.  If the option doesn't exist,
-an Exception is thrown.
-*/
-const Config::Option &Config::get_option(const string &name) const
-{
-       OptionMap::const_iterator i=options.find(name);
-       if(i==options.end())
-               throw Exception("Tried to access nonexistent option "+name);
-
-       return i->second;
-}
-
-/**
-Checks whether an option with the given name exists.
-*/
-bool Config::is_option(const string &name) const
-{
-       return options.count(name);
-}
-
-/**
-Processes options from the given raw option map.  Nonexistent options are
-ignored.  If any options were changed, the mtime of the configuration is updated
-to the current time.
-
-@param   opts  A map to process options from
-
-@return  Whether any option values were changed
-*/
-bool Config::process(const RawOptionMap &opts)
-{
-       bool changed=false;
-       for(RawOptionMap::const_iterator i=opts.begin(); i!=opts.end(); ++i)
-       {
-               OptionMap::iterator j=options.find(i->first);
-               if(j!=options.end())
-               {
-                       if(i->second!=j->second.value)
-                               changed=true;
-                       j->second.value=i->second;
-               }
-       }
-
-       if(changed)
-               mtime=Time::now();
-
-       return changed;
-}
-
-/**
-Loads configuration from a file, if it exists.
-*/
-void Config::load(const Path::Path &fn)
-{
-       ifstream in(fn.str().c_str());
-       if(!in) return;
-
-       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 \""<<i->second.name<<"\" \""<<i->second.value<<"\";\n";
-}
-
-Config::Option::Option(const string &n, const string &v, const string &d):
-       name(n),
-       defv(v),
-       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;
-}