Robolocust/lobot configuration database. More...
#include "Robots/LoBot/config/LoLexYaccDefs.H"
#include "Robots/LoBot/misc/singleton.hh"
#include "Robots/LoBot/util/LoString.H"
#include <algorithm>
#include <map>
#include <vector>
#include <string>
Go to the source code of this file.
Classes | |
class | lobot::ConfigDB |
Robolocust/lobot configuration database. More... | |
class | lobot::Configuration |
A more user-friendly API for the ConfigDB. More... | |
Defines | |
#define | LOCD_INTERNAL "__SECRET_INTERNAL_SECTION__" |
Robolocust/lobot configuration database.
This file defines a class that reads the Robolocust/lobot config file (~/.lobotrc by default or as specified by the --config-file option) and then populates a two-level map of key-value pairs that other parts of the program can use to query whatever parameters they need.
Robolocust/lobot config files are simplified INI files. See LoIniFileLexer.l and LoIniFileParser.y for the syntax rules and an illustrative example of what is allowed.
The first level of the two-level map alluded to above corresponds to sections in the INI file and the second level is for the key-value pairs of that section. Thus, the first level maps INI file section names to maps of key-value pairs. These "inner" maps map key names to their corresponding values.
Definition in file LoConfig.H.
#define LOCD_INTERNAL "__SECRET_INTERNAL_SECTION__" |
The Robolocust config file is divided into multiple sections with each section consisting of key-value pairs. There is a top-level or global section as well that appears before any other sections in the config file. In actuality, this global section is implemented as a specially named section.
In addition to the above-mentioned global section of the config file, we also have an internal section that is not meant to be used directly by users. Rather, it acts as a sort of scratch space via which different Robolocust modules can exchange bits of data without having to explicitly know each other (which greatly simplifies the overall design).
This internal section is never defined explicitly in the config file. Instead, Robolocust sets it up internally.
Definition at line 90 of file LoConfig.H.
Referenced by lobot::Configuration::set_internal().