Hymn to Beauty
C++ 3D Engine
Settings.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <SimpleIni.h>
4#include <string>
5#include <map>
6
8class Settings {
9 public:
11
15 bool GetBool(const std::string& settingName);
16
18
22 void SetBool(const std::string& settingName, bool value);
23
25
29 long GetLong(const std::string& settingName);
30
32
36 void SetLong(const std::string& settingName, long value);
37
39
43 double GetDouble(const std::string& settingName);
44
46
50 void SetDouble(const std::string& settingName, double value);
51
53
57 std::string GetString(const std::string& settingName);
58
60
64 void SetString(const std::string& settingName, const std::string& value);
65
67 virtual void Save() = 0;
68
69 protected:
71 CSimpleIni ini;
72
74
80 void AddBoolSetting(const std::string& settingName, const std::string& section, const std::string& key, bool defaultValue);
81
83
89 void AddLongSetting(const std::string& settingName, const std::string& section, const std::string& key, long defaultValue);
90
92
98 void AddDoubleSetting(const std::string& settingName, const std::string& section, const std::string& key, double defaultValue);
99
101
107 void AddStringSetting(const std::string& settingName, const std::string& section, const std::string& key, const std::string& defaultValue);
108
109 private:
110 struct BoolSetting {
111 std::string section;
112 std::string key;
113 bool defaultValue;
114 };
115
116 struct LongSetting {
117 std::string section;
118 std::string key;
119 long defaultValue;
120 };
121
122 struct DoubleSetting {
123 std::string section;
124 std::string key;
125 double defaultValue;
126 };
127
128 struct StringSetting {
129 std::string section;
130 std::string key;
131 std::string defaultValue;
132 };
133
134 std::map<std::string, BoolSetting> boolSettings;
135 std::map<std::string, LongSetting> longSettings;
136 std::map<std::string, DoubleSetting> doubleSettings;
137 std::map<std::string, StringSetting> stringSettings;
138};
Handles settings.
Definition: Settings.hpp:8
void SetDouble(const std::string &settingName, double value)
Set a double setting.
Definition: Settings.cpp:35
bool GetBool(const std::string &settingName)
Get a bool setting.
Definition: Settings.cpp:5
void AddDoubleSetting(const std::string &settingName, const std::string &section, const std::string &key, double defaultValue)
Add a double setting.
Definition: Settings.cpp:77
void AddBoolSetting(const std::string &settingName, const std::string &section, const std::string &key, bool defaultValue)
Add a bool setting.
Definition: Settings.cpp:53
void SetString(const std::string &settingName, const std::string &value)
Set a string setting.
Definition: Settings.cpp:47
long GetLong(const std::string &settingName)
Get a long setting.
Definition: Settings.cpp:17
void AddLongSetting(const std::string &settingName, const std::string &section, const std::string &key, long defaultValue)
Add a long setting.
Definition: Settings.cpp:65
void SetBool(const std::string &settingName, bool value)
Set a bool setting.
Definition: Settings.cpp:11
CSimpleIni ini
Ini file.
Definition: Settings.hpp:71
std::string GetString(const std::string &settingName)
Get a string setting.
Definition: Settings.cpp:41
double GetDouble(const std::string &settingName)
Get a double setting.
Definition: Settings.cpp:29
void AddStringSetting(const std::string &settingName, const std::string &section, const std::string &key, const std::string &defaultValue)
Add a string setting.
Definition: Settings.cpp:89
void SetLong(const std::string &settingName, long value)
Set a long setting.
Definition: Settings.cpp:23
virtual void Save()=0
Save the settings to an INI file.