// NeL - MMORPG Framework // Copyright (C) 2010 Winch Gate Property Limited // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . #ifndef NLQT_CONFIGURATION_H #define NLQT_CONFIGURATION_H #include // STL includes #include // NeL includes #include #include #include #include // Project includes #include "callback.h" namespace NLQT { typedef CCallback CConfigCallback; /** * CConfiguration * \brief CConfiguration * \date 2010-02-05 15:44GMT * \author Jan Boon (Kaetemi) */ class CConfiguration : public NLMISC::CManualSingleton // singleton due to cconfigfile issues { public: CConfiguration(); virtual ~CConfiguration(); void init(); void release(); void updateUtilities(); void setAndCallback(const std::string &varName, CConfigCallback configCallback); void setCallback(const std::string &varName, CConfigCallback configCallback); void dropCallback(const std::string &varName); float getValue(const std::string &varName, float defaultValue); double getValue(const std::string &varName, double defaultValue); int getValue(const std::string &varName, int defaultValue); std::string getValue(const std::string &varName, const std::string &defaultValue); ucstring getValue(const std::string &varName, const ucstring &defaultValue); bool getValue(const std::string &varName, bool defaultValue); NLMISC::CRGBA getValue(const std::string &varName, const NLMISC::CRGBA &defaultValue); NLMISC::CRGBA getValue(const NLMISC::CConfigFile::CVar &var, const NLMISC::CRGBA &defaultValue); inline NLMISC::CConfigFile &getConfigFile() { return m_ConfigFile; } private: static void cbConfigCallback(NLMISC::CConfigFile::CVar &var); void cfcbLogFilter(NLMISC::CConfigFile::CVar &var); private: CConfiguration(const CConfiguration &); CConfiguration &operator=(const CConfiguration &); private: NLMISC::CConfigFile m_ConfigFile; std::map m_ConfigCallbacks; }; /* class CConfiguration */ } /* namespace NLQT */ #endif /* #ifndef NLQT_CONFIGURATION_H */ /* end of file */