diff options
-rw-r--r-- | src/ConfigData.cxx | 21 | ||||
-rw-r--r-- | src/ConfigData.hxx | 6 |
2 files changed, 27 insertions, 0 deletions
diff --git a/src/ConfigData.cxx b/src/ConfigData.cxx index 395d768f6..9712eef3e 100644 --- a/src/ConfigData.cxx +++ b/src/ConfigData.cxx @@ -29,6 +29,17 @@ #include <string.h> #include <stdlib.h> +int +block_param::GetIntValue() const +{ + char *endptr; + long value2 = strtol(value.c_str(), &endptr, 0); + if (*endptr != 0) + FormatFatalError("Not a valid number in line %i", line); + + return value2; +} + unsigned block_param::GetUnsignedValue() const { @@ -120,6 +131,16 @@ config_param::GetBlockPath(const char *name, Error &error) const return GetBlockPath(name, nullptr, error); } +int +config_param::GetBlockValue(const char *name, int default_value) const +{ + const block_param *bp = GetBlockParam(name); + if (bp == nullptr) + return default_value; + + return bp->GetIntValue(); +} + unsigned config_param::GetBlockValue(const char *name, unsigned default_value) const { diff --git a/src/ConfigData.hxx b/src/ConfigData.hxx index d85228cc3..b41b27420 100644 --- a/src/ConfigData.hxx +++ b/src/ConfigData.hxx @@ -46,6 +46,9 @@ struct block_param { :name(_name), value(_value), line(_line), used(false) {} gcc_pure + int GetIntValue() const; + + gcc_pure unsigned GetUnsignedValue() const; gcc_pure @@ -115,6 +118,9 @@ struct config_param { AllocatedPath GetBlockPath(const char *name, Error &error) const; gcc_pure + int GetBlockValue(const char *name, int default_value) const; + + gcc_pure unsigned GetBlockValue(const char *name, unsigned default_value) const; gcc_pure |