X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fconfig.h;h=94997750b26497c4ab83003f41382b78b13104fb;hb=aa8d09ccd31c59c6499cf624520c20e5684da7ee;hp=2767f8263a827a67693ee18376d605e842077530;hpb=57bdb055acb0453c75b22cb64f35cc0e817a2827;p=builder.git diff --git a/source/config.h b/source/config.h index 2767f82..9499775 100644 --- a/source/config.h +++ b/source/config.h @@ -3,11 +3,11 @@ #include #include -#include -#include +#include +#include #include -typedef std::map RawOptionMap; +class SourcePackage; /** Manages configuration for a package. A configuration may have an arbitary @@ -16,47 +16,54 @@ amount of options, as well as a modification time (mtime). class Config { public: - /** - A single configuration option. - */ + /** A single configuration option. */ 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; - void add_option(const std::string &, const std::string &, const std::string &); - 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 is_option(const std::string &) const; - void select_last_profile(); - void select_profile(const std::string &); - bool update(const RawOptionMap &); - void set_source(const Msp::Path::Path &s) { source=s; } - void save() const; private: - class Loader: public Msp::Parser::Loader + class Loader: public Msp::DataFile::ObjectLoader { public: Loader(Config &); private: - Config &conf; - void option(const std::string &, const std::string &); }; - - Msp::Path::Path source; - OptionMap options; + + SourcePackage &package; + OptionMap options; + InputOptions pending_options; Msp::Time::TimeStamp mtime; + bool changed; + +public: + Config(SourcePackage &); + + /** Adds a configuration option with name, default value and description. */ + void add_option(const std::string &, const std::string &, const std::string &); 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 Msp::Time::TimeStamp &get_mtime() const { return mtime; } + void load(); + void save() const; }; #endif