18 #ifndef CONFIGMANAGER_H
19 #define CONFIGMANAGER_H
27 template<
class InConfig >
31 void (InConfig::*callback)(
const std::string & file_line_input );
35 template<
class InConfig >
39 using InConfigMap = std::map< string , Callback< InConfig > * >;
46 : mFileName( file_name ){}
57 file.open(( mFileName ).c_str());
65 if( line.c_str()[0] ==
'#' )
68 Strings items = Utils::StringSplit( line ,
"=" );
70 if( items.size() >= 2 )
77 for(
auto pair : mConfigMap )
79 if( pair.first == value )
85 ((call->object)->* (call->callback))( content );
99 std::pair< const string , Callback<InConfig> * > pair ( value , callback );
101 mConfigMap.insert( pair );
104 struct Callback<InConfig> * callback( InConfig *
object ,
void (InConfig::*callback)(
const std::string & file_line_input ))
107 sCallback->object = object;
108 sCallback->callback = callback;
114 for(
auto pair : mConfigMap )
126 std::string mFileName;
128 InConfigMap mConfigMap;
134 typedef void(*CONFIG_FUNC)(
const std::string & file_line_input );
139 using ConfigMap = std::map< std::string , CONFIG_FUNC >;
147 explicit Config(
const std::string & file_name );
151 virtual void load(
void);
153 void addFunction(
const std::string & value , CONFIG_FUNC func );
158 std::string mFileName;
160 ConfigMap mConfigMap;
163 using ConfigList = std::list< Config *>;
179 Config * createConfig(
const std::string & file_name );
182 void addFunction(
Config * config ,
const std::string & value , CONFIG_FUNC func );
183 void loadConfig(
Config * config );
186 Config * getConfig(
const std::string & file_name );
189 void saveConfig(
Config * config );
190 void removeConfig(
Config * config );
191 void removeAll(
void);
195 ConfigList mConfigList;
200 #endif // CONFIGMANAGER_H
Definition: configmanager.h:141
Definition: configmanager.h:165
Definition: configmanager.h:28
Definition: configmanager.h:36