]> git.tdb.fi Git - builder.git/blobdiff - source/config.cpp
Use ObjectLoaders where appropriate
[builder.git] / source / config.cpp
index 87573e22360d5a765a12e5412616364b6f0ffa18..d96140fdc9feb60b1ac83bc204d89a52acea9f33 100644 (file)
@@ -1,10 +1,3 @@
-/* $Id$
-
-This file is part of builder
-Copyright © 2006-2009  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #include <msp/core/maputils.h>
 #include <msp/fs/stat.h>
 #include <msp/fs/utils.h>
@@ -40,15 +33,14 @@ bool Config::is_option(const string &name) const
 
 void Config::select_last_profile()
 {
-       try
+       FS::Path profile_cache_fn = package.get_source()/".profile";
+       if(FS::exists(profile_cache_fn))
        {
-               IO::BufferedFile in((package.get_source()/".profile").str());
+               IO::BufferedFile in(profile_cache_fn.str());
                string profile;
                in.getline(profile);
                set_option("profile", profile);
        }
-       catch(const IO::file_not_found &)
-       { }
 
        freeze_mtime = true;
        package.get_builder().apply_profile_template(*this, get_option("profile").value);
@@ -128,18 +120,17 @@ void Config::load()
 {
        FS::Path fn = package.get_source()/(".options."+get_option("profile").value);
 
-       try
+       FS::Stat stat = FS::stat(fn);
+       if(stat)
        {
                IO::BufferedFile in(fn.str());
 
-               mtime = FS::stat(fn).get_modify_time();
+               mtime = stat.get_modify_time();
 
                DataFile::Parser parser(in, fn.str());
                Loader loader(*this);
                loader.load(parser);
        }
-       catch(const IO::file_not_found &)
-       { }
 }
 
 
@@ -152,12 +143,12 @@ Config::Option::Option(const string &n, const string &v, const string &d):
 
 
 Config::Loader::Loader(Config &c):
-       conf(c)
+       DataFile::ObjectLoader<Config>(c)
 {
        add("option", &Loader::option);
 }
 
 void Config::Loader::option(const string &n, const string &v)
 {
-       conf.set_option(n, v);
+       obj.set_option(n, v);
 }