X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fconfig.h;h=94997750b26497c4ab83003f41382b78b13104fb;hb=55269a63b0875be0b172453714f9190d30fb1dff;hp=16094e0cb4a4e8ca0263ef34d6b5ac349fdae5e9;hpb=242c55b17e6608b29a77ca17a5b677e202a3ca90;p=builder.git diff --git a/source/config.h b/source/config.h index 16094e0..9499775 100644 --- a/source/config.h +++ b/source/config.h @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of builder -Copyright © 2006-2009 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #ifndef CONFIG_H_ #define CONFIG_H_ @@ -13,7 +6,6 @@ Distributed under the LGPL #include #include #include -#include "misc.h" class SourcePackage; @@ -28,21 +20,19 @@ public: struct Option { std::string name; - std::string defv; - std::string descr; + std::string default_value; + std::string description; std::string value; Option(const std::string &, const std::string &, const std::string &); }; typedef std::map OptionMap; + typedef std::map InputOptions; private: - class Loader: public Msp::DataFile::Loader + class Loader: public Msp::DataFile::ObjectLoader { - private: - Config &conf; - public: Loader(Config &); private: @@ -51,8 +41,9 @@ private: SourcePackage &package; OptionMap options; + InputOptions pending_options; Msp::Time::TimeStamp mtime; - bool freeze_mtime; + bool changed; public: Config(SourcePackage &); @@ -60,36 +51,19 @@ public: /** Adds a configuration option with name, default value and description. */ void add_option(const std::string &, const std::string &, const std::string &); - /** Gets a configuration option by name. */ - const Option &get_option(const std::string &) const; - - const OptionMap &get_options() const { return options; } - const Msp::Time::TimeStamp &get_mtime() const { return mtime; } + bool set_option(const std::string &, const std::string &); /** Checks whether an option exists. */ bool is_option(const std::string &) const; - /** Selects the last profile used. If the profile cache file is not - present, the default profile is assumed. */ - void select_last_profile(); - - /** Selects a profile. The profile cache file is updated, unless doing a - dry run. */ - void select_profile(const std::string &); - - /** 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. Return value indicates whether any options - were changed. */ - bool update(const StringMap &); + /** Gets a configuration option by name. */ + const Option &get_option(const std::string &) const; - /** Expands any variable references in options. */ - void finish(); + const OptionMap &get_options() const { return options; } + const Msp::Time::TimeStamp &get_mtime() const { return mtime; } - void save() const; -private: - bool set_option(const std::string &, const std::string &); void load(); + void save() const; }; #endif