summaryrefslogtreecommitdiffstats
path: root/src/common/settings_common.h
diff options
context:
space:
mode:
authorlat9nq <22451773+lat9nq@users.noreply.github.com>2023-06-11 05:40:39 +0200
committerlat9nq <22451773+lat9nq@users.noreply.github.com>2023-07-21 16:56:54 +0200
commit04d4b6ab802a1238eaca6c0a16d1a739503b81d9 (patch)
tree2e4c850092b6d6f5f50e3a6a648a217e3c7a283c /src/common/settings_common.h
parentsettings: Remove redundant false literals (diff)
downloadyuzu-04d4b6ab802a1238eaca6c0a16d1a739503b81d9.tar
yuzu-04d4b6ab802a1238eaca6c0a16d1a739503b81d9.tar.gz
yuzu-04d4b6ab802a1238eaca6c0a16d1a739503b81d9.tar.bz2
yuzu-04d4b6ab802a1238eaca6c0a16d1a739503b81d9.tar.lz
yuzu-04d4b6ab802a1238eaca6c0a16d1a739503b81d9.tar.xz
yuzu-04d4b6ab802a1238eaca6c0a16d1a739503b81d9.tar.zst
yuzu-04d4b6ab802a1238eaca6c0a16d1a739503b81d9.zip
Diffstat (limited to '')
-rw-r--r--src/common/settings_common.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/common/settings_common.h b/src/common/settings_common.h
new file mode 100644
index 000000000..93fddeba6
--- /dev/null
+++ b/src/common/settings_common.h
@@ -0,0 +1,78 @@
+#pragma once
+
+#include <forward_list>
+#include <functional>
+#include <map>
+#include <string>
+#include <typeindex>
+#include "common/common_types.h"
+
+namespace Settings {
+
+enum class Category : u32 {
+ Audio,
+ Core,
+ Cpu,
+ CpuDebug,
+ CpuUnsafe,
+ Renderer,
+ RendererAdvanced,
+ RendererDebug,
+ System,
+ SystemAudio,
+ DataStorage,
+ Debugging,
+ DebuggingGraphics,
+ Miscellaneous,
+ Network,
+ WebService,
+ AddOns,
+ Controls,
+ Ui,
+ UiGeneral,
+ UiLayout,
+ UiGameList,
+ Screenshots,
+ Shortcuts,
+ Multiplayer,
+ Services,
+ Paths,
+ MaxEnum,
+};
+
+class BasicSetting {
+protected:
+ explicit BasicSetting() = default;
+
+public:
+ virtual ~BasicSetting() = default;
+
+ virtual Category Category() const = 0;
+ virtual constexpr bool Switchable() const = 0;
+ virtual std::string ToString() const = 0;
+ virtual std::string ToStringGlobal() const;
+ virtual void LoadString(const std::string& load) = 0;
+ virtual std::string Canonicalize() const = 0;
+ virtual const std::string& GetLabel() const = 0;
+ virtual std::string DefaultToString() const = 0;
+ virtual bool Save() const = 0;
+ virtual std::type_index TypeId() const = 0;
+ virtual constexpr bool IsEnum() const = 0;
+ virtual bool RuntimeModfiable() const = 0;
+ virtual void SetGlobal(bool global) {}
+ virtual constexpr u32 Id() const = 0;
+ virtual std::string MinVal() const = 0;
+ virtual std::string MaxVal() const = 0;
+ virtual bool UsingGlobal() const;
+};
+
+class Linkage {
+public:
+ explicit Linkage(u32 initial_count = 0);
+ ~Linkage();
+ std::map<Category, std::forward_list<BasicSetting*>> by_category{};
+ std::vector<std::function<void()>> restore_functions{};
+ u32 count;
+};
+
+} // namespace Settings