diff options
-rw-r--r-- | src/config/config.cpp | 17 | ||||
-rw-r--r-- | src/config/config.hpp | 5 |
2 files changed, 19 insertions, 3 deletions
diff --git a/src/config/config.cpp b/src/config/config.cpp index 412b170..2f64b9e 100644 --- a/src/config/config.cpp +++ b/src/config/config.cpp @@ -1,10 +1,12 @@ #include <config/config.hpp> #include <utils/tolower.hpp> +#include <utils/split.hpp> -#include <iostream> -#include <cstring> - +#include <algorithm> #include <cstdlib> +#include <cstring> +#include <iostream> +#include <vector> using namespace std::string_literals; @@ -40,6 +42,15 @@ int Config::get_int(const std::string& option, const int& def) return def; } +bool Config::is_in_list(const std::string& option, const std::string& value) +{ + std::string res = Config::get(option, ""); + if (res.empty()) + return false; + std::vector<std::string> list = utils::split(res, ':'); + return std::find(list.cbegin(), list.cend(), value) != list.cend(); +} + void Config::set(const std::string& option, const std::string& value, bool save) { Config::values[option] = value; diff --git a/src/config/config.hpp b/src/config/config.hpp index c5ef15d..9c28e8c 100644 --- a/src/config/config.hpp +++ b/src/config/config.hpp @@ -46,6 +46,11 @@ public: static int get_int(const std::string&, const int&); static bool get_bool(const std::string&, const bool); /** + * Returns true if value is present in a colon-separated list, otherwise + * false. + */ + static bool is_in_list(const std::string& option, const std::string& value); + /** * Set a value for the given option. And write all the config * in the file from which it was read if save is true. */ |