Elaztek Developer Hub
Blamite Game Engine - Strings  00307.01.26.21.0804.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 
20 {
21  String,
22  Boolean,
23  Float,
24  Int,
25  Color,
26  Comment
27 };
28 
33 {
34 private:
35  std::string filename;
36 
37  std::string value_raw;
38 
39  std::string value;
40  bool value_bool;
41  float value_float;
42  int value_int;
43  BlamColor value_color;
44 
45  bool valid;
46 
50  void ParseValue();
51 public:
52  std::string id;
54 
64  BlamConfigurationSetting(std::string line, int line_number, std::string comment_delimeter, std::string _filename);
65 
71  bool IsValid();
72 
78  std::string* AsString();
79 
86  bool* AsBool();
87 
94  float* AsFloat();
95 
102  int* AsInt();
103 
110  BlamColor* AsColor();
111 
117  std::string ConvertRawValueToString();
118 
122  void UpdateValue(std::string new_value);
123 
127  std::string* GetRawValue();
128 };
129 
137 {
138 private:
139  std::string filename;
140 
141 public:
142  std::map<std::string, BlamConfigurationSetting*> settings;
143  std::map<std::string, BlamConfigurationSetting*> default_settings;
144  std::string name;
145 
152  BlamConfigurationSection(std::string _name, std::string _filename);
153 
159  void AddNewSetting(BlamConfigurationSetting* new_setting);
160 
166  void AddNewDefaultSetting(BlamConfigurationSetting* new_setting);
167 
175  bool HasOption(std::string option);
176 
185  std::string* GetString(std::string option);
186 
195  bool* GetBool(std::string option);
196 
205  float* GetFloat(std::string option);
206 
215  int* GetInt(std::string option);
216 
225  BlamColor* GetColor(std::string option);
226 };
227 
229 {
230 private:
231  bool loaded = false;
232 
233 public:
234  std::map<std::string, BlamConfigurationSection*> sections;
235 
236  std::string filename = "";
237  std::string comment_delimeter = "";
238 
245  BlamConfigurationFile(std::string _filename, std::string _comment_delimeter);
246 
254  BlamResult LoadDefaults(HMODULE dll_handle, int resource_id, const char* resource_type);
255 
261  BlamResult Load();
262 
268  BlamResult Reload();
269 
275  void Save();
276 
282  bool IsLoaded();
283 
287  void AddNewSection(BlamConfigurationSection* section);
288 
296  bool HasConfigurationSection(std::string section_name);
297 
303  BlamConfigurationSection* GetConfigurationSection(std::string section_name);
304 };
305 
306 namespace BlamStrings
307 {
311  namespace Settings::Config
312  {
322  STRINGS_API BlamResult LoadConfiguration(std::string filename, std::string comment_delimeter, OUT BlamConfigurationFile** file);
323 
335  STRINGS_API BlamResult LoadConfiguration(std::string filename, std::string comment_delimeter, HMODULE dll_handle, int defaults_resource_id, OUT BlamConfigurationFile** file);
336 
349  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);
350  }
351 }
BlamConfigurationSection
Structure representing a configuration section.
Definition: config.h:136
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:144
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:142
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:32
BlamConfigurationSection::default_settings
std::map< std::string, BlamConfigurationSetting * > default_settings
The list of default settings within this section.
Definition: config.h:143
BlamColor.h
errors.h
BlamConfigurationFile::sections
std::map< std::string, BlamConfigurationSection * > sections
The list of configuration sections contained within the file.
Definition: config.h:234
BlamResult
BlamResult
Enumerator containing any and all result codes used throughout the engine.
Definition: errors.h:9
BlamConfigurationFile
Definition: config.h:228
dll_handle
HMODULE dll_handle
Handle of strings.dll.
Definition: main.cpp:11
BlamConfigurationSetting::type
BlamConfigurationSettingType type
The type of setting that's being stored.
Definition: config.h:53
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:52
BlamColor
Class representing a color.
Definition: BlamColor.h:16
BlamConfigurationSettingType::Int
@ Int
Indicates the setting stores an integer.
BlamConfigurationSettingType
BlamConfigurationSettingType
Enumerator defining all possible configuration setting types.
Definition: config.h:19