]> git.tdb.fi Git - builder.git/blobdiff - source/config.cpp
Use default member initializers and constructor delegation
[builder.git] / source / config.cpp
index 3e862ecf0b7c221bf0ee4e5a160266da6b6e7356..48864a9fac64f8fb33d7f4143acac3cb1a27c5ba 100644 (file)
@@ -1,4 +1,5 @@
 #include <msp/core/maputils.h>
+#include <msp/datafile/writer.h>
 #include <msp/fs/stat.h>
 #include <msp/fs/utils.h>
 #include <msp/io/file.h>
@@ -12,25 +13,24 @@ using namespace std;
 using namespace Msp;
 
 Config::Config(SourcePackage &p):
-       package(p),
-       changed(false)
+       package(p)
 { }
 
 const Config::Option &Config::add_option(const Feature &f)
 {
        Option opt(f);
-       InputOptions::const_iterator i = pending_options.find(opt.name);
+       auto i = pending_options.find(opt.name);
        if(i!=pending_options.end())
                opt.value = i->second;
 
-       return options.insert(OptionMap::value_type(opt.name, opt)).first->second;
+       return options.insert({ opt.name, opt }).first->second;
 }
 
 bool Config::set_option(const string &opt, const string &val)
 {
        bool result = false;
 
-       OptionMap::iterator i = options.find(opt);
+       auto i = options.find(opt);
        if(i!=options.end())
        {
                if(i->second.value!=val)
@@ -61,7 +61,7 @@ void Config::load()
        FS::Stat stat = FS::stat(fn);
        if(stat)
        {
-               package.get_builder().get_logger().log("files", format("Reading %s", fn));
+               package.get_builder().get_logger().log("files", "Reading %s", fn);
                IO::BufferedFile in(fn.str());
 
                mtime = stat.get_modify_time();
@@ -79,11 +79,12 @@ void Config::save() const
 
        FS::Path fn = package.get_source_directory()/".config";
 
-       package.get_builder().get_logger().log("files", format("Writing %s", fn));
+       package.get_builder().get_logger().log("files", "Writing %s", fn);
        IO::BufferedFile out(fn.str(), IO::M_WRITE);
+       DataFile::Writer writer(out);
 
        for(const auto &kvp: options)
-               IO::print(out, "option \"%s\" \"%s\";\n", kvp.second.name, kvp.second.value);
+               writer.write((DataFile::Statement("option"), kvp.second.name, kvp.second.value));
 
        changed = false;
 }