Example program demonstrating the use of ArConfigThis program shows how to use ArConfig to store configuration parameters and load/save them from a file.
The ArNetworking library includes server classes that will let you use a remote client such as MobileEyes to view and change the configuration. See ArNetworking documentation and examples.
#include "Aria.h"
class ConfigExample
{
int myIntParam;
double myDoubleParam;
bool myBoolParam;
char myStringParam[256];
public:
ConfigExample():
myIntParam(0),
myDoubleParam(0.5),
myBoolParam(false),
myProcessConfigCB(this, &ConfigExample::processConfigFile)
{
config->
setSectionComment(
"Example Section",
"Contains parameters created by the configExample");
myStringParam[0] = '\0';
}
bool processConfigFile()
{
ArLog::log(
ArLog::Normal,
"configExample: Config changed. New values: int=%d, float=%f, bool=%s, string=\"%s\".", myIntParam, myDoubleParam, myBoolParam?
"true":
"false", myStringParam);
return true;
}
};
int main(int argc, char **argv)
{
argParser.loadDefaultArguments();
{
ArLog::log(
ArLog::Terse,
"configExample usage: configExample <config file>.\nFor example, \"configExample examples/configExample.cfg\".");
return 1;
}
ConfigExample configExample;
char error[512];
const char* filename = argParser.getArg(1);
if (! config->
parseFile(filename,
true,
false, error, 512) )
{
ArLog::log(
ArLog::Terse,
"configExample: Error loading configuration file \"%s\" %s. Try \"examples/configExample.cfg\".", filename, error);
return -1;
}
if (section)
{
if (arg)
{
{
}
else
{
}
}
}
{
}
return 0;
}
void setSectionComment(const char *sectionName, const char *comment)
Sets the comment for a section.
Definition: ArConfig.cpp:727
ArConfigArg * findParam(const char *paramName, bool isAllowStringHolders=false)
Finds a parameter item in this section with the given name. Returns NULL if not found.
Definition: ArConfig.cpp:3209
void addProcessFileCB(ArRetFunctor< bool > *functor, int priority=0)
Adds a callback to be invoked when the configuration is loaded or reloaded.
Definition: ArConfig.cpp:2484
bool setBool(bool val, char *errorBuffer=NULL, size_t errorBufferLen=0, bool doNotSet=false)
Sets the argument value, for bool arguments.
Definition: ArConfigArg.cpp:1365
Stores configuration information which may be read to and from files or other sources.
Definition: ArConfig.h:71
bool writeFile(const char *fileName, bool append=false, std::set< std::string > *alreadyWritten=NULL, bool writeExtras=false, std::list< std::string > *sectionsToWrite=NULL, ArPriority::Priority highestPriority=ArPriority::FIRST_PRIORITY, ArPriority::Priority lowestPriority=ArPriority::LAST_PRIORITY)
Write out a config file.
Definition: ArConfig.cpp:1796
Use terse logging.
Definition: ArLog.h:61
Represents a section in the configuration.
Definition: ArConfig.h:533
static void exit(int exitCode=0)
Shutdown all Aria processes/threads, call exit callbacks, and exit the program.
Definition: Aria.cpp:367
static void log(LogLevel level, const char *str,...)
Log a message, with formatting and variable number of arguments.
Definition: ArLog.cpp:93
Advanced items (alias for historic reasons)
Definition: ariaUtil.h:1856
Basic things that should be modified to suit.
Definition: ariaUtil.h:1848
bool callProcessFileCallBacks(bool continueOnError, char *errorBuffer=NULL, size_t errorBufferLen=0)
Call the processFileCBs.
Definition: ArConfig.cpp:2594
static void init(SigHandleMethod method=SIGHANDLE_THREAD, bool initSockets=true, bool sigHandleExitNotShutdown=true)
Initialize Aria global data struture and perform OS-specific initialization, including adding OS sign...
Definition: Aria.cpp:128
Argument class for ArConfig.
Definition: ArConfigArg.h:75
Parse and store program command-line arguments for use by other ARIA classes.
Definition: ArArgumentParser.h:64
static void logOptions(void)
Logs all the options for the program (Calls all the callbacks added with addLogOptionsCB())
Definition: Aria.cpp:794
bool parseFile(const char *fileName, bool continueOnError=false, bool noFileNotFoundMessage=false, char *errorBuffer=NULL, size_t errorBufferLen=0, std::list< std::string > *sectionsToParse=NULL, ArPriority::Priority highestPriority=ArPriority::FIRST_PRIORITY, ArPriority::Priority lowestPriority=ArPriority::LAST_PRIORITY, ArConfigArg::RestartLevel *restartLevelNeeded=NULL)
Parse a config file.
Definition: ArConfig.cpp:1676
Intermediate things that users may want to modify.
Definition: ariaUtil.h:1852
ArConfigSection * findSection(const char *sectionName) const
Find the section with the given name.
Definition: ArConfig.cpp:2878
static bool parseArgs(void)
Parses the arguments for the program (calls all the callbacks added with addParseArgsCB())
Definition: Aria.cpp:759
bool getBool(bool *ok=NULL) const
Gets the argument value, for bool arguments.
Definition: ArConfigArg.cpp:1353
Use normal logging.
Definition: ArLog.h:62
bool addParam(const ArConfigArg &arg, const char *sectionName="", ArPriority::Priority priority=ArPriority::NORMAL, const char *displayHint=NULL, ArConfigArg::RestartLevel restart=ArConfigArg::NO_RESTART)
Command to add a parameter to the given section with given priority.
Definition: ArConfig.cpp:817
static ArConfig * getConfig(void)
Gets the ArConfig for this program.
Definition: Aria.cpp:663