Path: blob/master/src/common/layered_settings_interface.h
4223 views
// SPDX-FileCopyrightText: 2019-2024 Connor McLaughlin <[email protected]>1// SPDX-License-Identifier: CC-BY-NC-ND-4.023#pragma once4#include "settings_interface.h"5#include <array>67class LayeredSettingsInterface final : public SettingsInterface8{9public:10enum Layer : u3211{12LAYER_GAME,13LAYER_INPUT,14LAYER_BASE,15NUM_LAYERS16};1718LayeredSettingsInterface();19~LayeredSettingsInterface() override;2021SettingsInterface* GetLayer(Layer layer) const { return m_layers[layer]; }22void SetLayer(Layer layer, SettingsInterface* sif) { m_layers[layer] = sif; }2324bool IsEmpty() override;2526bool GetIntValue(const char* section, const char* key, s32* value) const override;27bool GetUIntValue(const char* section, const char* key, u32* value) const override;28bool GetFloatValue(const char* section, const char* key, float* value) const override;29bool GetDoubleValue(const char* section, const char* key, double* value) const override;30bool GetBoolValue(const char* section, const char* key, bool* value) const override;31bool GetStringValue(const char* section, const char* key, std::string* value) const override;32bool GetStringValue(const char* section, const char* key, SmallStringBase* value) const override;3334void SetIntValue(const char* section, const char* key, s32 value) override;35void SetUIntValue(const char* section, const char* key, u32 value) override;36void SetFloatValue(const char* section, const char* key, float value) override;37void SetDoubleValue(const char* section, const char* key, double value) override;38void SetBoolValue(const char* section, const char* key, bool value) override;39void SetStringValue(const char* section, const char* key, const char* value) override;40bool ContainsValue(const char* section, const char* key) const override;41void DeleteValue(const char* section, const char* key) override;42void ClearSection(const char* section) override;43void RemoveSection(const char* section) override;44void RemoveEmptySections() override;4546std::vector<std::string> GetStringList(const char* section, const char* key) const override;47void SetStringList(const char* section, const char* key, const std::vector<std::string>& items) override;48bool RemoveFromStringList(const char* section, const char* key, const char* item) override;49bool AddToStringList(const char* section, const char* key, const char* item) override;5051std::vector<std::pair<std::string, std::string>> GetKeyValueList(const char* section) const override;52void SetKeyValueList(const char* section, const std::vector<std::pair<std::string, std::string>>& items) override;5354// default parameter overloads55using SettingsInterface::GetBoolValue;56using SettingsInterface::GetDoubleValue;57using SettingsInterface::GetFloatValue;58using SettingsInterface::GetIntValue;59using SettingsInterface::GetStringValue;60using SettingsInterface::GetUIntValue;6162private:63static constexpr Layer FIRST_LAYER = LAYER_GAME;64static constexpr Layer LAST_LAYER = LAYER_BASE;6566std::array<SettingsInterface*, NUM_LAYERS> m_layers{};67};6869