1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-07-07 01:51:47 +02:00

libutil: Move some non-template implememntations from config.hh to

config.cc
This commit is contained in:
Jacek Galowicz 2023-10-19 18:24:13 +01:00
parent 9bc7b4f463
commit 87c4f4a972
2 changed files with 52 additions and 24 deletions

View file

@ -52,9 +52,7 @@ class AbstractConfig
protected:
StringMap unknownSettings;
AbstractConfig(const StringMap & initials = {})
: unknownSettings(initials)
{ }
AbstractConfig(StringMap initials = {});
public:
@ -163,9 +161,7 @@ private:
public:
Config(const StringMap & initials = {})
: AbstractConfig(initials)
{ }
Config(StringMap initials = {});
bool set(const std::string & name, const std::string & value) override;
@ -206,12 +202,7 @@ protected:
const std::set<std::string> & aliases,
std::optional<ExperimentalFeature> experimentalFeature = std::nullopt);
virtual ~AbstractSetting()
{
// Check against a gcc miscompilation causing our constructor
// not to run (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431).
assert(created == 123);
}
virtual ~AbstractSetting();
virtual void set(const std::string & value, bool append = false) = 0;
@ -229,7 +220,7 @@ protected:
virtual void convertToArg(Args & args, const std::string & category);
bool isOverridden() const { return overridden; }
bool isOverridden() const;
};
/**
@ -365,11 +356,7 @@ public:
const Path & def,
const std::string & name,
const std::string & description,
const std::set<std::string> & aliases = {})
: BaseSetting<Path>(def, true, name, description, aliases)
{
options->addSetting(this);
}
const std::set<std::string> & aliases = {});
Path parse(const std::string & str) const override;
@ -391,15 +378,11 @@ public:
const std::optional<Path> & def,
const std::string & name,
const std::string & description,
const std::set<std::string> & aliases = {})
: BaseSetting<std::optional<Path>>(def, true, name, description, aliases)
{
options->addSetting(this);
}
const std::set<std::string> & aliases = {});
std::optional<Path> parse(const std::string & str) const override;
void operator =(const std::optional<Path> & v) { this->assign(v); }
void operator =(const std::optional<Path> & v);
};
struct GlobalConfig : public AbstractConfig