diff options
Diffstat (limited to 'src/common/profile.h')
-rw-r--r-- | src/common/profile.h | 98 |
1 files changed, 91 insertions, 7 deletions
diff --git a/src/common/profile.h b/src/common/profile.h index 2c76a0b..0886522 100644 --- a/src/common/profile.h +++ b/src/common/profile.h @@ -18,13 +18,97 @@ #pragma once +#include <cstdlib> +#include <vector> +#include <utility> -extern bool InitCurrentDirectory(); -extern bool SetLocalProfileString(char* section, char* key, char* string); -extern bool GetLocalProfileString(char* section, char* key, char* buffer, int max); -extern bool SetLocalProfileInt(char* section, char* key, int value); -extern bool GetLocalProfileInt(char* section, char* key, int &value); -extern bool SetLocalProfileFloat(char* section, char* key, float value); -extern bool GetLocalProfileFloat(char* section, char* key, float &value); +#include <lib/simpleini/SimpleIni.h> +#include <common/singleton.h> +/** + * @file common/profile.h + * @brief Class for loading profile (currently for loading ini config file) + */ + + +/** +* @class CProfile +* +* @brief Class for loading profile (currently for loading ini config file) +* +*/ +class CProfile : public CSingleton<CProfile> +{ + public: + CProfile(); + ~CProfile(); + + /** Loads colobot.ini from current directory + * @return return true on success + */ + bool InitCurrentDirectory(); + + /** Sets string value in section under specified key + * @param std::string section + * @param std::string key + * @param std::string value + * @return return true on success + */ + bool SetLocalProfileString(std::string section, std::string key, std::string value); + + /** Gets string value in section under specified key + * @param std::string section + * @param std::string key + * @param std::string& buffer + * @return return true on success + */ + bool GetLocalProfileString(std::string section, std::string key, std::string& buffer); + + /** Sets int value in section under specified key + * @param std::string section + * @param std::string key + * @param int value + * @return return true on success + */ + bool SetLocalProfileInt(std::string section, std::string key, int value); + + /** Gets int value in section under specified key + * @param std::string section + * @param std::string key + * @param int& value + * @return return true on success + */ + bool GetLocalProfileInt(std::string section, std::string key, int &value); + + /** Sets float value in section under specified key + * @param std::string section + * @param std::string key + * @param float value + * @return return true on success + */ + bool SetLocalProfileFloat(std::string section, std::string key, float value); + + /** Gets float value in section under specified key + * @param std::string section + * @param std::string key + * @param float& value + * @return return true on success + */ + bool GetLocalProfileFloat(std::string section, std::string key, float &value); + + /** Gets all values in section under specified key + * @param std::string section + * @param std::string key + * @return vector of values + */ + std::vector< std::string > GetLocalProfileSection(std::string section, std::string key); + + private: + CSimpleIniA *m_ini; +}; + +//! Global function to get profile instance +inline CProfile* GetProfile() { + return CProfile::GetInstancePointer(); +} |