Merge Core/Config/Config.h into Common/Config/Config.h

Allows code in Common to take advantage of the layered config logic.
This commit is contained in:
Michael Maltese
2017-07-09 16:17:36 -07:00
parent dcb4386008
commit 8b54ac225b
18 changed files with 117 additions and 151 deletions

View File

@ -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;
}
}