AG_Config object records configuration settings global to an Agar application.
This includes user preferences which are to be preserved after the
application has exited.
Library or application-specific data may also be stored in the configuration object as AG_Variable(3) values. Variable names should not start with "ag_", the prefix is reserved for internal Agar settings.
Note that our AG_Variable(3) system implements pointers (or "bindings"), so it is always possible for a parameter value to be specified as a pointer to an external piece of data.
AG_ConfigObject() returns a pointer to the global agConfig object.
AG_ConfigLoad() loads the configuration data from disk, returning 0 on sucess or -1 on failure. It is equivalent to calling AG_ObjectLoad(3) on the agConfig object. Note that AG_ConfigLoad() must be called after the initialization of all Agar libraries (i.e., if an application uses Agar-GUI, then the AG_ConfigLoad() call must follow AG_InitGraphics()).
The AG_ConfigSave() function saves the configuration data to disk, returning 0 on success or -1 on failure. It is equivalent to calling AG_ObjectSave(3) on the agConfig object.
The AG_ConfigFind() function searches a list of registered paths for the given file. group may be AG_CONFIG_PATH_DATA (for object and data files), or AG_CONFIG_PATH_FONTS (for fonts). If filename is found and and the file is accessible, then its absolute pathname is copied into the fixed-size buffer dst_path (limited to dst_len bytes), and AG_ConfigFind() returns 0. If the file cannot be found, it returns -1.
AG_ConfigAddPath() adds the specified directory to the list of AG_ConfigFind() search paths.
AG_ConfigSetPath() sets the path at index idx. If there is no such entry but idx is (last)-1, then the entry is created. Otherwise AG_ConfigFind() will fail and return -1.
AG_ConfigDelPath() removes the given directory from the list of registered search paths.
The following code sets an integer option and a string.
The configuration is then immediately saved to disk:
The following Agar-GUI code displays a checkbox controlling the value of "my-setting":
The following code binds "my-ext-setting" to an external variable, and then reads the configuration from disk. If the saved configuration has "my-ext-setting" defined, then the variable will be set accordingly:
The following code dumps the currently configured paths:
|The AG_Config interface first appeared in Agar 1.0. AG_ConfigFind(), AG_ConfigAddPath(), AG_ConfigSetPath() and AG_ConfigDelPath() were introduced in Agar 1.6.0.|