Elaztek Developer Hub
Blamite Game Engine - Strings  00379.04.17.23.2049.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 = "";
50  bool value_bool = false;
51  float value_float = 0.0f;
52  int value_int = 0;
53  BlamColor value_color = BlamColor(255, 255, 255);
54 
55  bool valid = false;
56 public:
57  std::string id = "unspecified";
59 
70  BlamConfigurationSetting(std::string line, int _line_number, std::string _comment_delimeter, std::string _filename);
71 
75  void ParseValue();
76 
82  bool IsValid();
83 
89  std::string* AsString();
90 
97  bool* AsBool();
98 
105  float* AsFloat();
106 
113  int* AsInt();
114 
121  BlamColor* AsColor();
122 
128  std::string ConvertRawValueToString();
129 
133  void UpdateValue(std::string new_value);
134 
138  std::string* GetRawValue();
139 
155  std::string GetDisplayNameString();
156 
172  std::string GetDescriptionString();
173 
179  BlamConfigurationSetting* Copy();
180 
186  std::string CreateConfigFileLine();
187 
198  std::map<std::string, std::string> GetEnumeratorOptions();
199 };
200 
208 {
209 private:
210  std::string filename;
211 
212 public:
213  std::map<std::string, BlamConfigurationSetting*> settings;
214  std::map<std::string, BlamConfigurationSetting*> default_settings;
215  std::string name;
216 
223  BlamConfigurationSection(std::string _name, std::string _filename);
224 
229 
235  void AddNewSetting(BlamConfigurationSetting* new_setting);
236 
242  void AddNewDefaultSetting(BlamConfigurationSetting* new_setting);
243 
251  bool HasOption(std::string option);
252 
261  std::string* GetString(std::string option);
262 
271  bool* GetBool(std::string option);
272 
281  float* GetFloat(std::string option);
282 
291  int* GetInt(std::string option);
292 
301  BlamColor* GetColor(std::string option);
302 
318  std::string GetDisplayNameString();
319 
323  void RestoreDefaultSettings();
324 };
325 
327 {
328 private:
329  bool loaded = false;
330 
334  void ClearSections();
335 
336 public:
337  std::map<std::string, BlamConfigurationSection*> sections;
338 
339  std::string filename = "";
340  std::string defaults_filename = "";
341  std::string comment_delimeter = "";
342 
351  BlamConfigurationFile(std::string _filename, std::string _comment_delimeter);
352 
357 
363  BlamResult LoadDefaults(std::string _filename);
364 
370  BlamResult Load();
371 
379  BlamResult Load(std::string _filename);
380 
386  BlamResult Reload();
387 
393  void Save();
394 
400  bool IsLoaded();
401 
405  void AddNewSection(BlamConfigurationSection* section);
406 
414  bool HasConfigurationSection(std::string section_name);
415 
421  BlamConfigurationSection* GetConfigurationSection(std::string section_name);
422 
438  std::string GetDisplayNameString();
439 
443  void RestoreDefaultSettings();
444 
454  std::string* GetString(std::string section_name, std::string option);
455 
465  bool* GetBool(std::string section_name, std::string option);
466 
476  float* GetFloat(std::string section_name, std::string option);
477 
487  int* GetInt(std::string section_name, std::string option);
488 
498  BlamColor* GetColor(std::string section_name, std::string option);
499 };
500 
501 namespace BlamStrings
502 {
506  namespace Settings::Config
507  {
517  STRINGS_API BlamResult LoadConfiguration(std::string filename, std::string comment_delimeter, OUT BlamConfigurationFile** file);
518 
528  STRINGS_API BlamResult LoadConfiguration(std::string filename, std::string defaults_filename, std::string comment_delimeter, OUT BlamConfigurationFile** file);
529  }
530 }
BlamConfigurationSection
Structure representing a configuration section.
Definition: config.h:207
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:6
BlamConfigurationSection::name
std::string name
The name of this configuration section.
Definition: config.h:215
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:213
BlamStrings
Namespace for Blamite's shared C++ library.
Definition: events.h:172
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:214
BlamColor.h
errors.h
BlamConfigurationFile::sections
std::map< std::string, BlamConfigurationSection * > sections
The list of configuration sections contained within the file.
Definition: config.h:337
BlamResult
BlamResult
Enumerator containing any and all result codes used throughout the engine.
Definition: errors.h:9
BlamConfigurationFile
Definition: config.h:326
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:19
BlamConfigurationSettingType::Int
@ Int
Indicates the setting stores an integer.
BlamConfigurationSettingType
BlamConfigurationSettingType
Enumerator defining all possible configuration setting types.
Definition: config.h:28