duckstation/src/common/memory_settings_interface.h

66 lines
2.9 KiB
C
Raw Normal View History

2024-03-31 05:50:29 +00:00
// SPDX-FileCopyrightText: 2019-2024 Connor McLaughlin <stenzek@gmail.com>
// SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0)
2021-07-23 14:02:09 +00:00
#pragma once
2022-07-09 04:17:57 +00:00
#include "heterogeneous_containers.h"
#include "settings_interface.h"
2021-07-23 14:02:09 +00:00
#include <string>
2022-07-09 04:17:57 +00:00
class MemorySettingsInterface final : public SettingsInterface
2021-07-23 14:02:09 +00:00
{
public:
2023-10-02 11:33:44 +00:00
MemorySettingsInterface();
~MemorySettingsInterface();
2024-03-31 05:50:29 +00:00
bool Save(Error* error = nullptr) override;
2023-10-02 11:33:44 +00:00
void Clear() override;
bool IsEmpty() override;
2023-10-02 11:33:44 +00:00
bool GetIntValue(const char* section, const char* key, s32* value) const override;
bool GetUIntValue(const char* section, const char* key, u32* value) const override;
bool GetFloatValue(const char* section, const char* key, float* value) const override;
bool GetDoubleValue(const char* section, const char* key, double* value) const override;
bool GetBoolValue(const char* section, const char* key, bool* value) const override;
bool GetStringValue(const char* section, const char* key, std::string* value) const override;
bool GetStringValue(const char* section, const char* key, SmallStringBase* value) const override;
2023-10-02 11:33:44 +00:00
void SetIntValue(const char* section, const char* key, s32 value) override;
void SetUIntValue(const char* section, const char* key, u32 value) override;
void SetFloatValue(const char* section, const char* key, float value) override;
void SetDoubleValue(const char* section, const char* key, double value) override;
void SetBoolValue(const char* section, const char* key, bool value) override;
void SetStringValue(const char* section, const char* key, const char* value) override;
std::vector<std::pair<std::string, std::string>> GetKeyValueList(const char* section) const override;
void SetKeyValueList(const char* section, const std::vector<std::pair<std::string, std::string>>& items) override;
bool ContainsValue(const char* section, const char* key) const override;
void DeleteValue(const char* section, const char* key) override;
void ClearSection(const char* section) override;
void RemoveSection(const char* section) override;
2024-04-25 04:59:27 +00:00
void RemoveEmptySections() override;
2023-10-02 11:33:44 +00:00
std::vector<std::string> GetStringList(const char* section, const char* key) const override;
void SetStringList(const char* section, const char* key, const std::vector<std::string>& items) override;
bool RemoveFromStringList(const char* section, const char* key, const char* item) override;
bool AddToStringList(const char* section, const char* key, const char* item) override;
// default parameter overloads
using SettingsInterface::GetBoolValue;
using SettingsInterface::GetDoubleValue;
using SettingsInterface::GetFloatValue;
using SettingsInterface::GetIntValue;
using SettingsInterface::GetStringValue;
using SettingsInterface::GetUIntValue;
2021-07-23 14:02:09 +00:00
private:
2023-10-02 11:33:44 +00:00
using KeyMap = PreferUnorderedStringMultimap<std::string>;
using SectionMap = PreferUnorderedStringMap<KeyMap>;
2022-07-09 04:17:57 +00:00
2023-10-02 11:33:44 +00:00
void SetValue(const char* section, const char* key, std::string value);
2022-07-09 04:17:57 +00:00
2023-10-02 11:33:44 +00:00
SectionMap m_sections;
};