Elaztek Developer Hub
Blamite Game Engine - Strings  00320.06.19.21.0310.blamite
A library containing general purpose utilities and classes for use in multiple projects.
config.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <map>
4 #include <string>
5 #include <Windows.h>
6 
9 
10 #ifdef STRINGS_EXPORTS
11 #define STRINGS_API __declspec(dllexport)
12 #else
13 #define STRINGS_API __declspec(dllimport)
14 #endif
15 
16 #define EDITOR_CONFIG_DEFAULT_NAME "editor_common.cfg"
17 
18 
22 {
23  String,
24  Boolean,
25  Float,
26  Int,
27  Color,
28  Comment
29 };
30 
35 {
36 private:
37  std::string filename;
38 
39  std::string value_raw;
40 
41  std::string value;
42  bool value_bool;
43  float value_float;
44  int value_int;
45  BlamColor value_color;
46 
47  bool valid;
48 
52  void ParseValue();
53 public:
54  std::string id;
56 
66  BlamConfigurationSetting(std::string line, int line_number, std::string comment_delimeter, std::string _filename);
67 
73  bool IsValid();
74 
80  std::string* AsString();
81 
88  bool* AsBool();
89 
96  float* AsFloat();
97 
104  int* AsInt();
105 
112  BlamColor* AsColor();
113 
119  std::string ConvertRawValueToString();
120 
124  void UpdateValue(std::string new_value);
125 
129  std::string* GetRawValue();
130 };
131 
139 {
140 private:
141  std::string filename;
142 
143 public:
144  std::map<std::string, BlamConfigurationSetting*> settings;
145  std::map<std::string, BlamConfigurationSetting*> default_settings;
146  std::string name;
147 
154  BlamConfigurationSection(std::string _name, std::string _filename);
155 
161  void AddNewSetting(BlamConfigurationSetting* new_setting);
162 
168  void AddNewDefaultSetting(BlamConfigurationSetting* new_setting);
169 
177  bool HasOption(std::string option);
178 
187  std::string* GetString(std::string option);
188 
197  bool* GetBool(std::string option);
198 
207  float* GetFloat(std::string option);
208 
217  int* GetInt(std::string option);
218 
227  BlamColor* GetColor(std::string option);
228 };
229 
231 {
232 private:
233  bool loaded = false;
234 
235 public:
236  std::map<std::string, BlamConfigurationSection*> sections;
237 
238  std::string filename = "";
239  std::string comment_delimeter = "";
240 
247  BlamConfigurationFile(std::string _filename, std::string _comment_delimeter);
248 
258  BlamResult LoadDefaults(HMODULE dll_handle, int resource_id, const char* resource_type);
259 
265  BlamResult LoadDefaults(std::string _filename);
266 
272  BlamResult Load();
273 
281  BlamResult Load(std::string _filename);
282 
288  BlamResult Reload();
289 
295  void Save();
296 
302  bool IsLoaded();
303 
307  void AddNewSection(BlamConfigurationSection* section);
308 
316  bool HasConfigurationSection(std::string section_name);
317 
323  BlamConfigurationSection* GetConfigurationSection(std::string section_name);
324 };
325 
326 namespace BlamStrings
327 {
331  namespace Settings::Config
332  {
342  STRINGS_API BlamResult LoadConfiguration(std::string filename, std::string comment_delimeter, OUT BlamConfigurationFile** file);
343 
355  STRINGS_API BlamResult LoadConfiguration(std::string filename, std::string comment_delimeter, HMODULE dll_handle, int defaults_resource_id, OUT BlamConfigurationFile** file);
356 
369  STRINGS_API BlamResult LoadConfiguration(std::string filename, std::string comment_delimeter, HMODULE dll_handle, int defaults_resource_id, std::string defaults_resource_type, OUT BlamConfigurationFile** file);
370  }
371 }
BlamConfigurationSection
Structure representing a configuration section.
Definition: config.h:138
BlamStrings::Settings::Config::LoadConfiguration
STRINGS_API BlamResult LoadConfiguration(std::string filename, std::string comment_delimeter, OUT BlamConfigurationFile **file)
Loads a new configuration file from disk.
Definition: config.cpp:5
BlamConfigurationSection::name
std::string name
The name of this configuration section.
Definition: config.h:146
BlamConfigurationSettingType::Comment
@ Comment
Used to indicate a comment within the file.
BlamConfigurationSection::settings
std::map< std::string, BlamConfigurationSetting * > settings
The list of configuration settings within this section.
Definition: config.h:144
BlamStrings
Namespace for Blamite's shared C++ library.
Definition: hooks.h:22
BlamConfigurationSettingType::Boolean
@ Boolean
Indicates the setting stores a bool.
STRINGS_API
#define STRINGS_API
Definition: config.h:13
BlamConfigurationSettingType::Color
@ Color
Indicates the setting stores a color.
BlamConfigurationSetting
Class representing a configuration setting.
Definition: config.h:34
BlamConfigurationSection::default_settings
std::map< std::string, BlamConfigurationSetting * > default_settings
The list of default settings within this section.
Definition: config.h:145
BlamColor.h
errors.h
BlamConfigurationFile::sections
std::map< std::string, BlamConfigurationSection * > sections
The list of configuration sections contained within the file.
Definition: config.h:236
BlamResult
BlamResult
Enumerator containing any and all result codes used throughout the engine.
Definition: errors.h:9
BlamConfigurationFile
Definition: config.h:230
dll_handle
HMODULE dll_handle
Handle for Strings.dll.
Definition: main.cpp:12
BlamConfigurationSetting::type
BlamConfigurationSettingType type
The type of setting that's being stored.
Definition: config.h:55
BlamConfigurationSettingType::String
@ String
Indicates the setting stores a string.
BlamConfigurationSettingType::Float
@ Float
Indicates the setting stores a float.
BlamConfigurationSetting::id
std::string id
The name of the setting.
Definition: config.h:54
BlamColor
Class representing a color.
Definition: BlamColor.h:18
BlamConfigurationSettingType::Int
@ Int
Indicates the setting stores an integer.
BlamConfigurationSettingType
BlamConfigurationSettingType
Enumerator defining all possible configuration setting types.
Definition: config.h:21