Tramway SDK
settings.h
Go to the documentation of this file.
1// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime
2
3#ifndef TRAM_SDK_FRAMEWORK_SETTINGS_H
4#define TRAM_SDK_FRAMEWORK_SETTINGS_H
5
6#include <framework/value.h>
7
8#include <initializer_list>
9#include <vector>
10
11namespace tram::Settings {
12
13enum : uint32_t {
14 USER = 1, //< Save the setting in user data
15 APPLICATION = 2, //< Save the setting in application state data
16 MENU = 4, //< Show the setting in the setting menu
17
18 // maybe we could add some read-only or write-only flags?
19
20 NONE = 0
21};
22
23void Register(bool& value, const char* name, uint32_t flags);
24void Register(float& value, const char* name, uint32_t flags);
25void Register(int32_t& value, const char* name, uint32_t flags);
26void Register(uint32_t& value, const char* name, uint32_t flags);
27
28Value Get(name_t name);
29void Set(name_t name, Value value);
30
31void Parse(const char** argv, int argc);
32
33void Save(const char* file);
34void Load(const char* file);
35
36uint32_t Flags(name_t name);
37
38std::vector<name_t> GetSettings(uint32_t filter);
39
40template<typename T>
41struct Property {
42 Property(std::initializer_list<value_t> values) {
43 value = values.begin()[0];
44
45 const char* name = values.begin()[1];
46 uint32_t flags = values.begin()[2];
47
48 Register(value, name, flags);
49 }
50
51 Property(const bool& value) {
52 this->value = value;
53 }
54
55 /*T& operator=(const Setting<T>& other) {
56 this->value = other;
57 return *this;
58 }*/
59
60 operator T() {
61 return value;
62 }
63
65};
66
67}
68
69#endif // TRAM_SDK_FRAMEWORK_SETTINGS_H
Generic, type-safe union.
Definition: value.h:18
Application setting management and CLI command parser.
@ MENU
Definition: settings.h:16
@ APPLICATION
Definition: settings.h:15
@ USER
Definition: settings.h:14
@ NONE
Definition: settings.h:20
void Parse(const char **argv, int argc)
Definition: settings.cpp:178
Value Get(name_t name)
Definition: settings.cpp:114
void Set(name_t name, Value value)
Definition: settings.cpp:148
void Load(const char *file)
Definition: settings.cpp:247
uint32_t Flags(name_t name)
Definition: settings.cpp:233
std::vector< name_t > GetSettings(uint32_t filter)
Definition: settings.cpp:238
void Register(bool &value, const char *name, uint32_t flags)
Definition: settings.cpp:96
void Save(const char *file)
Definition: settings.cpp:243
Definition: settings.h:41
T value
Definition: settings.h:64
Property(std::initializer_list< value_t > values)
Definition: settings.h:42
Property(const bool &value)
Definition: settings.h:51
Interned string type.
Definition: uid.h:10