Elaztek Developer Hub
Blamite Game Engine - Strings  00326.06.27.21.0407.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 
21 #define EDITOR_CONFIG_DEFAULT_NAME "editor_common.cfg"
22 
23 #define CONFIG_DUMMY_SECTION_NAME "#___default"
24 
29 {
30  String,
31  Boolean,
32  Float,
33  Int,
34  Color,
35  Comment,
36  Invalid
37 };
38 
43 {
44 private:
45  std::string filename = "";
46  std::string comment_delimeter = "";
47  int line_number = 0;
48 
49  std::string value_raw = "";
50 
51  std::string value = "";
52  bool value_bool = false;
53  float value_float = 0.0f;
54  int value_int = 0;
55  BlamColor value_color = BlamColor(255, 255, 255);
56 
57  bool valid = false;
58 public:
59  std::string id = "unspecified";
61 
72  BlamConfigurationSetting(std::string line, int _line_number, std::string _comment_delimeter, std::string _filename);
73 
77  void ParseValue();
78 
84  bool IsValid();
85 
91  std::string* AsString();
92 
99  bool* AsBool();
100 
107  float* AsFloat();
108 
115  int* AsInt();
116 
123  BlamColor* AsColor();
124 
130  std::string ConvertRawValueToString();
131 
135  void UpdateValue(std::string new_value);
136 
140  std::string* GetRawValue();
141 
157  std::string GetDisplayNameString();
158 
174  std::string GetDescriptionString();
175 
181  BlamConfigurationSetting* Copy();
182 
188  std::string CreateConfigFileLine();
189 
200  std::map<std::string, std::string> GetEnumeratorOptions();
201 };
202 
210 {
211 private:
212  std::string filename;
213 
214 public:
215  std::map<std::string, BlamConfigurationSetting*> settings;
216  std::map<std::string, BlamConfigurationSetting*> default_settings;
217  std::string name;
218 
225  BlamConfigurationSection(std::string _name, std::string _filename);
226 
231 
237  void AddNewSetting(BlamConfigurationSetting* new_setting);
238 
244  void AddNewDefaultSetting(BlamConfigurationSetting* new_setting);
245 
253  bool HasOption(std::string option);
254 
263  std::string* GetString(std::string option);
264 
273  bool* GetBool(std::string option);
274 
283  float* GetFloat(std::string option);
284 
293  int* GetInt(std::string option);
294 
303  BlamColor* GetColor(std::string option);
304 
320  std::string GetDisplayNameString();
321 
325  void RestoreDefaultSettings();
326 };
327 
329 {
330 private:
331  bool loaded = false;
332 
336  void ClearSections();
337 
338 public:
339  std::map<std::string, BlamConfigurationSection*> sections;
340 
341  std::string filename = "";
342  std::string defaults_filename = "";
343  std::string comment_delimeter = "";
344 
353  BlamConfigurationFile(std::string _filename, std::string _comment_delimeter);
354 
359 
369  BlamResult LoadDefaults(HMODULE dll_handle, int resource_id, const char* resource_type);
370 
376  BlamResult LoadDefaults(std::string _filename);
377 
383  BlamResult Load();
384 
392  BlamResult Load(std::string _filename);
393 
399  BlamResult Reload();
400 
406  void Save();
407 
413  bool IsLoaded();
414 
418  void AddNewSection(BlamConfigurationSection* section);
419 
427  bool HasConfigurationSection(std::string section_name);
428 
434  BlamConfigurationSection* GetConfigurationSection(std::string section_name);
435 
451  std::string GetDisplayNameString();
452 
456  void RestoreDefaultSettings();
457 };
458 
459 namespace BlamStrings
460 {
464  namespace Settings::Config
465  {
475  STRINGS_API BlamResult LoadConfiguration(std::string filename, std::string comment_delimeter, OUT BlamConfigurationFile** file);
476 
488  STRINGS_API BlamResult LoadConfiguration(std::string filename, std::string comment_delimeter, HMODULE dll_handle, int defaults_resource_id, OUT BlamConfigurationFile** file);
489 
502  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);
503  }
504 }
BlamConfigurationSection
Structure representing a configuration section.
Definition: config.h:209
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:217
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:215
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:42
BlamConfigurationSection::default_settings
std::map< std::string, BlamConfigurationSetting * > default_settings
The list of default settings within this section.
Definition: config.h:216
BlamColor.h
errors.h
BlamConfigurationFile::sections
std::map< std::string, BlamConfigurationSection * > sections
The list of configuration sections contained within the file.
Definition: config.h:339
BlamResult
BlamResult
Enumerator containing any and all result codes used throughout the engine.
Definition: errors.h:9
BlamConfigurationFile
Definition: config.h:328
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:28