diff --git a/alib2data/src/alphabet/SymbolFromXMLParser.h b/alib2data/src/alphabet/SymbolFromXMLParser.h index 3d337b147a6fc99988e76e1a2bca4ace3eb1d3dd..9195c91fdd20b6225c69d5069561502212392205 100644 --- a/alib2data/src/alphabet/SymbolFromXMLParser.h +++ b/alib2data/src/alphabet/SymbolFromXMLParser.h @@ -56,7 +56,7 @@ namespace alib { class ObjectFromXMLParser; -} /* namespace grammar */ +} /* namespace object */ namespace alphabet { diff --git a/alib2data/src/automaton/AutomatonFromXMLParser.h b/alib2data/src/automaton/AutomatonFromXMLParser.h index 58416fefb53b36bf1944a6fa0936956d19c5a7d0..dd2123f3bb3b43a5142d17f07fd001683513323f 100644 --- a/alib2data/src/automaton/AutomatonFromXMLParser.h +++ b/alib2data/src/automaton/AutomatonFromXMLParser.h @@ -33,6 +33,12 @@ struct api; } /* namespace alib */ +namespace alib { + +class ObjectFromXMLParser; + +} /* namespace alib */ + namespace automaton { /** @@ -95,6 +101,8 @@ class AutomatonFromXMLParser : public sax::FromXMLParserHelper { SinglePopNPDA parseSinglePopNPDA(std::list<sax::Token>& input) const; OneTapeDTM parseOneTapeDTM(std::list<sax::Token>& input) const; + friend class alib::ObjectFromXMLParser; + template<typename T> friend class alib::api; public: bool first(std::list<sax::Token>& input) const; diff --git a/alib2data/src/container/ContainerFromXMLParser.hpp b/alib2data/src/container/ContainerFromXMLParser.hpp index d6717b6d36be89bee9cb1e7f29622fc2d04e4979..44f56c797bedf6d0edd196cb2f0d2cedf1bcc063 100644 --- a/alib2data/src/container/ContainerFromXMLParser.hpp +++ b/alib2data/src/container/ContainerFromXMLParser.hpp @@ -19,6 +19,12 @@ struct api; } /* namespace alib */ +namespace alib { + +class ObjectFromXMLParser; + +} /* namespace alib */ + namespace container { /** @@ -31,6 +37,8 @@ public: template<typename T> std::set<T> parseSet(std::list<sax::Token>& input) const; + friend class alib::ObjectFromXMLParser; + template<typename T> friend class alib::api; }; diff --git a/alib2data/src/exception/ExceptionFromXMLParser.h b/alib2data/src/exception/ExceptionFromXMLParser.h index ce3eb59114f6a659285e4869c98802bb59d807af..904e7c2f80aa290d1c81437780b644538833cc3d 100644 --- a/alib2data/src/exception/ExceptionFromXMLParser.h +++ b/alib2data/src/exception/ExceptionFromXMLParser.h @@ -25,7 +25,7 @@ namespace alib { class ObjectFromXMLParser; -} +} /* namespace alib */ namespace exception { diff --git a/alib2data/src/grammar/GrammarFromXMLParser.h b/alib2data/src/grammar/GrammarFromXMLParser.h index b0d63f7ad9ab185dc900a5fdb477e0c2249b2bde..d1def31f874e2e246b2ad26c16f5e2e231a9424c 100644 --- a/alib2data/src/grammar/GrammarFromXMLParser.h +++ b/alib2data/src/grammar/GrammarFromXMLParser.h @@ -38,6 +38,12 @@ struct api; } /* namespace alib */ +namespace alib { + +class ObjectFromXMLParser; + +} /* namespace alib */ + namespace grammar { /** @@ -93,6 +99,8 @@ class GrammarFromXMLParser : public sax::FromXMLParserHelper { LeftRG parseLeftRG(std::list<sax::Token>& input) const; LeftLG parseLeftLG(std::list<sax::Token>& input) const; + friend class alib::ObjectFromXMLParser; + template<typename T> friend class alib::api; public: bool first(std::list<sax::Token>& input) const; diff --git a/alib2data/src/label/LabelFromXMLParser.h b/alib2data/src/label/LabelFromXMLParser.h index 8f3f27c3d8cadd9d1efc08eb12acab1d8e01fe65..df213bc8c0751efc75f138e9906f1a13e9a50027 100644 --- a/alib2data/src/label/LabelFromXMLParser.h +++ b/alib2data/src/label/LabelFromXMLParser.h @@ -38,6 +38,12 @@ class AutomatonFromXMLParser; } /* namespace automaton */ +namespace alib { + +class ObjectFromXMLParser; + +} /* namespace alib */ + namespace label { /** @@ -52,8 +58,8 @@ class LabelFromXMLParser : public sax::FromXMLParserHelper { StringLabel parseStringLabel(std::list<sax::Token>& input) const; friend class alphabet::SymbolFromXMLParser; - friend class automaton::AutomatonFromXMLParser; + friend class alib::ObjectFromXMLParser; template<typename T> friend class alib::api; public: diff --git a/alib2data/src/object/ObjectFromXMLParser.cpp b/alib2data/src/object/ObjectFromXMLParser.cpp index 07e5dab7395c145702b88a27a19567facffa8bd3..662f31b3ff78e9958399a54071581f14dd239921 100644 --- a/alib2data/src/object/ObjectFromXMLParser.cpp +++ b/alib2data/src/object/ObjectFromXMLParser.cpp @@ -23,6 +23,21 @@ Object ObjectFromXMLParser::parseObject(std::list<sax::Token>& input) const { } else if(alib::FromXMLParsers::exceptionParser.first(input)) { exception::AlibException exception = alib::FromXMLParsers::exceptionParser.parseException(input); tmp = std::move(exception).plunder(); + } else if(alib::FromXMLParsers::labelParser.first(input)) { + label::Label label = alib::FromXMLParsers::labelParser.parseLabel(input); + tmp = std::move(label.getData()).plunder(); + } else if(alib::FromXMLParsers::regexpParser.first(input)) { + regexp::RegExp regexp = alib::FromXMLParsers::regexpParser.parseRegExp(input); + tmp = std::move(regexp.getData()).plunder(); + } else if(alib::FromXMLParsers::stringParser.first(input)) { + string::String string = alib::FromXMLParsers::stringParser.parseString(input); + tmp = std::move(string.getData()).plunder(); + } else if(alib::FromXMLParsers::automatonParser.first(input)) { + automaton::Automaton automaton = alib::FromXMLParsers::automatonParser.parseAutomaton(input); + tmp = std::move(automaton.getData()).plunder(); + } else if(alib::FromXMLParsers::grammarParser.first(input)) { + grammar::Grammar grammar = alib::FromXMLParsers::grammarParser.parseGrammar(input); + tmp = std::move(grammar.getData()).plunder(); } else { throw exception::AlibException("Unknown element in xml"); } diff --git a/alib2data/src/regexp/RegExpFromXMLParser.h b/alib2data/src/regexp/RegExpFromXMLParser.h index 90779c709cca2907667d4f22829980e203bb1a4a..38f821267bde65293b7e27e360f5420cd19fcc65 100644 --- a/alib2data/src/regexp/RegExpFromXMLParser.h +++ b/alib2data/src/regexp/RegExpFromXMLParser.h @@ -29,6 +29,12 @@ class AutomatonFromXMLParser; } /* namespace automaton */ +namespace alib { + +class ObjectFromXMLParser; + +} /* namespace alib */ + namespace regexp { /** @@ -61,6 +67,7 @@ class RegExpFromXMLParser : public sax::FromXMLParserHelper { FormalRegExp parseFormalRegExp(std::list<sax::Token>& input) const; friend class automaton::AutomatonFromXMLParser; + friend class alib::ObjectFromXMLParser; template<typename T> friend class alib::api; public: diff --git a/alib2data/src/string/StringFromXMLParser.h b/alib2data/src/string/StringFromXMLParser.h index 9ccf9dbfbed589d6f4efbc453453f17d39a3297b..c00242a5ed225848cc46d5e2fae385d76ee95151 100644 --- a/alib2data/src/string/StringFromXMLParser.h +++ b/alib2data/src/string/StringFromXMLParser.h @@ -32,6 +32,12 @@ class AutomatonFromXMLParser; } /* namespace automaton */ +namespace alib { + +class ObjectFromXMLParser; + +} /* namespace alib */ + namespace string { /** @@ -49,6 +55,7 @@ class StringFromXMLParser : public sax::FromXMLParserHelper { Epsilon parseEpsilon(std::list<sax::Token>& input) const; friend class automaton::AutomatonFromXMLParser; + friend class alib::ObjectFromXMLParser; template<typename T> friend class alib::api; public: