#include <config_file.h>
If you setup the global callback before loading, it'll be call after the load() function.
Example:
try { CConfigFile cf; // Load and parse "test.txt" file cf.load ("test.txt"); // Attach a callback to the var1 variable. When the var1 will changed, this cvar1cb function will be called cf.setCallback ("var1", var1cb); // Get the foo variable (suppose it's a string variable) CConfigFile::CVar &foo = cf.getVar ("foo"); // Display the content of the variable printf ("foo = %s\n", foo.asString ().c_str ()); // Get the bar variable (suppose it's an array of int) CConfigFile::CVar &bar = cf.getVar ("bar"); // Display the content of the all elements of the bar variable printf ("bar have %d elements : \n", bar.size ()); for (int i = 0; i < bar.size (); i++) printf ("%d ", bar.asInt (i)); printf("\n"); } catch (EConfigFile &e) { // Something goes wrong... catch that printf ("%s\n", e.what ()); } *
Example of config file:
// one line comment / * big comment on more than one line * / var1 = 123; // var1 type:int, value:123 var2 = "456.25"; // var2 type:string, value:"456.25" var3 = 123.123; // var3 type:real, value:123.123 // the resulting type is type of the first left value var4 = 123.123 + 2; // var4 type:real, value:125.123 var5 = 123 + 2.1; // var5 type:int, value:125 var6 = (-112+1) * 3 - 14; // var6 type:int, value:-347 var7 = var1 + 1; // var7 type:int, value:124 var8 = var2 + 10; // var8 type:string, value:456.2510 (convert 10 into a string and concat it) var9 = 10.15 + var2; // var9 type:real, value:466.4 (convert var2 into a real and add it) var10 = { 10.0, 51.1 }; // var10 type:realarray, value:{10.0,51.1} var11 = { "str1", "str2", "str3" }; // var11 type:stringarray, value:{"str1", "str2", "str3"} var12 = { 10+var1, var1-var7 }; // var12 type:intarray, value:{133,-1} *
Operators are '+', '-', '*', '/'. You can't use operators on a array variable, for example, you can't do =var12+1. If you have 2 variables with the same name, the first value will be remplaced by the second one.
Nevrax France
Definition at line 119 of file config_file.h.
Public Member Functions | |
| CConfigFile () | |
| void | clear () |
| Clear all the variable array (including information on variable callback etc). | |
| void | clearVars () |
| set to 0 or "" all variable in the array (but not destroy them) | |
| void | display (CLog *log) const |
| display all variables with nlinfo (debug use) | |
| void | display () const |
| display all variables with nlinfo (debug use) | |
| bool | exists (const std::string &varName) |
| Return true if the variable exists, false otherwise. | |
| std::string | getFilename () const |
| returns the config file name | |
| uint | getNumVar () const |
| Get the variable count. | |
| CVar * | getVar (uint varId) |
| Get a variable. | |
| CVar & | getVar (const std::string &varName) |
| Get a variable with the variable name. | |
| CVar * | getVarPtr (const std::string &varName) |
| Get a variable pointer with the variable name, without throwing exception. Return NULL if not found. | |
| CVar * | insertVar (const std::string &varName, const CVar &varToCopy) |
| Add a variable. If the variable already exit, return it. | |
| void | load (const std::string &fileName) |
| load and parse the file | |
| bool | loaded () |
| Returns true if the file has been loaded. | |
| void | reparse () |
| reload and reparse the file | |
| void | save () const |
| save the config file | |
| void | setCallback (const std::string &VarName, void(*cb)(CConfigFile::CVar &var)) |
| set a callback function to a variable, it will be called when this variable is modified | |
| void | setCallback (void(*cb)()) |
| set a callback function that is called when the config file is modified | |
| virtual | ~CConfigFile () |
Static Public Member Functions | |
| void | checkConfigFiles () |
| Internal use only. | |
| void | setTimeout (uint32 timeout) |
Data Fields | |
| std::vector< std::string > | UnknownVariables |
| contains the variable names that getVar() and getVarPtr() tried to access but not present in the cfg | |
Private Attributes | |
| void(* | _Callback )() |
| Internal use only. | |
| std::vector< CVar > | _Vars |
| Internal use only. | |
| std::vector< std::string > | FileNames |
| std::vector< uint32 > | LastModified |
Static Private Attributes | |
| std::vector< CConfigFile * > * | _ConfigFiles = NULL |
| uint32 | _Timeout = 1000 |
|
|
Definition at line 202 of file config_file.h. References _Callback.
00202 : _Callback(NULL) {} |
|
|
Definition at line 227 of file config_file.cpp. References _ConfigFiles.
00228 {
00229 if (_ConfigFiles == NULL || (*_ConfigFiles).empty ()) return;
00230
00231 vector<CConfigFile *>::iterator it = find ((*_ConfigFiles).begin (), (*_ConfigFiles).end (), this);
00232 if (it != (*_ConfigFiles).end ())
00233 {
00234 (*_ConfigFiles).erase (it);
00235 }
00236
00237 if ((*_ConfigFiles).empty())
00238 {
00239 delete _ConfigFiles;
00240 _ConfigFiles = NULL;
00241 }
00242 }
|
|
|
Internal use only.
Definition at line 681 of file config_file.cpp. References _ConfigFiles, _Timeout, nlassert, nlwarning, and uint.
00682 {
00683 if (_ConfigFiles == NULL) return;
00684
00685 static time_t LastCheckTime = time (NULL);
00686 if (_Timeout > 0 && (float)(time (NULL) - LastCheckTime)*1000.0f < (float)_Timeout) return;
00687
00688 LastCheckTime = time (NULL);
00689
00690 bool needReparse;
00691 for (vector<CConfigFile *>::iterator it = (*_ConfigFiles).begin (); it != (*_ConfigFiles).end (); it++)
00692 {
00693 needReparse = false;
00694 nlassert ((*it)->FileNames.size() == (*it)->LastModified.size());
00695 for (uint i = 0; i < (*it)->FileNames.size(); i++)
00696 {
00697 if ((*it)->LastModified[i] != CFile::getFileModificationDate((*it)->FileNames[i]))
00698 {
00699 needReparse = true;
00700 (*it)->LastModified[i] = CFile::getFileModificationDate((*it)->FileNames[i]);
00701 }
00702 }
00703 if (needReparse)
00704 {
00705 try
00706 {
00707 (*it)->reparse ();
00708 }
00709 catch (EConfigFile &e)
00710 {
00711 nlwarning ("CF: Exception will re-read modified config file '%s': %s", (*it)->getFilename().c_str(), e.what ());
00712 }
00713 }
00714 }
00715 }
|
|
|
Clear all the variable array (including information on variable callback etc).
Definition at line 722 of file config_file.cpp.
00723 {
00724 _Vars.clear ();
00725 }
|
|
|
set to 0 or "" all variable in the array (but not destroy them)
Definition at line 727 of file config_file.cpp.
|
|
|
display all variables with nlinfo (debug use)
Definition at line 559 of file config_file.cpp. References NLMISC::createDebug(), NLMISC::CLog::displayRaw(), NLMISC::CLog::displayRawNL(), and getFilename().
00560 {
00561 createDebug ();
00562
00563 log->displayRawNL ("Config file %s have %d variables and %d root config file:", getFilename().c_str(), _Vars.size(), FileNames.size()-1);
00564 log->displayRaw ("Root config files: ");
00565 for(int i = 1; i < (int)FileNames.size(); i++)
00566 {
00567 log->displayRaw (FileNames[i].c_str());
00568 }
00569 log->displayRawNL ("");
00570 log->displayRawNL ("------------------------------------------------------");
00571 for(int i = 0; i < (int)_Vars.size(); i++)
00572 {
00573 log->displayRaw ((_Vars[i].Callback==NULL)?" ":"CB ");
00574 log->displayRaw ((_Vars[i].Root)?"Root ":" ");
00575 if (_Vars[i].Comp)
00576 {
00577 switch (_Vars[i].Type)
00578 {
00579 case CConfigFile::CVar::T_INT:
00580 {
00581 log->displayRaw ("%-20s { ", _Vars[i].Name.c_str());
00582 for (int it=0; it < (int)_Vars[i].IntValues.size(); it++)
00583 {
00584 log->displayRaw ("'%d' ", _Vars[i].IntValues[it]);
00585 }
00586 log->displayRawNL ("}");
00587 break;
00588 }
00589 case CConfigFile::CVar::T_STRING:
00590 {
00591 log->displayRaw ("%-20s { ", _Vars[i].Name.c_str());
00592 for (int st=0; st < (int)_Vars[i].StrValues.size(); st++)
00593 {
00594 log->displayRaw ("\"%s\" ", _Vars[i].StrValues[st].c_str());
00595 }
00596 log->displayRawNL ("}");
00597 break;
00598 }
00599 case CConfigFile::CVar::T_REAL:
00600 {
00601 log->displayRaw ("%-20s { " , _Vars[i].Name.c_str());
00602 for (int rt=0; rt < (int)_Vars[i].RealValues.size(); rt++)
00603 {
00604 log->displayRaw ("`%f` ", _Vars[i].RealValues[rt]);
00605 }
00606 log->displayRawNL ("}");
00607 break;
00608 }
00609 case CConfigFile::CVar::T_UNKNOWN:
00610 {
00611 log->displayRawNL ("%-20s { }" , _Vars[i].Name.c_str());
00612 break;
00613 }
00614 default:
00615 {
00616 log->displayRawNL ("%-20s <default case comp> (%d)" , _Vars[i].Name.c_str(), _Vars[i].Type);
00617 break;
00618 }
00619 }
00620 }
00621 else
00622 {
00623 switch (_Vars[i].Type)
00624 {
00625 case CConfigFile::CVar::T_INT:
00626 log->displayRawNL ("%-20s '%d'", _Vars[i].Name.c_str(), _Vars[i].IntValues[0]);
00627 break;
00628 case CConfigFile::CVar::T_STRING:
00629 log->displayRawNL ("%-20s \"%s\"", _Vars[i].Name.c_str(), _Vars[i].StrValues[0].c_str());
00630 break;
00631 case CConfigFile::CVar::T_REAL:
00632 log->displayRawNL ("%-20s `%f`", _Vars[i].Name.c_str(), _Vars[i].RealValues[0]);
00633 break;
00634 case CConfigFile::CVar::T_UNKNOWN:
00635 log->displayRawNL ("%-20s <Unknown>", _Vars[i].Name.c_str());
00636 break;
00637 default:
00638 {
00639 log->displayRawNL ("%-20s <default case> (%d)" , _Vars[i].Name.c_str(), _Vars[i].Type);
00640 break;
00641 }
00642 }
00643 }
00644 }
00645 }
|
|
|
display all variables with nlinfo (debug use)
Definition at line 554 of file config_file.cpp. References NLMISC::InfoLog.
00555 {
00556 display (InfoLog);
00557 }
|
|
|
Return true if the variable exists, false otherwise.
Definition at line 461 of file config_file.cpp. References uint. Referenced by NLNET::IService::main().
00462 {
00463 for (uint i = 0; i < _Vars.size(); i++)
00464 {
00465 // the type could be T_UNKNOWN if we add a callback on this name but this var is not in the config file
00466 if (_Vars[i].Name == varName && (_Vars[i].Type != CVar::T_UNKNOWN || _Vars[i].Comp))
00467 {
00468 return true;
00469 }
00470 }
00471 return false;
00472 }
|
|
|
returns the config file name
Definition at line 258 of file config_file.h. Referenced by display(), getVar(), NLMISC::IVariable::init(), save(), and setCallback().
00258 { return FileNames[0]; }
|
|
|
Get the variable count.
Definition at line 735 of file config_file.cpp. References uint.
00736 {
00737 return _Vars.size ();
00738 }
|
|
|
Get a variable.
Definition at line 740 of file config_file.cpp. References uint.
00741 {
00742 return &(_Vars[varId]);
00743 }
|
|
|
Get a variable with the variable name.
Definition at line 431 of file config_file.cpp. References getFilename(), and getVarPtr(). Referenced by NLNET::IService::main(), NLLIGO::CLigoConfig::read(), and NLNET::CUdpSimSock::setSimValues().
00432 {
00433 CVar *var = getVarPtr (varName);
00434 if (var == 0)
00435 throw EUnknownVar (getFilename(), varName);
00436 else
00437 return *var;
00438 }
|
|
|
Get a variable pointer with the variable name, without throwing exception. Return NULL if not found.
Definition at line 441 of file config_file.cpp. References uint, and UnknownVariables. Referenced by getVar(), NLMISC::CWordsDictionary::init(), NLMISC::IVariable::init(), insertVar(), NLNET::IService::main(), and reparse().
00442 {
00443 uint i;
00444 for (i = 0; i < _Vars.size(); i++)
00445 {
00446 // the type could be T_UNKNOWN if we add a callback on this name but this var is not in the config file
00447 if (_Vars[i].Name == varName && (_Vars[i].Type != CVar::T_UNKNOWN || _Vars[i].Comp))
00448 return &(_Vars[i]);
00449 }
00450
00451 // if not found, add it in the array if necessary
00452 for (i = 0; i < UnknownVariables.size(); i++)
00453 if(UnknownVariables[i] == varName)
00454 break;
00455 if (i == UnknownVariables.size())
00456 UnknownVariables.push_back(varName);
00457
00458 return NULL;
00459 }
|
|
||||||||||||
|
Add a variable. If the variable already exit, return it.
Definition at line 745 of file config_file.cpp. References getVarPtr(), NLMISC::CConfigFile::CVar::Name, and NLMISC::CConfigFile::CVar::Root.
|
|
|
load and parse the file
Definition at line 244 of file config_file.cpp. References _ConfigFiles, nlwarning, and reparse(). Referenced by NLMISC::CWordsDictionary::init(), NLNET::IService::main(), and NLLIGO::CLigoConfig::read().
00245 {
00246 if(fileName.empty())
00247 {
00248 nlwarning ("CF: Can't load a empty file name configfile");
00249 return;
00250 }
00251
00252 FileNames.clear ();
00253 FileNames.push_back (fileName);
00254
00255 if (_ConfigFiles == NULL)
00256 {
00257 _ConfigFiles = new std::vector<CConfigFile *>;
00258 }
00259 (*CConfigFile::_ConfigFiles).push_back (this);
00260 reparse ();
00261
00262 /* _FileName.clear ();
00263 _FileName.push_back (fileName);
00264
00265 if (_ConfigFiles == NULL)
00266 {
00267 _ConfigFiles = new std::vector<CConfigFile *>;
00268 }
00269 (*CConfigFile::_ConfigFiles).push_back (this);
00270 reparse ();
00271
00272 // If we find a linked config file, load it but don't overload already existant variable
00273 CVar *var = getVarPtr ("RootConfigFilename");
00274 if (var)
00275 {
00276 string RootConfigFilename = var->asString();
00277 nlinfo ("RootConfigFilename variable found in the '%s' config file, parse it (%s)", fileName.c_str(), RootConfigFilename.c_str());
00278
00279 string path = CFile::getPath(fileName);
00280
00281 if (!path.empty())
00282 path += "/";
00283
00284 path += RootConfigFilename;
00285
00286 reparse (path.c_str());
00287 }
00288 */
00289 // print ();
00290 }
|
|
|
Returns true if the file has been loaded.
Definition at line 292 of file config_file.cpp.
00293 {
00294 return !CConfigFile::FileNames.empty();
00295 }
|
|
|
reload and reparse the file
Definition at line 297 of file config_file.cpp. References _Callback, NLMISC::CConfigFile::CVar::asString(), cf_CurrentLine, cf_ifile, cf_OverwriteExistingVariable, cfparse(), cfrestart(), NLMISC::CIFile::close(), NLMISC::CFile::fileExists(), NLMISC::CPath::getFullPath(), getVarPtr(), LoadRoot, nldebug, nlinfo, nlwarning, NLMISC::CIFile::open(), and NLMISC::CPath::standardizePath(). Referenced by load().
00298 {
00299 if (FileNames.empty())
00300 {
00301 nlwarning ("CF: Can't reparse config file because file name is empty");
00302 return;
00303 }
00304
00305 string fn = FileNames[0];
00306
00307 FileNames.clear ();
00308 LastModified.clear ();
00309
00310 // clearVars ();
00311
00312 while (!fn.empty())
00313 {
00314 fn = NLMISC::CPath::getFullPath(fn, false);
00315 nldebug ("CF: Adding config file '%s' in the config file", fn.c_str());
00316 FileNames.push_back (fn);
00317 LastModified.push_back (CFile::getFileModificationDate(fn));
00318
00319 if (cf_ifile.open (fn))
00320 {
00321 cfrestart (NULL);
00322 cf_OverwriteExistingVariable = (FileNames.size()==1);
00323 LoadRoot = (FileNames.size()>1);
00324 bool parsingOK = (cfparse (&(_Vars)) == 0);
00325 cf_ifile.close();
00326 if (!parsingOK)
00327 {
00328 nlwarning ("CF: Parsing error in file %s line %d", fn.c_str(), cf_CurrentLine);
00329 throw EParseError (fn, cf_CurrentLine);
00330 }
00331 }
00332 else
00333 {
00334 nlwarning ("CF: Config file '%s' not found in the path '%s'", fn.c_str(), CPath::getCurrentPath().c_str());
00335 throw EFileNotFound (fn);
00336 }
00337 cf_ifile.close ();
00338
00339 // If we find a linked config file, load it but don't overload already existant variable
00340 CVar *var = getVarPtr ("RootConfigFilename");
00341 if (var)
00342 {
00343 string RootConfigFilename = var->asString();
00344
00345 if (!NLMISC::CFile::fileExists(RootConfigFilename))
00346 {
00347 // file is not found, try with the path of the master cfg
00348 string path = NLMISC::CPath::standardizePath (NLMISC::CFile::getPath(FileNames[0]));
00349 RootConfigFilename = path + RootConfigFilename;
00350 }
00351
00352 RootConfigFilename = NLMISC::CPath::getFullPath(RootConfigFilename, false);
00353
00354 if (RootConfigFilename != fn)
00355 {
00356 nlinfo ("CF: RootConfigFilename variable found in the '%s' config file, parse the root config file '%s'", fn.c_str(), RootConfigFilename.c_str());
00357 fn = RootConfigFilename;
00358 }
00359 else
00360 fn.clear ();
00361 }
00362 else
00363 fn.clear ();
00364 }
00365
00366 if (_Callback != NULL)
00367 _Callback();
00368
00369 /* if (filename == NULL)
00370 {
00371 _LastModified = getLastModified ();
00372
00373 nlassert (!_FileName.empty());
00374
00375 if (cf_ifile.open (_FileName[0]))
00376 {
00377 // if we clear all the array, we'll lost the callback on variable and all information
00378 // _Vars.clear();
00379 cfrestart (NULL);
00380 cf_OverwriteExistingVariable = true;
00381 LoadRoot = false;
00382 bool parsingOK = (cfparse (&(_Vars)) == 0);
00383 cf_ifile.close();
00384 if (!parsingOK)
00385 {
00386 nlwarning ("Parsing error in file %s line %d", _FileName.c_str(), cf_CurrentLine);
00387 throw EParseError (_FileName, cf_CurrentLine);
00388 }
00389 }
00390 else
00391 {
00392 nlwarning ("ConfigFile '%s' not found in the path '%s'", _FileName.c_str(), CPath::getCurrentPath().c_str());
00393 throw EFileNotFound (_FileName);
00394 }
00395 }
00396 else
00397 {
00398 nlassert (strlen(filename)>0);
00399
00400 // load external config filename, don't overwrite existant variable
00401 if (cf_ifile.open (filename))
00402 {
00403 cfrestart (NULL);
00404 cf_OverwriteExistingVariable = false;
00405 LoadRoot = true;
00406 bool parsingOK = (cfparse (&(_Vars)) == 0);
00407 cf_ifile.close ();
00408 if (!parsingOK)
00409 {
00410 nlwarning ("Parsing error in file %s line %d", filename, cf_CurrentLine);
00411 throw EParseError (filename, cf_CurrentLine);
00412 }
00413 }
00414 else
00415 {
00416 nlwarning ("RootConfigFilename '%s' not found", _FileName.c_str());
00417 }
00418 }
00419
00420 if (callingCallback)
00421 {
00422 if (_Callback != NULL)
00423 _Callback();
00424 }
00425 */
00426
00427 }
|
|
|
save the config file
Definition at line 474 of file config_file.cpp. References getFilename(), and nlwarning.
00475 {
00476 FILE *fp = fopen (getFilename().c_str (), "w");
00477 if (fp == NULL)
00478 {
00479 nlwarning ("CF: Couldn't create %s file", getFilename().c_str ());
00480 return;
00481 }
00482
00483 for(int i = 0; i < (int)_Vars.size(); i++)
00484 {
00485 // Not a root value
00486 if (!_Vars[i].Root)
00487 {
00488 if (_Vars[i].Comp)
00489 {
00490 fprintf(fp, "%-20s = {", _Vars[i].Name.c_str());
00491 switch (_Vars[i].Type)
00492 {
00493 case CConfigFile::CVar::T_INT:
00494 {
00495 for (int it=0; it < (int)_Vars[i].IntValues.size(); it++)
00496 {
00497 if (it%_Vars[i].SaveWrap == 0)
00498 {
00499 fprintf(fp, "\n\t");
00500 }
00501 fprintf(fp, "%d%s", _Vars[i].IntValues[it], it<(int)_Vars[i].IntValues.size()-1?", ":" ");
00502 }
00503 break;
00504 }
00505 case CConfigFile::CVar::T_STRING:
00506 {
00507 for (int st=0; st < (int)_Vars[i].StrValues.size(); st++)
00508 {
00509 if (st%_Vars[i].SaveWrap == 0)
00510 {
00511 fprintf(fp, "\n\t");
00512 }
00513 fprintf(fp, "\"%s\"%s", _Vars[i].StrValues[st].c_str(), st<(int)_Vars[i].StrValues.size()-1?", ":" ");
00514 }
00515 break;
00516 }
00517 case CConfigFile::CVar::T_REAL:
00518 {
00519 for (int rt=0; rt < (int)_Vars[i].RealValues.size(); rt++)
00520 {
00521 if (rt%_Vars[i].SaveWrap == 0)
00522 {
00523 fprintf(fp, "\n\t");
00524 }
00525 fprintf(fp, "%.10f%s", _Vars[i].RealValues[rt], rt<(int)_Vars[i].RealValues.size()-1?", ":" ");
00526 }
00527 break;
00528 }
00529 default: break;
00530 }
00531 fprintf(fp, "\n};\n");
00532 }
00533 else
00534 {
00535 switch (_Vars[i].Type)
00536 {
00537 case CConfigFile::CVar::T_INT:
00538 fprintf(fp, "%-20s = %d;\n", _Vars[i].Name.c_str(), _Vars[i].IntValues[0]);
00539 break;
00540 case CConfigFile::CVar::T_STRING:
00541 fprintf(fp, "%-20s = \"%s\";\n", _Vars[i].Name.c_str(), _Vars[i].StrValues[0].c_str());
00542 break;
00543 case CConfigFile::CVar::T_REAL:
00544 fprintf(fp, "%-20s = %.10f;\n", _Vars[i].Name.c_str(), _Vars[i].RealValues[0]);
00545 break;
00546 default: break;
00547 }
00548 }
00549 }
00550 }
00551 fclose (fp);
00552 }
|
|
||||||||||||
|
set a callback function to a variable, it will be called when this variable is modified
Definition at line 653 of file config_file.cpp. References NLMISC::CConfigFile::CVar::Callback, NLMISC::CConfigFile::CVar::Comp, getFilename(), NLMISC::CConfigFile::CVar::Name, nlinfo, and NLMISC::CConfigFile::CVar::Type.
00654 {
00655 for (vector<CVar>::iterator it = _Vars.begin (); it != _Vars.end (); it++)
00656 {
00657 if (VarName == (*it).Name)
00658 {
00659 (*it).Callback = cb;
00660 nlinfo ("CF: Setting callback when the variable '%s' on the file '%s' is modified externaly", VarName.c_str(), getFilename().c_str());
00661 return;
00662 }
00663 }
00664 // VarName doesn't exist, add it now for the future
00665 CVar Var;
00666 Var.Name = VarName;
00667 Var.Callback = cb;
00668 Var.Type = CVar::T_UNKNOWN;
00669 Var.Comp = false;
00670 _Vars.push_back (Var);
00671 nlinfo ("CF: Setting callback when the variable '%s' on the file '%s' is modified externaly (actually unknown)", VarName.c_str(), getFilename().c_str());
00672 }
|
|
|
set a callback function that is called when the config file is modified
Definition at line 647 of file config_file.cpp. References _Callback, getFilename(), and nlinfo. Referenced by NLMISC::IVariable::init(), NLNET::IService::main(), and NLNET::CUdpSimSock::setSimValues().
00648 {
00649 _Callback = cb;
00650 nlinfo ("CF: Setting callback when the file '%s' is modified externaly", FileNames.empty()?"":getFilename().c_str());
00651 }
|
|
|
set the time between 2 file checking (default value is 1 second)
Definition at line 717 of file config_file.cpp. References _Timeout, and uint32.
00718 {
00719 _Timeout = timeout;
00720 }
|
|
|
Internal use only.
Referenced by CConfigFile(), reparse(), and setCallback(). |
|
|
Definition at line 677 of file config_file.cpp. Referenced by checkConfigFiles(), load(), and ~CConfigFile(). |
|
|
Definition at line 679 of file config_file.cpp. Referenced by checkConfigFiles(), and setTimeout(). |
|
|
Internal use only.
Definition at line 273 of file config_file.h. |
|
|
Definition at line 280 of file config_file.h. |
|
|
Definition at line 281 of file config_file.h. |
|
|
contains the variable names that getVar() and getVarPtr() tried to access but not present in the cfg
Definition at line 255 of file config_file.h. Referenced by getVarPtr(). |
1.3.6