X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fconfig.h;h=ba8416b923a24128416623c22e08377facf5b220;hb=451ef4f33b5a57dcb56bd7cb671bed359ac86247;hp=91a6ef07e7c7e75845994b361ab2f2d0c3cd493d;hpb=69cdee2c53972c1dd7e1b9d83ddcd8f6c3c589f7;p=builder.git diff --git a/source/config.h b/source/config.h index 91a6ef0..ba8416b 100644 --- a/source/config.h +++ b/source/config.h @@ -6,7 +6,7 @@ #include #include #include -#include "misc.h" +#include "feature.h" class SourcePackage; @@ -18,18 +18,14 @@ class Config { public: /** A single configuration option. */ - struct Option + struct Option: public Feature { - std::string name; - std::string default_value; - std::string description; std::string value; - Option(const std::string &, const std::string &, const std::string &); + Option(const Feature &); }; - typedef std::map OptionMap; - typedef std::map InputOptions; + using InputOptions = std::map; private: class Loader: public Msp::DataFile::ObjectLoader @@ -41,29 +37,30 @@ private: }; SourcePackage &package; - OptionMap options; + std::map options; InputOptions pending_options; Msp::Time::TimeStamp mtime; - bool changed; + mutable bool changed = false; public: - Config(SourcePackage &); + Config(SourcePackage &p): package(p) { } - /** Adds a configuration option with name, default value and description. */ - void add_option(const std::string &, const std::string &, const std::string &); + /** Adds a configuration option based on a feature. */ + const Option &add_option(const Feature &); + + bool set_option(const std::string &, const std::string &); + + /** Checks whether an option exists. */ + bool is_option(const std::string &) const; /** Gets a configuration option by name. */ const Option &get_option(const std::string &) const; - const OptionMap &get_options() const { return options; } + const std::map &get_options() const { return options; } const Msp::Time::TimeStamp &get_mtime() const { return mtime; } - /** Checks whether an option exists. */ - bool is_option(const std::string &) const; - - void save() const; - bool set_option(const std::string &, const std::string &); void load(); + void save() const; }; #endif