summaryrefslogtreecommitdiff
path: root/i/marvin/src/config/config_data.cc
diff options
context:
space:
mode:
Diffstat (limited to 'i/marvin/src/config/config_data.cc')
-rw-r--r--i/marvin/src/config/config_data.cc17
1 files changed, 16 insertions, 1 deletions
diff --git a/i/marvin/src/config/config_data.cc b/i/marvin/src/config/config_data.cc
index 2642e74..b126082 100644
--- a/i/marvin/src/config/config_data.cc
+++ b/i/marvin/src/config/config_data.cc
@@ -24,7 +24,7 @@
// }}}
#include "config.hh"
#include "config_data.hh"
-#include "config_parser.hh"
+#include "parser/parser.hh"
#include <stdexcept>
@@ -75,6 +75,21 @@ ConfigData::add (const std::string &id, any &val)
a.swap (val);
}
+/// Classe dérivé de Parser pour le parsing de conf.
+class ConfigParser : public Parser
+{
+ ConfigData &data_;
+ public:
+ /// Constructeur.
+ ConfigParser (ConfigData &data) : data_ (data) { }
+ /// Fonction appelée lors d'une affectation. VAL peut être modifié, il est
+ /// détruit suite à l'appel.
+ virtual void assign (const std::string &id, any &val)
+ {
+ data_.add (id, val);
+ }
+};
+
/// Initialise (lit la ligne de commande et les fichiers de config.
void
ConfigData::init (int &argc, char **&argv, const std::string &file)