Elaztek Developer Hub
Blamite Game Engine - Strings  00321.06.22.21.0037.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 #define CONFIG_DUMMY_SECTION_NAME "#___default"
19 
24 {
25  String,
26  Boolean,
27  Float,
28  Int,
29  Color,
30  Comment,
31  Invalid
32 };
33 
38 {
39 private:
40  std::string filename = "";
41  std::string comment_delimeter = "";
42  int line_number = 0;
43 
44  std::string value_raw = "";
45 
46  std::string value = "";
47  bool value_bool = false;
48  float value_float = 0.0f;
49  int value_int = 0;
50  BlamColor value_color = BlamColor(255, 255, 255);
51 
52  bool valid = false;
53 public:
54  std::string id = "unspecified";
56 
67  BlamConfigurationSetting(std::string line, int _line_number, std::string _comment_delimeter, std::string _filename);
68 
72  void ParseValue();
73 
79  bool IsValid();
80 
86  std::string* AsString();
87 
94  bool* AsBool();
95 
102  float* AsFloat();
103 
110  int* AsInt();
111 
118  BlamColor* AsColor();
119 
125  std::string ConvertRawValueToString();
126 
130  void UpdateValue(std::string new_value);
131 
135  std::string* GetRawValue();
136 
152  std::string GetDisplayNameString();
153 
169  std::string GetDescriptionString();
170 
176  BlamConfigurationSetting* Copy();
177 
183  std::string CreateConfigFileLine();
184 };
185 
193 {
194 private:
195  std::string filename;
196 
197 public:
198  std::map<std::string, BlamConfigurationSetting*> settings;
199  std::map<std::string, BlamConfigurationSetting*> default_settings;
200  std::string name;
201 
208  BlamConfigurationSection(std::string _name, std::string _filename);
209 
215  void AddNewSetting(BlamConfigurationSetting* new_setting);
216 
222  void AddNewDefaultSetting(BlamConfigurationSetting* new_setting);
223 
231  bool HasOption(std::string option);
232 
241  std::string* GetString(std::string option);
242 
251  bool* GetBool(std::string option);
252 
261  float* GetFloat(std::string option);
262 
271  int* GetInt(std::string option);
272 
281  BlamColor* GetColor(std::string option);
282 
298  std::string GetDisplayNameString();
299 };
300 
302 {
303 private:
304  bool loaded = false;
305 
306 public:
307  std::map<std::string, BlamConfigurationSection*> sections;
308 
309  std::string filename = "";
310  std::string comment_delimeter = "";
311 
318  BlamConfigurationFile(std::string _filename, std::string _comment_delimeter);
319 
329  BlamResult LoadDefaults(HMODULE dll_handle, int resource_id, const char* resource_type);
330 
336  BlamResult LoadDefaults(std::string _filename);
337 
343  BlamResult Load();
344 
352  BlamResult Load(std::string _filename);
353 
359  BlamResult Reload();
360 
366  void Save();
367 
373  bool IsLoaded();
374 
378  void AddNewSection(BlamConfigurationSection* section);
379 
387  bool HasConfigurationSection(std::string section_name);
388 
394  BlamConfigurationSection* GetConfigurationSection(std::string section_name);
395 
411  std::string GetDisplayNameString();
412 };
413 
414 namespace BlamStrings
415 {
419  namespace Settings::Config
420  {
430  STRINGS_API BlamResult LoadConfiguration(std::string filename, std::string comment_delimeter, OUT BlamConfigurationFile** file);
431 
443  STRINGS_API BlamResult LoadConfiguration(std::string filename, std::string comment_delimeter, HMODULE dll_handle, int defaults_resource_id, OUT BlamConfigurationFile** file);
444 
457  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);
458  }
459 }
BlamConfigurationSection
Structure representing a configuration section.
Definition: config.h:192
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:200
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:198
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:37
BlamConfigurationSection::default_settings
std::map< std::string, BlamConfigurationSetting * > default_settings
The list of default settings within this section.
Definition: config.h:199
BlamColor.h
errors.h
BlamConfigurationFile::sections
std::map< std::string, BlamConfigurationSection * > sections
The list of configuration sections contained within the file.
Definition: config.h:307
BlamResult
BlamResult
Enumerator containing any and all result codes used throughout the engine.
Definition: errors.h:9
BlamConfigurationFile
Definition: config.h:301
dll_handle
HMODULE dll_handle
Handle for Strings.dll.
Definition: main.cpp:12
BlamConfigurationSettingType::Invalid
@ Invalid
Indicates the setting type was invalid.
BlamConfigurationSettingType::String
@ String
Indicates the setting stores a string.
BlamConfigurationSettingType::Float
@ Float
Indicates the setting stores a float.
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:23