diff options
Diffstat (limited to 'Source/Core/Common/Config/Config.cpp')
| -rw-r--r-- | Source/Core/Common/Config/Config.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/Source/Core/Common/Config/Config.cpp b/Source/Core/Common/Config/Config.cpp index 27f0389ea8..285db95f28 100644 --- a/Source/Core/Common/Config/Config.cpp +++ b/Source/Core/Common/Config/Config.cpp @@ -5,6 +5,7 @@ #include <algorithm> #include <list> #include <map> +#include <tuple> #include "Common/Assert.h" #include "Common/Config/Config.h" @@ -144,4 +145,34 @@ const std::string& GetLayerName(LayerType layer) }; return layer_to_name.at(layer); } + +bool ConfigLocation::operator==(const ConfigLocation& other) const +{ + return std::tie(system, section, key) == std::tie(other.system, other.section, other.key); +} + +bool ConfigLocation::operator!=(const ConfigLocation& other) const +{ + return !(*this == other); +} + +bool ConfigLocation::operator<(const ConfigLocation& other) const +{ + return std::tie(system, section, key) < std::tie(other.system, other.section, other.key); +} + +LayerType GetActiveLayerForConfig(const ConfigLocation& config) +{ + for (auto layer : SEARCH_ORDER) + { + if (!LayerExists(layer)) + continue; + + if (GetLayer(layer)->Exists(config.system, config.section, config.key)) + return layer; + } + + // If config is not present in any layer, base layer is considered active. + return LayerType::Base; +} } |
