Blamite Game Engine - Blam (Core)
config.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <map>
4 
5 #define CONFIG_VER "1"
6 #define CONFIG_COMMENT_DELIMETER "#"
7 #define CONFIG_DEFAULT_NAME "engine.cfg"
8 #define CONFIG_COLOR_NAME "console_colors.cfg"
9 
10 #define ENGINE_CFG Blam::Config::GetConfig()
11 
12 #ifndef BLAM
13 #define BLAM
14 #endif
15 
16 namespace Blam
17 {
18  //Configuration Functions
19  //BLAM_API std::string GetCfgVal(std::string option);
20 
26  namespace Config
27  {
31  struct ConfigOption
32  {
33  std::string id;
34  std::string value;
35  };
36 
40  class ConfigFile
41  {
42  public:
43  std::string path;
44  std::string filename;
45 
46  std::map<std::string, ConfigOption> options;
47  std::map<std::string, ConfigOption> default_options;
48 
49  //Text types
50 
51  std::string GetString(std::string option);
52  const char* GetCString(std::string option);
53  std::wstring GetWString(std::string option);
54 
55  //Number types
56  float GetFloat(std::string option);
57  int GetInt(std::string option);
58  double GetDouble(std::string option);
59 
60  //Other
61  bool GetBoolean(std::string option);
62 
63  private:
64  ConfigOption* find_config_option(std::string option);
65  ConfigOption* find_config_default_option(std::string option);
66  std::string get_raw_config_value(std::string config_option);
67  };
68 
69  //Config management
70  BLAM int LoadConfig(std::string filename); //Load a custom configuration file
71  BLAM int LoadConfig(std::string filename, bool load_defaults);
72  BLAM int LoadConfig(std::string filename, bool load_defaults, int defaults_resource_id);
73  BLAM int LoadConfig(std::string filename, bool load_defaults, int defaults_resource_id, const char* defaults_res_type);
74  BLAM int LoadConfig(); //Load the default configuration file
75  BLAM ConfigFile* GetConfig(std::string filename); //Get a custom configuration file
76  BLAM ConfigFile* GetConfig(); //Get the default configuration file
77  BLAM void ApplyPlaceholdersToAllConfigFiles(); //Applies placeholders to all config options in all files
78  BLAM void ExpandConfigOptionPlaceholders(); //Expands any config option placeholders in all config files
79  BLAM void InsertConfigFile(ConfigFile config); //Inserts a new configuration file into the list of config files
80  BLAM ConfigFile* GetConfigData(std::string filename);
81  }
82 }
Blam
Namespace surrounding all major engine components.
Definition: blam_api.h:17
Blam::Config::ConfigFile::GetWString
std::wstring GetWString(std::string option)
Retrieves the specified config option's value as a wstring.
Definition: config_accessors.cpp:68
Blam::Config::ConfigFile::default_options
std::map< std::string, ConfigOption > default_options
Contains all defaults for the config file. Usually, defaults are stored as a resource embedded within...
Definition: config.h:47
Blam::Config::ExpandConfigOptionPlaceholders
BLAM void ExpandConfigOptionPlaceholders()
Expands all placeholders, and converts them to their evaluated values.
Definition: config_internal.cpp:97
Blam::Config::GetConfig
BLAM ConfigFile * GetConfig(std::string filename)
Retrieves the specified configuration file.
Definition: config.cpp:213
Blam::Config::GetConfigData
BLAM ConfigFile * GetConfigData(std::string filename)
Retrieves the specified configuration file.
Definition: config_internal.cpp:171
Blam::Config::ApplyPlaceholdersToAllConfigFiles
BLAM void ApplyPlaceholdersToAllConfigFiles()
Applies placeholder values to all configuration files.
Definition: config_internal.cpp:108
Blam::Config::ConfigOption
Structure to contain data for an option within a Config file.
Definition: config.h:31
Blam::Config::LoadConfig
BLAM int LoadConfig(std::string filename)
Loads a configuration file from the specified path.
Definition: config.cpp:56
Blam::Config::ConfigFile
Class to contain data related to a Config file.
Definition: config.h:40
BLAM
#define BLAM
Definition: config.h:13
Blam::Config::ConfigOption::value
std::string value
The raw string value of the option, as it displays in the config file.
Definition: config.h:34
Blam::Config::InsertConfigFile
BLAM void InsertConfigFile(ConfigFile config)
Inserts a loaded ConfigFile into the map of loaded configuration files.
Definition: config_internal.cpp:163
Blam::Config::ConfigFile::options
std::map< std::string, ConfigOption > options
Contains all options contained within the config file.
Definition: config.h:46
Blam::Config::ConfigFile::GetInt
int GetInt(std::string option)
Retrieves the specified config option's value as an int (32-bit integer)
Definition: config_accessors.cpp:82
Blam::Config::ConfigOption::id
std::string id
The ID of the configuration setting, as it displays in the config file.
Definition: config.h:33
Blam::Config::ConfigFile::filename
std::string filename
The name of the configuration file.
Definition: config.h:44
Blam::Config::ConfigFile::path
std::string path
The path to the configuration file. Can be either absolute or relative.
Definition: config.h:43
Blam::Config::ConfigFile::GetFloat
float GetFloat(std::string option)
Retrieves the specified config option's value as a float
Definition: config_accessors.cpp:94
Blam::Config::ConfigFile::GetBoolean
bool GetBoolean(std::string option)
Retrieves the specified config option's value as a bool
Definition: config_accessors.cpp:116
Blam::Config::ConfigFile::GetCString
const char * GetCString(std::string option)
Retrieves the specified config option's value as a const char*, also referred to as a C-String.
Definition: config_accessors.cpp:56
Blam::Config::ConfigFile::GetDouble
double GetDouble(std::string option)
Retrieves the specified config option's value as a double
Definition: config_accessors.cpp:106
Blam::Config::ConfigFile::GetString
std::string GetString(std::string option)
Retrieves the specified config option's value as a string.
Definition: config_accessors.cpp:44