aboutsummaryrefslogtreecommitdiff
path: root/src/libutil
diff options
context:
space:
mode:
Diffstat (limited to 'src/libutil')
-rw-r--r--src/libutil/config.cc15
-rw-r--r--src/libutil/config.hh8
2 files changed, 15 insertions, 8 deletions
diff --git a/src/libutil/config.cc b/src/libutil/config.cc
index 9023cb1bb..7551d97d1 100644
--- a/src/libutil/config.cc
+++ b/src/libutil/config.cc
@@ -154,6 +154,11 @@ AbstractSetting::AbstractSetting(
{
}
+void AbstractSetting::setDefault(const std::string & str)
+{
+ if (!overriden) set(str);
+}
+
void AbstractSetting::toJSON(JSONPlaceholder & out)
{
out.write(to_string());
@@ -185,7 +190,7 @@ template<> void BaseSetting<std::string>::set(const std::string & str)
value = str;
}
-template<> std::string BaseSetting<std::string>::to_string()
+template<> std::string BaseSetting<std::string>::to_string() const
{
return value;
}
@@ -199,7 +204,7 @@ void BaseSetting<T>::set(const std::string & str)
}
template<typename T>
-std::string BaseSetting<T>::to_string()
+std::string BaseSetting<T>::to_string() const
{
static_assert(std::is_integral<T>::value, "Integer required.");
return std::to_string(value);
@@ -215,7 +220,7 @@ template<> void BaseSetting<bool>::set(const std::string & str)
throw UsageError("Boolean setting '%s' has invalid value '%s'", name, str);
}
-template<> std::string BaseSetting<bool>::to_string()
+template<> std::string BaseSetting<bool>::to_string() const
{
return value ? "true" : "false";
}
@@ -239,7 +244,7 @@ template<> void BaseSetting<Strings>::set(const std::string & str)
value = tokenizeString<Strings>(str);
}
-template<> std::string BaseSetting<Strings>::to_string()
+template<> std::string BaseSetting<Strings>::to_string() const
{
return concatStringsSep(" ", value);
}
@@ -256,7 +261,7 @@ template<> void BaseSetting<StringSet>::set(const std::string & str)
value = tokenizeString<StringSet>(str);
}
-template<> std::string BaseSetting<StringSet>::to_string()
+template<> std::string BaseSetting<StringSet>::to_string() const
{
return concatStringsSep(" ", value);
}
diff --git a/src/libutil/config.hh b/src/libutil/config.hh
index d86c65ff0..7ea78fdaf 100644
--- a/src/libutil/config.hh
+++ b/src/libutil/config.hh
@@ -115,6 +115,8 @@ public:
bool overriden = false;
+ void setDefault(const std::string & str);
+
protected:
AbstractSetting(
@@ -131,13 +133,13 @@ protected:
virtual void set(const std::string & value) = 0;
- virtual std::string to_string() = 0;
+ virtual std::string to_string() const = 0;
virtual void toJSON(JSONPlaceholder & out);
virtual void convertToArg(Args & args, const std::string & category);
- bool isOverriden() { return overriden; }
+ bool isOverriden() const { return overriden; }
};
/* A setting of type T. */
@@ -174,7 +176,7 @@ public:
value = v;
}
- std::string to_string() override;
+ std::string to_string() const override;
void convertToArg(Args & args, const std::string & category) override;