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.cc81
1 files changed, 6 insertions, 75 deletions
diff --git a/i/marvin/src/config/config_data.cc b/i/marvin/src/config/config_data.cc
index 33a78c0..a8721fb 100644
--- a/i/marvin/src/config/config_data.cc
+++ b/i/marvin/src/config/config_data.cc
@@ -1,9 +1,9 @@
// config_data.cc
-// robert - programme du robot 2005. {{{
+// marvin - programme du robot 2006. {{{
//
-// Copyright (C) 2005 Nicolas Schodet
+// Copyright (C) 2006 Nicolas Schodet
//
-// Robot APB Team/Efrei 2005.
+// Robot APB Team/Efrei 2006.
// Web: http://assos.efrei.fr/robot/
// Email: robot AT efrei DOT fr
//
@@ -24,9 +24,7 @@
// }}}
#include "config.hh"
#include "config_data.hh"
-#include "parser_extra.hh"
-#include "parser.hh"
-#include "lexer.hh"
+#include "config_parser.hh"
#include <stdexcept>
@@ -68,74 +66,7 @@ ConfigData::add (const std::string &id, any &val)
void
ConfigData::init (int &argc, char **&argv, const std::string &file)
{
- parseFile (file);
-}
-
-int yyparse (void *);
-
-/// Lance le parseur sur un fichier.
-void
-ConfigData::parseFile (const std::string &file)
-{
- FILE *f;
- f = fopen (file.c_str (), "r");
- if (!f)
- throw std::runtime_error ("can not open config file \"" + file + "\"");
- try
- {
- // Crée un scanner, initialise son tampon d'entré, puis parse.
- yyscan_t scanner;
- YY_BUFFER_STATE buf;
- ParserExtra pe (*this);
- yylex_init (&scanner);
- yyset_extra (&pe, scanner);
- buf = yy_create_buffer (f, YY_READ_BUF_SIZE, scanner);
- yy_switch_to_buffer (buf, scanner);
- int ret = yyparse (scanner);
- yy_delete_buffer (buf, scanner);
- yylex_destroy (scanner);
- if (ret)
- throw std::runtime_error ("parse error");
- }
- catch (const std::runtime_error &e)
- {
- fclose (f);
- throw std::runtime_error ("in config file \"" + file + "\": "
- + e.what ());
- }
- fclose (f);
-}
-
-/// Lance le parseur sur une chaîne.
-void
-ConfigData::parseString (const std::string &s)
-{
- try
- {
- // Crée un scanner, initialise son tampon d'entré, puis parse.
- yyscan_t scanner;
- YY_BUFFER_STATE buf;
- ParserExtra pe (*this);
- yylex_init (&scanner);
- yyset_extra (&pe, scanner);
- buf = yy_scan_bytes (s.data (), s.size (), scanner);
- int ret = yyparse (scanner);
- yy_delete_buffer (buf, scanner);
- yylex_destroy (scanner);
- if (ret)
- throw std::runtime_error ("parse error");
- }
- catch (const std::runtime_error &e)
- {
- throw std::runtime_error ("in config string \"" + s + "\": "
- + e.what ());
- }
-}
-
-/* Shut up warning for this wrongly declared static function. */
-static int
-yy_init_globals (yyscan_t yyscanner)
-{
- return yy_init_globals (yyscanner);
+ ConfigParser p (*this);
+ p.parseFile (file);
}