From 7569bf5773c00e2d36b9f66f6c2578a902704cf9 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Sun, 19 Jun 2016 22:13:58 +0200 Subject: [PATCH] fix possible segmentation fault --- alib2common/src/XmlApi.hpp | 30 +++++++++---------- alib2common/src/exception/CommonException.cpp | 10 +++---- alib2common/src/exception/CommonException.h | 6 +++- alib2common/src/object/Object.cpp | 8 +---- alib2common/src/object/Object.h | 6 +++- alib2common/src/object/Void.cpp | 10 +++---- alib2common/src/object/Void.h | 6 +++- alib2data/src/alphabet/BarSymbol.cpp | 10 +++---- alib2data/src/alphabet/BarSymbol.h | 6 +++- alib2data/src/alphabet/BlankSymbol.cpp | 10 +++---- alib2data/src/alphabet/BlankSymbol.h | 6 +++- .../src/alphabet/BottomOfTheStackSymbol.cpp | 10 +++---- .../src/alphabet/BottomOfTheStackSymbol.h | 6 +++- alib2data/src/alphabet/EndSymbol.cpp | 10 +++---- alib2data/src/alphabet/EndSymbol.h | 6 +++- alib2data/src/alphabet/LabeledSymbol.cpp | 10 +++---- alib2data/src/alphabet/LabeledSymbol.h | 6 +++- .../src/alphabet/NonlinearVariableSymbol.cpp | 10 +++---- .../src/alphabet/NonlinearVariableSymbol.h | 6 +++- alib2data/src/alphabet/RankedSymbol.cpp | 10 +++---- alib2data/src/alphabet/RankedSymbol.h | 6 +++- alib2data/src/alphabet/StartSymbol.cpp | 10 +++---- alib2data/src/alphabet/StartSymbol.h | 6 +++- .../src/alphabet/SubtreeWildcardSymbol.cpp | 10 +++---- .../src/alphabet/SubtreeWildcardSymbol.h | 6 +++- alib2data/src/alphabet/Symbol.cpp | 2 -- alib2data/src/alphabet/Symbol.h | 6 +++- alib2data/src/alphabet/SymbolPairSymbol.cpp | 10 +++---- alib2data/src/alphabet/SymbolPairSymbol.h | 6 +++- alib2data/src/alphabet/SymbolSetSymbol.cpp | 10 +++---- alib2data/src/alphabet/SymbolSetSymbol.h | 6 +++- alib2data/src/alphabet/UniqueSymbol.cpp | 10 +++---- alib2data/src/alphabet/UniqueSymbol.h | 6 +++- alib2data/src/alphabet/VariablesBarSymbol.cpp | 10 +++---- alib2data/src/alphabet/VariablesBarSymbol.h | 6 +++- alib2data/src/automaton/Automaton.cpp | 2 -- alib2data/src/automaton/Automaton.h | 6 +++- alib2data/src/automaton/FSM/CompactNFA.cpp | 12 ++++---- alib2data/src/automaton/FSM/CompactNFA.h | 6 +++- alib2data/src/automaton/FSM/DFA.cpp | 10 +++---- alib2data/src/automaton/FSM/DFA.h | 6 +++- alib2data/src/automaton/FSM/EpsilonNFA.cpp | 12 ++++---- alib2data/src/automaton/FSM/EpsilonNFA.h | 6 +++- alib2data/src/automaton/FSM/ExtendedNFA.cpp | 12 ++++---- alib2data/src/automaton/FSM/ExtendedNFA.h | 6 +++- .../automaton/FSM/MultiInitialStateNFA.cpp | 12 ++++---- .../src/automaton/FSM/MultiInitialStateNFA.h | 6 +++- alib2data/src/automaton/FSM/NFA.cpp | 12 ++++---- alib2data/src/automaton/FSM/NFA.h | 6 +++- alib2data/src/automaton/PDA/DPDA.cpp | 12 ++++---- alib2data/src/automaton/PDA/DPDA.h | 6 +++- .../src/automaton/PDA/InputDrivenDPDA.cpp | 10 +++---- alib2data/src/automaton/PDA/InputDrivenDPDA.h | 6 +++- .../src/automaton/PDA/InputDrivenNPDA.cpp | 10 +++---- alib2data/src/automaton/PDA/InputDrivenNPDA.h | 6 +++- alib2data/src/automaton/PDA/NPDA.cpp | 12 ++++---- alib2data/src/automaton/PDA/NPDA.h | 6 +++- alib2data/src/automaton/PDA/NPDTA.cpp | 12 ++++---- alib2data/src/automaton/PDA/NPDTA.h | 6 +++- .../PDA/RealTimeHeightDeterministicDPDA.cpp | 12 ++++---- .../PDA/RealTimeHeightDeterministicDPDA.h | 6 +++- .../PDA/RealTimeHeightDeterministicNPDA.cpp | 12 ++++---- .../PDA/RealTimeHeightDeterministicNPDA.h | 6 +++- alib2data/src/automaton/PDA/SinglePopDPDA.cpp | 10 +++---- alib2data/src/automaton/PDA/SinglePopDPDA.h | 6 +++- alib2data/src/automaton/PDA/SinglePopNPDA.cpp | 10 +++---- alib2data/src/automaton/PDA/SinglePopNPDA.h | 6 +++- .../src/automaton/PDA/VisiblyPushdownDPDA.cpp | 10 +++---- .../src/automaton/PDA/VisiblyPushdownDPDA.h | 6 +++- .../src/automaton/PDA/VisiblyPushdownNPDA.cpp | 10 +++---- .../src/automaton/PDA/VisiblyPushdownNPDA.h | 6 +++- alib2data/src/automaton/TA/DFTA.cpp | 10 +++---- alib2data/src/automaton/TA/DFTA.h | 6 +++- alib2data/src/automaton/TA/NFTA.cpp | 10 +++---- alib2data/src/automaton/TA/NFTA.h | 6 +++- alib2data/src/automaton/TM/OneTapeDTM.cpp | 10 +++---- alib2data/src/automaton/TM/OneTapeDTM.h | 6 +++- alib2data/src/automaton/common/State.cpp | 4 +-- alib2data/src/automaton/common/State.h | 8 +++-- alib2data/src/container/Container.cpp | 7 +---- alib2data/src/container/Container.h | 6 +++- alib2data/src/container/ObjectsDeque.cpp | 2 -- alib2data/src/container/ObjectsDeque.h | 16 ++++++---- alib2data/src/container/ObjectsList.cpp | 2 -- alib2data/src/container/ObjectsList.h | 16 ++++++---- alib2data/src/container/ObjectsMap.cpp | 2 -- alib2data/src/container/ObjectsMap.h | 16 ++++++---- alib2data/src/container/ObjectsPair.cpp | 2 -- alib2data/src/container/ObjectsPair.h | 16 ++++++---- alib2data/src/container/ObjectsSet.cpp | 2 -- alib2data/src/container/ObjectsSet.h | 16 ++++++---- alib2data/src/container/ObjectsTuple.cpp | 14 --------- alib2data/src/container/ObjectsTuple.h | 16 ++++++---- alib2data/src/container/ObjectsVector.cpp | 2 -- alib2data/src/container/ObjectsVector.h | 16 ++++++---- alib2data/src/grammar/ContextFree/CFG.cpp | 12 ++++---- alib2data/src/grammar/ContextFree/CFG.h | 6 +++- alib2data/src/grammar/ContextFree/CNF.cpp | 10 +++---- alib2data/src/grammar/ContextFree/CNF.h | 6 +++- .../grammar/ContextFree/EpsilonFreeCFG.cpp | 10 +++---- .../src/grammar/ContextFree/EpsilonFreeCFG.h | 6 +++- alib2data/src/grammar/ContextFree/GNF.cpp | 10 +++---- alib2data/src/grammar/ContextFree/GNF.h | 6 +++- alib2data/src/grammar/ContextFree/LG.cpp | 10 +++---- alib2data/src/grammar/ContextFree/LG.h | 6 +++- .../src/grammar/ContextSensitive/CSG.cpp | 10 +++---- alib2data/src/grammar/ContextSensitive/CSG.h | 6 +++- .../NonContractingGrammar.cpp | 10 +++---- .../ContextSensitive/NonContractingGrammar.h | 6 +++- alib2data/src/grammar/Grammar.cpp | 6 ---- alib2data/src/grammar/Grammar.h | 6 +++- alib2data/src/grammar/Regular/LeftLG.cpp | 10 +++---- alib2data/src/grammar/Regular/LeftLG.h | 6 +++- alib2data/src/grammar/Regular/LeftRG.cpp | 10 +++---- alib2data/src/grammar/Regular/LeftRG.h | 6 +++- alib2data/src/grammar/Regular/RightLG.cpp | 10 +++---- alib2data/src/grammar/Regular/RightLG.h | 6 +++- alib2data/src/grammar/Regular/RightRG.cpp | 10 +++---- alib2data/src/grammar/Regular/RightRG.h | 6 +++- .../ContextPreservingUnrestrictedGrammar.cpp | 10 +++---- .../ContextPreservingUnrestrictedGrammar.h | 6 +++- .../Unrestricted/UnrestrictedGrammar.cpp | 10 +++---- .../Unrestricted/UnrestrictedGrammar.h | 6 +++- alib2data/src/graph/Graph.cpp | 7 +---- alib2data/src/graph/Graph.h | 6 +++- alib2data/src/graph/GraphBase.h | 2 -- alib2data/src/graph/common/Macros.h | 12 -------- alib2data/src/graph/common/Node.h | 19 +++++++----- .../directed/AdjacencyListDirectedGraph.cpp | 10 +++---- .../directed/AdjacencyListDirectedGraph.h | 17 +++++------ .../directed/AdjacencyMatrixDirectedGraph.cpp | 10 +++---- .../directed/AdjacencyMatrixDirectedGraph.h | 15 +++++----- alib2data/src/graph/directed/DirectedEdge.h | 23 ++++++++------ .../src/graph/directed/DirectedGraph.cpp | 10 +++---- alib2data/src/graph/directed/DirectedGraph.h | 18 +++++------ .../AdjacencyListUndirectedGraph.cpp | 10 +++---- .../undirected/AdjacencyListUndirectedGraph.h | 15 +++++----- .../AdjacencyMatrixUndirectedGraph.cpp | 10 +++---- .../AdjacencyMatrixUndirectedGraph.h | 15 +++++----- .../src/graph/undirected/UndirectedEdge.h | 23 ++++++++------ .../src/graph/undirected/UndirectedGraph.cpp | 10 +++---- .../src/graph/undirected/UndirectedGraph.h | 18 +++++------ .../suffixTrie/SuffixTrieFinalMark.cpp | 10 +++---- .../indexes/suffixTrie/SuffixTrieFinalMark.h | 6 +++- .../SuffixTrieTerminatingSymbol.cpp | 10 +++---- .../suffixTrie/SuffixTrieTerminatingSymbol.h | 6 +++- alib2data/src/label/HexavigesimalLabel.cpp | 10 +++---- alib2data/src/label/HexavigesimalLabel.h | 6 +++- alib2data/src/label/LR0ItemsLabel.cpp | 10 +++---- alib2data/src/label/LR0ItemsLabel.h | 6 +++- alib2data/src/label/Label.cpp | 2 -- alib2data/src/label/Label.h | 6 +++- alib2data/src/label/LabelPairLabel.cpp | 10 +++---- alib2data/src/label/LabelPairLabel.h | 6 +++- alib2data/src/label/LabelSetLabel.cpp | 10 +++---- alib2data/src/label/LabelSetLabel.h | 6 +++- alib2data/src/label/ObjectLabel.cpp | 10 +++---- alib2data/src/label/ObjectLabel.h | 6 +++- alib2data/src/label/PrimitiveLabel.cpp | 10 +++---- alib2data/src/label/PrimitiveLabel.h | 6 +++- alib2data/src/label/UniqueLabel.cpp | 10 +++---- alib2data/src/label/UniqueLabel.h | 6 +++- alib2data/src/primitive/Bool.cpp | 12 ++++---- alib2data/src/primitive/Bool.h | 6 +++- alib2data/src/primitive/Character.cpp | 12 ++++---- alib2data/src/primitive/Character.h | 6 +++- alib2data/src/primitive/Integer.cpp | 12 ++++---- alib2data/src/primitive/Integer.h | 6 +++- alib2data/src/primitive/Primitive.cpp | 2 -- alib2data/src/primitive/Primitive.h | 6 +++- alib2data/src/primitive/String.cpp | 12 ++++---- alib2data/src/primitive/String.h | 6 +++- alib2data/src/primitive/Unsigned.cpp | 12 ++++---- alib2data/src/primitive/Unsigned.h | 6 +++- alib2data/src/regexp/RegExp.cpp | 2 -- alib2data/src/regexp/RegExp.h | 6 +++- alib2data/src/regexp/formal/FormalRegExp.cpp | 12 ++++---- alib2data/src/regexp/formal/FormalRegExp.h | 6 +++- .../src/regexp/unbounded/UnboundedRegExp.cpp | 12 ++++---- .../src/regexp/unbounded/UnboundedRegExp.h | 6 +++- alib2data/src/string/CyclicString.cpp | 12 ++++---- alib2data/src/string/CyclicString.h | 6 +++- alib2data/src/string/Epsilon.cpp | 10 +++---- alib2data/src/string/Epsilon.h | 6 +++- alib2data/src/string/LinearString.cpp | 12 ++++---- alib2data/src/string/LinearString.h | 6 +++- .../string/LinearStringTerminatingSymbol.cpp | 10 +++---- .../string/LinearStringTerminatingSymbol.h | 6 +++- alib2data/src/string/String.cpp | 2 -- alib2data/src/string/String.h | 6 +++- alib2data/src/tree/RankedTreeWrapper.cpp | 2 -- alib2data/src/tree/RankedTreeWrapper.h | 6 +++- alib2data/src/tree/Tree.cpp | 6 ---- alib2data/src/tree/Tree.h | 6 +++- alib2data/src/tree/UnrankedTreeWrapper.cpp | 2 -- alib2data/src/tree/UnrankedTreeWrapper.h | 6 +++- .../tree/ranked/PrefixRankedBarPattern.cpp | 12 ++++---- .../src/tree/ranked/PrefixRankedBarPattern.h | 6 +++- .../src/tree/ranked/PrefixRankedBarTree.cpp | 12 ++++---- .../src/tree/ranked/PrefixRankedBarTree.h | 6 +++- .../src/tree/ranked/PrefixRankedPattern.cpp | 12 ++++---- .../src/tree/ranked/PrefixRankedPattern.h | 6 +++- .../src/tree/ranked/PrefixRankedTree.cpp | 12 ++++---- alib2data/src/tree/ranked/PrefixRankedTree.h | 6 +++- .../tree/ranked/RankedNonlinearPattern.cpp | 10 +++---- .../src/tree/ranked/RankedNonlinearPattern.h | 6 +++- alib2data/src/tree/ranked/RankedPattern.cpp | 12 ++++---- alib2data/src/tree/ranked/RankedPattern.h | 6 +++- alib2data/src/tree/ranked/RankedTree.cpp | 12 ++++---- alib2data/src/tree/ranked/RankedTree.h | 6 +++- alib2data/src/tree/unranked/PrefixBarTree.cpp | 12 ++++---- alib2data/src/tree/unranked/PrefixBarTree.h | 6 +++- .../unranked/UnrankedNonlinearPattern.cpp | 10 +++---- .../tree/unranked/UnrankedNonlinearPattern.h | 6 +++- .../src/tree/unranked/UnrankedPattern.cpp | 12 ++++---- alib2data/src/tree/unranked/UnrankedPattern.h | 6 +++- alib2data/src/tree/unranked/UnrankedTree.cpp | 12 ++++---- alib2data/src/tree/unranked/UnrankedTree.h | 6 +++- 218 files changed, 1008 insertions(+), 859 deletions(-) delete mode 100644 alib2data/src/container/ObjectsTuple.cpp diff --git a/alib2common/src/XmlApi.hpp b/alib2common/src/XmlApi.hpp index 977af5d9e0..83f5950a85 100644 --- a/alib2common/src/XmlApi.hpp +++ b/alib2common/src/XmlApi.hpp @@ -103,7 +103,7 @@ public: public: InputContextDeleter ( ) { std::function < void ( void * ) > deleteCallback = [] ( void * pointer ) { delete ( Group * ) pointer; }; - xmlApiInputContext::deleteCallbacks ( ).insert ( std::make_pair ( Group::XML_TAG_NAME_REF, deleteCallback ) ); + xmlApiInputContext::deleteCallbacks ( ).insert ( std::make_pair ( Group::getXmlTagRefName(), deleteCallback ) ); } }; @@ -114,7 +114,7 @@ public: public: ParserRegister ( ) : parseFunction ( Type::parse ) { - parseFunctions ( ).insert ( std::make_pair ( Type::XML_TAG_NAME, this ) ); + parseFunctions ( ).insert ( std::make_pair ( Type::getXmlTagName(), this ) ); } virtual Group parse ( std::deque < sax::Token >::iterator & input ) { @@ -127,15 +127,15 @@ public: xmlApiInputContext & input = ( xmlApiInputContext & ) data; const std::string & tagName = sax::FromXMLParserHelper::getTokenData ( input, sax::Token::TokenType::START_ELEMENT ); - if ( tagName == Group::XML_TAG_NAME_REF ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, Group::XML_TAG_NAME_REF ); + if ( tagName == Group::getXmlTagRefName() ) { + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, Group::getXmlTagRefName() ); sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ATTRIBUTE, "id" ); int id = std::stoi ( sax::FromXMLParserHelper::popTokenData ( input, sax::Token::TokenType::CHARACTER ) ); sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ATTRIBUTE, "id" ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, Group::XML_TAG_NAME_REF ); - std::map < int, void * >::iterator elem = input.idToInstance ( Group::XML_TAG_NAME_REF ).find ( id ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, Group::getXmlTagRefName() ); + std::map < int, void * >::iterator elem = input.idToInstance ( Group::getXmlTagRefName() ).find ( id ); - if ( elem == input.idToInstance ( Group::XML_TAG_NAME_REF ).end ( ) ) throw exception::CommonException ( "XML Inconsistent" ); + if ( elem == input.idToInstance ( Group::getXmlTagRefName() ).end ( ) ) throw exception::CommonException ( "XML Inconsistent" ); return * ( ( Group * ) elem->second ); } else { @@ -144,7 +144,7 @@ public: if ( callback == parseFunctions ( ).end ( ) ) throw exception::CommonException ( "Parse callback for " + tagName + " tag not registered." ); Group * res = new Group ( callback->second->parse ( input ) ); - input.idToInstance ( Group::XML_TAG_NAME_REF ).insert ( std::make_pair ( input.idToInstanceMax ( Group::XML_TAG_NAME_REF )++, ( void * ) res ) ); + input.idToInstance ( Group::getXmlTagRefName() ).insert ( std::make_pair ( input.idToInstanceMax ( Group::getXmlTagRefName() )++, ( void * ) res ) ); return * res; } } @@ -152,7 +152,7 @@ public: static bool first ( const std::deque < sax::Token >::const_iterator & input ) { const std::string & tagName = sax::FromXMLParserHelper::getTokenData ( input, sax::Token::TokenType::START_ELEMENT ); - if ( tagName == Group::XML_TAG_NAME_REF ) return true; + if ( tagName == Group::getXmlTagRefName() ) return true; typename std::map < std::string, ParserRegisterBase * >::iterator callback = parseFunctions ( ).find ( tagName ); @@ -164,17 +164,17 @@ public: static void compose ( std::deque < sax::Token > & output, const Group & data ) { xmlApiOutputContext & context = ( xmlApiOutputContext & ) output; - typename std::map < void *, int >::iterator elem = context.instanceToId ( Group::XML_TAG_NAME_REF ).find ( ( void * ) & data.getData ( ) ); + typename std::map < void *, int >::iterator elem = context.instanceToId ( Group::getXmlTagRefName() ).find ( ( void * ) & data.getData ( ) ); - if ( elem == context.instanceToId ( Group::XML_TAG_NAME_REF ).end ( ) ) { + if ( elem == context.instanceToId ( Group::getXmlTagRefName() ).end ( ) ) { data.getData ( ).compose ( output ); - context.instanceToId ( Group::XML_TAG_NAME_REF ).insert ( std::make_pair ( ( void * ) & data.getData ( ), context.instanceToIdMax ( Group::XML_TAG_NAME_REF )++ ) ); + context.instanceToId ( Group::getXmlTagRefName() ).insert ( std::make_pair ( ( void * ) & data.getData ( ), context.instanceToIdMax ( Group::getXmlTagRefName() )++ ) ); } else { - output.emplace_back ( Group::XML_TAG_NAME_REF, sax::Token::TokenType::START_ELEMENT ); + output.emplace_back ( Group::getXmlTagRefName(), sax::Token::TokenType::START_ELEMENT ); output.emplace_back ( "id", sax::Token::TokenType::START_ATTRIBUTE ); output.emplace_back ( std::itos ( elem->second ), sax::Token::TokenType::CHARACTER ); output.emplace_back ( "id", sax::Token::TokenType::END_ATTRIBUTE ); - output.emplace_back ( Group::XML_TAG_NAME_REF, sax::Token::TokenType::END_ELEMENT ); + output.emplace_back ( Group::getXmlTagRefName(), sax::Token::TokenType::END_ELEMENT ); } } @@ -187,7 +187,7 @@ struct xmlApi < Type, typename std::enable_if < std::is_base_of < ObjectBase, Ty } static bool first ( const std::deque < sax::Token >::const_iterator & input ) { - return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, Type::XML_TAG_NAME ); + return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, Type::getXmlTagName() ); } static void compose ( std::deque < sax::Token > & output, const Type & data ) { diff --git a/alib2common/src/exception/CommonException.cpp b/alib2common/src/exception/CommonException.cpp index 82bd8dd3d9..70d188b9c6 100644 --- a/alib2common/src/exception/CommonException.cpp +++ b/alib2common/src/exception/CommonException.cpp @@ -70,10 +70,8 @@ CommonException::operator std::string() const { return this->whatMessage; } -const std::string CommonException::XML_TAG_NAME = "CommonException"; - CommonException CommonException::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, CommonException::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, CommonException::getXmlTagName()); sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "cause"); std::string cause = ""; if (input->getType() == sax::Token::TokenType::CHARACTER) { @@ -95,12 +93,12 @@ CommonException CommonException::parse(std::deque<sax::Token>::iterator& input) ++input; } sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "command"); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, CommonException::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, CommonException::getXmlTagName()); return CommonException(std::move(cause), std::move(backtrace), std::move(command)); } void CommonException::compose(std::deque<sax::Token>& out) const { - out.emplace_back(CommonException::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(CommonException::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); out.emplace_back("cause", sax::Token::TokenType::START_ELEMENT); out.emplace_back(cause, sax::Token::TokenType::CHARACTER); out.emplace_back("cause", sax::Token::TokenType::END_ELEMENT); @@ -110,7 +108,7 @@ void CommonException::compose(std::deque<sax::Token>& out) const { out.emplace_back("command", sax::Token::TokenType::START_ELEMENT); out.emplace_back(command, sax::Token::TokenType::CHARACTER); out.emplace_back("command", sax::Token::TokenType::END_ELEMENT); - out.emplace_back(CommonException::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(CommonException::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } } /* namespace exception */ diff --git a/alib2common/src/exception/CommonException.h b/alib2common/src/exception/CommonException.h index 0f697f0f72..122a6315cc 100644 --- a/alib2common/src/exception/CommonException.h +++ b/alib2common/src/exception/CommonException.h @@ -65,7 +65,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "CommonException"; + + return xmlTagName; + } static CommonException parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2common/src/object/Object.cpp b/alib2common/src/object/Object.cpp index 9d56805989..895fbc3814 100644 --- a/alib2common/src/object/Object.cpp +++ b/alib2common/src/object/Object.cpp @@ -6,13 +6,7 @@ */ #include "Object.h" - #include "../XmlApi.hpp" - -namespace alib { - -const std::string Object::XML_TAG_NAME_REF = "ObjectRef"; - -} /* namespace alib */ +#include "../XmlApi.hpp" namespace alib { diff --git a/alib2common/src/object/Object.h b/alib2common/src/object/Object.h index 3d803b0ba9..cc0930c2c0 100644 --- a/alib2common/src/object/Object.h +++ b/alib2common/src/object/Object.h @@ -20,7 +20,11 @@ class Object : public alib::WrapperBase < ObjectBase > { using alib::WrapperBase < ObjectBase >::WrapperBase; public: - const static std::string XML_TAG_NAME_REF; + static const std::string & getXmlTagRefName() { + static std::string xmlTagName = "ObjectRef"; + + return xmlTagName; + } }; } /* namespace alib */ diff --git a/alib2common/src/object/Void.cpp b/alib2common/src/object/Void.cpp index b3b7a31e0c..b249a3cdf3 100644 --- a/alib2common/src/object/Void.cpp +++ b/alib2common/src/object/Void.cpp @@ -38,17 +38,15 @@ Void::operator std::string () const { Void Void::VOID = Void(); -const std::string Void::XML_TAG_NAME = "Void"; - Void Void::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, Void::XML_TAG_NAME); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, Void::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, Void::getXmlTagName()); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, Void::getXmlTagName()); return Void(); } void Void::compose(std::deque<sax::Token>& out) const { - out.emplace_back(Void::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); - out.emplace_back(Void::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(Void::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); + out.emplace_back(Void::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } } /* namespace alib */ diff --git a/alib2common/src/object/Void.h b/alib2common/src/object/Void.h index 0bed0e5565..e8fcc8fae7 100644 --- a/alib2common/src/object/Void.h +++ b/alib2common/src/object/Void.h @@ -42,7 +42,11 @@ public: static Void VOID; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "Void"; + + return xmlTagName; + } static Void parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/alphabet/BarSymbol.cpp b/alib2data/src/alphabet/BarSymbol.cpp index 7eb612a332..36630a4049 100644 --- a/alib2data/src/alphabet/BarSymbol.cpp +++ b/alib2data/src/alphabet/BarSymbol.cpp @@ -41,17 +41,15 @@ BarSymbol::operator std::string () const { BarSymbol BarSymbol::BAR = BarSymbol ( ); Symbol BarSymbol::BAR_SYMBOL = Symbol ( BarSymbol ( ) ); -const std::string BarSymbol::XML_TAG_NAME = "BarSymbol"; - BarSymbol BarSymbol::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, BarSymbol::XML_TAG_NAME); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, BarSymbol::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, BarSymbol::getXmlTagName()); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, BarSymbol::getXmlTagName()); return BarSymbol(); } void BarSymbol::compose(std::deque<sax::Token>& out) const { - out.emplace_back(BarSymbol::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); - out.emplace_back(BarSymbol::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(BarSymbol::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); + out.emplace_back(BarSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } SymbolBase* BarSymbol::next() const { diff --git a/alib2data/src/alphabet/BarSymbol.h b/alib2data/src/alphabet/BarSymbol.h index 350ad3a8b9..684ecd1cc0 100644 --- a/alib2data/src/alphabet/BarSymbol.h +++ b/alib2data/src/alphabet/BarSymbol.h @@ -42,7 +42,11 @@ public: static BarSymbol BAR; static Symbol BAR_SYMBOL; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "BarSymbol"; + + return xmlTagName; + } static BarSymbol parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/alphabet/BlankSymbol.cpp b/alib2data/src/alphabet/BlankSymbol.cpp index 8383d38138..a876285600 100644 --- a/alib2data/src/alphabet/BlankSymbol.cpp +++ b/alib2data/src/alphabet/BlankSymbol.cpp @@ -41,17 +41,15 @@ BlankSymbol::operator std::string () const { BlankSymbol BlankSymbol::BLANK = BlankSymbol ( ); Symbol BlankSymbol::BLANK_SYMBOL = Symbol ( BlankSymbol ( ) ); -const std::string BlankSymbol::XML_TAG_NAME = "BlankSymbol"; - BlankSymbol BlankSymbol::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, BlankSymbol::XML_TAG_NAME); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, BlankSymbol::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, BlankSymbol::getXmlTagName()); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, BlankSymbol::getXmlTagName()); return BlankSymbol(); } void BlankSymbol::compose(std::deque<sax::Token>& out) const { - out.emplace_back(BlankSymbol::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); - out.emplace_back(BlankSymbol::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(BlankSymbol::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); + out.emplace_back(BlankSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } SymbolBase* BlankSymbol::next() const { diff --git a/alib2data/src/alphabet/BlankSymbol.h b/alib2data/src/alphabet/BlankSymbol.h index 45eb16caae..102eec43e8 100644 --- a/alib2data/src/alphabet/BlankSymbol.h +++ b/alib2data/src/alphabet/BlankSymbol.h @@ -42,7 +42,11 @@ public: static BlankSymbol BLANK; static Symbol BLANK_SYMBOL; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "BlankSymbol"; + + return xmlTagName; + } static BlankSymbol parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/alphabet/BottomOfTheStackSymbol.cpp b/alib2data/src/alphabet/BottomOfTheStackSymbol.cpp index a1545fd1ae..e62a367cbb 100644 --- a/alib2data/src/alphabet/BottomOfTheStackSymbol.cpp +++ b/alib2data/src/alphabet/BottomOfTheStackSymbol.cpp @@ -41,17 +41,15 @@ BottomOfTheStackSymbol::operator std::string () const { BottomOfTheStackSymbol BottomOfTheStackSymbol::BOTTOM_OF_THE_STACK = BottomOfTheStackSymbol ( ); Symbol BottomOfTheStackSymbol::BOTTOM_OF_THE_STACK_SYMBOL = Symbol ( BottomOfTheStackSymbol ( ) ); -const std::string BottomOfTheStackSymbol::XML_TAG_NAME = "BottomOfTheStackSymbol"; - BottomOfTheStackSymbol BottomOfTheStackSymbol::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, BottomOfTheStackSymbol::XML_TAG_NAME); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, BottomOfTheStackSymbol::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, BottomOfTheStackSymbol::getXmlTagName()); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, BottomOfTheStackSymbol::getXmlTagName()); return BottomOfTheStackSymbol(); } void BottomOfTheStackSymbol::compose(std::deque<sax::Token>& out) const { - out.emplace_back(BottomOfTheStackSymbol::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); - out.emplace_back(BottomOfTheStackSymbol::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(BottomOfTheStackSymbol::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); + out.emplace_back(BottomOfTheStackSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } SymbolBase* BottomOfTheStackSymbol::next() const { diff --git a/alib2data/src/alphabet/BottomOfTheStackSymbol.h b/alib2data/src/alphabet/BottomOfTheStackSymbol.h index ecf0636547..a745d7e366 100644 --- a/alib2data/src/alphabet/BottomOfTheStackSymbol.h +++ b/alib2data/src/alphabet/BottomOfTheStackSymbol.h @@ -42,7 +42,11 @@ public: static BottomOfTheStackSymbol BOTTOM_OF_THE_STACK; static Symbol BOTTOM_OF_THE_STACK_SYMBOL; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "BottomOfTheStackSymbol"; + + return xmlTagName; + } static BottomOfTheStackSymbol parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/alphabet/EndSymbol.cpp b/alib2data/src/alphabet/EndSymbol.cpp index 792c80185a..dd856cfe4f 100644 --- a/alib2data/src/alphabet/EndSymbol.cpp +++ b/alib2data/src/alphabet/EndSymbol.cpp @@ -41,17 +41,15 @@ EndSymbol::operator std::string () const { EndSymbol EndSymbol::END = EndSymbol ( ); Symbol EndSymbol::END_SYMBOL = Symbol ( EndSymbol ( ) ); -const std::string EndSymbol::XML_TAG_NAME = "EndSymbol"; - EndSymbol EndSymbol::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, EndSymbol::XML_TAG_NAME); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, EndSymbol::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, EndSymbol::getXmlTagName()); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, EndSymbol::getXmlTagName()); return EndSymbol(); } void EndSymbol::compose(std::deque<sax::Token>& out) const { - out.emplace_back(EndSymbol::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); - out.emplace_back(EndSymbol::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(EndSymbol::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); + out.emplace_back(EndSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } SymbolBase* EndSymbol::next() const { diff --git a/alib2data/src/alphabet/EndSymbol.h b/alib2data/src/alphabet/EndSymbol.h index 377eb2d36e..428628553c 100644 --- a/alib2data/src/alphabet/EndSymbol.h +++ b/alib2data/src/alphabet/EndSymbol.h @@ -42,7 +42,11 @@ public: static EndSymbol END; static Symbol END_SYMBOL; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "EndSymbol"; + + return xmlTagName; + } static EndSymbol parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/alphabet/LabeledSymbol.cpp b/alib2data/src/alphabet/LabeledSymbol.cpp index 5cefece0e3..0de76fa06c 100644 --- a/alib2data/src/alphabet/LabeledSymbol.cpp +++ b/alib2data/src/alphabet/LabeledSymbol.cpp @@ -57,19 +57,17 @@ LabeledSymbol::operator std::string () const { return (std::string) label; } -const std::string LabeledSymbol::XML_TAG_NAME = "LabeledSymbol"; - LabeledSymbol LabeledSymbol::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, LabeledSymbol::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, LabeledSymbol::getXmlTagName()); label::Label data = alib::xmlApi<label::Label>::parse(input); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, LabeledSymbol::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, LabeledSymbol::getXmlTagName()); return LabeledSymbol(std::move(data)); } void LabeledSymbol::compose(std::deque<sax::Token>& out) const { - out.emplace_back(LabeledSymbol::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(LabeledSymbol::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); alib::xmlApi<label::Label>::compose(out, label); - out.emplace_back(LabeledSymbol::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(LabeledSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } SymbolBase* LabeledSymbol::next() const { diff --git a/alib2data/src/alphabet/LabeledSymbol.h b/alib2data/src/alphabet/LabeledSymbol.h index 8c02621559..a3dda5d2a3 100644 --- a/alib2data/src/alphabet/LabeledSymbol.h +++ b/alib2data/src/alphabet/LabeledSymbol.h @@ -53,7 +53,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "LabeledSymbol"; + + return xmlTagName; + } static LabeledSymbol parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/alphabet/NonlinearVariableSymbol.cpp b/alib2data/src/alphabet/NonlinearVariableSymbol.cpp index f58bea6d8c..e40117a955 100644 --- a/alib2data/src/alphabet/NonlinearVariableSymbol.cpp +++ b/alib2data/src/alphabet/NonlinearVariableSymbol.cpp @@ -46,20 +46,18 @@ NonlinearVariableSymbol::operator std::string ( ) const { return "$" + ( std::string ) symbol; } -const std::string NonlinearVariableSymbol::XML_TAG_NAME = "NonlinearVariableSymbol"; - NonlinearVariableSymbol NonlinearVariableSymbol::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, NonlinearVariableSymbol::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, NonlinearVariableSymbol::getXmlTagName() ); alphabet::Symbol data = alib::xmlApi < alphabet::Symbol >::parse ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, NonlinearVariableSymbol::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, NonlinearVariableSymbol::getXmlTagName() ); return NonlinearVariableSymbol ( data ); } void NonlinearVariableSymbol::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( NonlinearVariableSymbol::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( NonlinearVariableSymbol::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); alib::xmlApi < alphabet::Symbol >::compose ( out, symbol ); - out.emplace_back ( NonlinearVariableSymbol::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( NonlinearVariableSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } SymbolBase * NonlinearVariableSymbol::next ( ) const { diff --git a/alib2data/src/alphabet/NonlinearVariableSymbol.h b/alib2data/src/alphabet/NonlinearVariableSymbol.h index 6feb621778..f5bcbf0f9a 100644 --- a/alib2data/src/alphabet/NonlinearVariableSymbol.h +++ b/alib2data/src/alphabet/NonlinearVariableSymbol.h @@ -45,7 +45,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "NonlinearVariableSymbol"; + + return xmlTagName; + } static NonlinearVariableSymbol parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/alphabet/RankedSymbol.cpp b/alib2data/src/alphabet/RankedSymbol.cpp index 3e3275049b..3d92f352c9 100644 --- a/alib2data/src/alphabet/RankedSymbol.cpp +++ b/alib2data/src/alphabet/RankedSymbol.cpp @@ -63,21 +63,19 @@ RankedSymbol::operator std::string () const { return (std::string) symbol + "_" + (std::string) rank; } -const std::string RankedSymbol::XML_TAG_NAME = "RankedSymbol"; - RankedSymbol RankedSymbol::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, RankedSymbol::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, RankedSymbol::getXmlTagName()); alphabet::Symbol data = alib::xmlApi<alphabet::Symbol>::parse(input); primitive::Unsigned rank = alib::xmlApi<primitive::Unsigned>::parse(input); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, RankedSymbol::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, RankedSymbol::getXmlTagName()); return RankedSymbol(std::move(data), std::move(rank)); } void RankedSymbol::compose(std::deque<sax::Token>& out) const { - out.emplace_back(RankedSymbol::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(RankedSymbol::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); alib::xmlApi<alphabet::Symbol>::compose(out, symbol); alib::xmlApi<primitive::Unsigned>::compose(out, rank); - out.emplace_back(RankedSymbol::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(RankedSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } SymbolBase* RankedSymbol::next() const { diff --git a/alib2data/src/alphabet/RankedSymbol.h b/alib2data/src/alphabet/RankedSymbol.h index 9c0666d690..7065e3ddae 100644 --- a/alib2data/src/alphabet/RankedSymbol.h +++ b/alib2data/src/alphabet/RankedSymbol.h @@ -59,7 +59,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "RankedSymbol"; + + return xmlTagName; + } static RankedSymbol parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/alphabet/StartSymbol.cpp b/alib2data/src/alphabet/StartSymbol.cpp index 6a627cf28a..3d39010959 100644 --- a/alib2data/src/alphabet/StartSymbol.cpp +++ b/alib2data/src/alphabet/StartSymbol.cpp @@ -41,17 +41,15 @@ StartSymbol::operator std::string () const { StartSymbol StartSymbol::START = StartSymbol ( ); Symbol StartSymbol::START_SYMBOL = Symbol ( StartSymbol ( ) ); -const std::string StartSymbol::XML_TAG_NAME = "StartSymbol"; - StartSymbol StartSymbol::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, StartSymbol::XML_TAG_NAME); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, StartSymbol::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, StartSymbol::getXmlTagName()); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, StartSymbol::getXmlTagName()); return StartSymbol(); } void StartSymbol::compose(std::deque<sax::Token>& out) const { - out.emplace_back(StartSymbol::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); - out.emplace_back(StartSymbol::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(StartSymbol::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); + out.emplace_back(StartSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } SymbolBase* StartSymbol::next() const { diff --git a/alib2data/src/alphabet/StartSymbol.h b/alib2data/src/alphabet/StartSymbol.h index db050efbcf..4b1d2b99c1 100644 --- a/alib2data/src/alphabet/StartSymbol.h +++ b/alib2data/src/alphabet/StartSymbol.h @@ -42,7 +42,11 @@ public: static StartSymbol START; static Symbol START_SYMBOL; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "StartSymbol"; + + return xmlTagName; + } static StartSymbol parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/alphabet/SubtreeWildcardSymbol.cpp b/alib2data/src/alphabet/SubtreeWildcardSymbol.cpp index 77ce1b695e..39b5a8b338 100644 --- a/alib2data/src/alphabet/SubtreeWildcardSymbol.cpp +++ b/alib2data/src/alphabet/SubtreeWildcardSymbol.cpp @@ -42,17 +42,15 @@ SubtreeWildcardSymbol SubtreeWildcardSymbol::SUBTREE_WILDCARD = SubtreeWildcardS Symbol SubtreeWildcardSymbol::SUBTREE_WILDCARD_SYMBOL = Symbol ( SubtreeWildcardSymbol ( ) ); RankedSymbol SubtreeWildcardSymbol::RANKED_SUBTREE_WILDCARD_SYMBOL = RankedSymbol ( Symbol ( SubtreeWildcardSymbol ( ) ), 0); -const std::string SubtreeWildcardSymbol::XML_TAG_NAME = "SubtreeWildcardSymbol"; - SubtreeWildcardSymbol SubtreeWildcardSymbol::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, SubtreeWildcardSymbol::XML_TAG_NAME); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, SubtreeWildcardSymbol::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, SubtreeWildcardSymbol::getXmlTagName()); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, SubtreeWildcardSymbol::getXmlTagName()); return SubtreeWildcardSymbol(); } void SubtreeWildcardSymbol::compose(std::deque<sax::Token>& out) const { - out.emplace_back(SubtreeWildcardSymbol::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); - out.emplace_back(SubtreeWildcardSymbol::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(SubtreeWildcardSymbol::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); + out.emplace_back(SubtreeWildcardSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } SymbolBase* SubtreeWildcardSymbol::next() const { diff --git a/alib2data/src/alphabet/SubtreeWildcardSymbol.h b/alib2data/src/alphabet/SubtreeWildcardSymbol.h index 946a6d2c20..fd80b3302c 100644 --- a/alib2data/src/alphabet/SubtreeWildcardSymbol.h +++ b/alib2data/src/alphabet/SubtreeWildcardSymbol.h @@ -44,7 +44,11 @@ public: static Symbol SUBTREE_WILDCARD_SYMBOL; static RankedSymbol RANKED_SUBTREE_WILDCARD_SYMBOL; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "SubtreeWildcardSymbol"; + + return xmlTagName; + } static SubtreeWildcardSymbol parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/alphabet/Symbol.cpp b/alib2data/src/alphabet/Symbol.cpp index 886350a107..4bc03b76b1 100644 --- a/alib2data/src/alphabet/Symbol.cpp +++ b/alib2data/src/alphabet/Symbol.cpp @@ -13,8 +13,6 @@ namespace alphabet { -const std::string Symbol::XML_TAG_NAME_REF = "SymbolRef"; - Symbol Symbol::next ( ) const { return Symbol ( this->getData ( ).next ( ) ); } diff --git a/alib2data/src/alphabet/Symbol.h b/alib2data/src/alphabet/Symbol.h index 43881aaeaa..50b0fe0721 100644 --- a/alib2data/src/alphabet/Symbol.h +++ b/alib2data/src/alphabet/Symbol.h @@ -26,7 +26,11 @@ public: Symbol next ( ) const; void inc ( ); - const static std::string XML_TAG_NAME_REF; + static const std::string & getXmlTagRefName() { + static std::string xmlTagName = "SymbolRef"; + + return xmlTagName; + } }; /** diff --git a/alib2data/src/alphabet/SymbolPairSymbol.cpp b/alib2data/src/alphabet/SymbolPairSymbol.cpp index 850f15f51f..099add0767 100644 --- a/alib2data/src/alphabet/SymbolPairSymbol.cpp +++ b/alib2data/src/alphabet/SymbolPairSymbol.cpp @@ -51,24 +51,22 @@ SymbolPairSymbol::operator std::string() const { return std::move(ss).str(); } -const std::string SymbolPairSymbol::XML_TAG_NAME = "SymbolPairSymbol"; - SymbolPairSymbol SymbolPairSymbol::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, SymbolPairSymbol::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, SymbolPairSymbol::getXmlTagName()); Symbol firstSymbol = alib::xmlApi<Symbol>::parse(input); Symbol secondSymbol = alib::xmlApi<Symbol>::parse(input); SymbolPairSymbol data(std::make_pair(std::move(firstSymbol), std::move(secondSymbol))); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, SymbolPairSymbol::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, SymbolPairSymbol::getXmlTagName()); return data; } void SymbolPairSymbol::compose(std::deque<sax::Token>& out) const { - out.emplace_back(SymbolPairSymbol::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(SymbolPairSymbol::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); alib::xmlApi<Symbol>::compose(out, symbol.first); alib::xmlApi<Symbol>::compose(out, symbol.second); - out.emplace_back(SymbolPairSymbol::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(SymbolPairSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } SymbolBase* SymbolPairSymbol::next() const { diff --git a/alib2data/src/alphabet/SymbolPairSymbol.h b/alib2data/src/alphabet/SymbolPairSymbol.h index a247d64da3..9d35125a04 100644 --- a/alib2data/src/alphabet/SymbolPairSymbol.h +++ b/alib2data/src/alphabet/SymbolPairSymbol.h @@ -48,7 +48,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "SymbolPairSymbol"; + + return xmlTagName; + } static SymbolPairSymbol parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/alphabet/SymbolSetSymbol.cpp b/alib2data/src/alphabet/SymbolSetSymbol.cpp index ecfcfb6c4b..50787d9f56 100644 --- a/alib2data/src/alphabet/SymbolSetSymbol.cpp +++ b/alib2data/src/alphabet/SymbolSetSymbol.cpp @@ -54,25 +54,23 @@ SymbolSetSymbol::operator std::string() const { return std::move(ss).str(); } -const std::string SymbolSetSymbol::XML_TAG_NAME = "SymbolSetSymbol"; - SymbolSetSymbol SymbolSetSymbol::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, SymbolSetSymbol::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, SymbolSetSymbol::getXmlTagName()); std::set<Symbol> symbols; while(sax::FromXMLParserHelper::isTokenType(input, sax::Token::TokenType::START_ELEMENT)) { symbols.insert(alib::xmlApi<Symbol>::parse(input)); } SymbolSetSymbol data(std::move(symbols)); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, SymbolSetSymbol::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, SymbolSetSymbol::getXmlTagName()); return data; } void SymbolSetSymbol::compose(std::deque<sax::Token>& out) const { - out.emplace_back(SymbolSetSymbol::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(SymbolSetSymbol::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); for(const Symbol& innerSymbol : symbol) { alib::xmlApi<alphabet::Symbol>::compose(out, innerSymbol); } - out.emplace_back(SymbolSetSymbol::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(SymbolSetSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } SymbolBase* SymbolSetSymbol::next() const { diff --git a/alib2data/src/alphabet/SymbolSetSymbol.h b/alib2data/src/alphabet/SymbolSetSymbol.h index 38bcdc502a..1fcf170a1a 100644 --- a/alib2data/src/alphabet/SymbolSetSymbol.h +++ b/alib2data/src/alphabet/SymbolSetSymbol.h @@ -48,7 +48,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "SymbolSetSymbol"; + + return xmlTagName; + } static SymbolSetSymbol parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/alphabet/UniqueSymbol.cpp b/alib2data/src/alphabet/UniqueSymbol.cpp index 8a08b27443..360413bafe 100644 --- a/alib2data/src/alphabet/UniqueSymbol.cpp +++ b/alib2data/src/alphabet/UniqueSymbol.cpp @@ -58,24 +58,22 @@ UniqueSymbol::operator std::string() const { return std::move(ss).str(); } -const std::string UniqueSymbol::XML_TAG_NAME = "UniqueSymbol"; - UniqueSymbol UniqueSymbol::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, UniqueSymbol::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, UniqueSymbol::getXmlTagName()); Symbol firstSymbol = alib::xmlApi<Symbol>::parse(input); primitive::Integer secondSymbol = alib::xmlApi<primitive::Integer>::parse(input); UniqueSymbol data(std::move(firstSymbol), std::move(secondSymbol)); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, UniqueSymbol::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, UniqueSymbol::getXmlTagName()); return data; } void UniqueSymbol::compose(std::deque<sax::Token>& out) const { - out.emplace_back(UniqueSymbol::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(UniqueSymbol::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); alib::xmlApi<alphabet::Symbol>::compose(out, symbol); alib::xmlApi<primitive::Integer>::compose(out, id); - out.emplace_back(UniqueSymbol::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(UniqueSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } SymbolBase* UniqueSymbol::next() const { diff --git a/alib2data/src/alphabet/UniqueSymbol.h b/alib2data/src/alphabet/UniqueSymbol.h index 7006d540e4..4d0f59546d 100644 --- a/alib2data/src/alphabet/UniqueSymbol.h +++ b/alib2data/src/alphabet/UniqueSymbol.h @@ -53,7 +53,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "UniqueSymbol"; + + return xmlTagName; + } static UniqueSymbol parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/alphabet/VariablesBarSymbol.cpp b/alib2data/src/alphabet/VariablesBarSymbol.cpp index 22fd597449..509935f50b 100644 --- a/alib2data/src/alphabet/VariablesBarSymbol.cpp +++ b/alib2data/src/alphabet/VariablesBarSymbol.cpp @@ -41,18 +41,16 @@ VariablesBarSymbol VariablesBarSymbol::BAR = VariablesBarSymbol ( ); Symbol VariablesBarSymbol::BAR_SYMBOL = Symbol ( VariablesBarSymbol ( ) ); RankedSymbol VariablesBarSymbol::RANKED_BAR_SYMBOL = RankedSymbol ( Symbol ( VariablesBarSymbol ( ) ), 0); -const std::string VariablesBarSymbol::XML_TAG_NAME = "VariablesBarSymbol"; - VariablesBarSymbol VariablesBarSymbol::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, VariablesBarSymbol::XML_TAG_NAME ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, VariablesBarSymbol::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, VariablesBarSymbol::getXmlTagName() ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, VariablesBarSymbol::getXmlTagName() ); return VariablesBarSymbol ( ); } void VariablesBarSymbol::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( VariablesBarSymbol::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); - out.emplace_back ( VariablesBarSymbol::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( VariablesBarSymbol::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( VariablesBarSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } SymbolBase * VariablesBarSymbol::next ( ) const { diff --git a/alib2data/src/alphabet/VariablesBarSymbol.h b/alib2data/src/alphabet/VariablesBarSymbol.h index e24f4f8306..00856cb3d1 100644 --- a/alib2data/src/alphabet/VariablesBarSymbol.h +++ b/alib2data/src/alphabet/VariablesBarSymbol.h @@ -44,7 +44,11 @@ public: static Symbol BAR_SYMBOL; static RankedSymbol RANKED_BAR_SYMBOL; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "VariablesBarSymbol"; + + return xmlTagName; + } static VariablesBarSymbol parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/automaton/Automaton.cpp b/alib2data/src/automaton/Automaton.cpp index 357ea9f76a..420fc3f02d 100644 --- a/alib2data/src/automaton/Automaton.cpp +++ b/alib2data/src/automaton/Automaton.cpp @@ -13,8 +13,6 @@ namespace automaton { -const std::string Automaton::XML_TAG_NAME_REF = "AutomatonRef"; - State createUniqueState ( State nextState, const std::set < State > & other ) { int i = 0; diff --git a/alib2data/src/automaton/Automaton.h b/alib2data/src/automaton/Automaton.h index bf91251e5c..55c0603e75 100644 --- a/alib2data/src/automaton/Automaton.h +++ b/alib2data/src/automaton/Automaton.h @@ -23,7 +23,11 @@ class Automaton : public alib::WrapperBase < AutomatonBase > { using alib::WrapperBase < AutomatonBase >::WrapperBase; public: - const static std::string XML_TAG_NAME_REF; + static const std::string & getXmlTagRefName() { + static std::string xmlTagName = "AutomatonRef"; + + return xmlTagName; + } }; State createUniqueState ( State base, const std::set < State > & other ); diff --git a/alib2data/src/automaton/FSM/CompactNFA.cpp b/alib2data/src/automaton/FSM/CompactNFA.cpp index 49d3c7765f..e0eedaf96a 100644 --- a/alib2data/src/automaton/FSM/CompactNFA.cpp +++ b/alib2data/src/automaton/FSM/CompactNFA.cpp @@ -154,10 +154,8 @@ CompactNFA::operator std::string ( ) const { return ss.str ( ); } -const std::string CompactNFA::XML_TAG_NAME = "CompactNFA"; - CompactNFA CompactNFA::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, CompactNFA::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, CompactNFA::getXmlTagName() ); std::set < State > states = AutomatonFromXMLParser::parseStates ( input ); std::set < alphabet::Symbol > inputSymbols = AutomatonFromXMLParser::parseInputAlphabet ( input ); @@ -172,7 +170,7 @@ CompactNFA CompactNFA::parse ( std::deque < sax::Token >::iterator & input ) { AutomatonFromXMLParser::parseTransitions < CompactNFA > ( input, automaton ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, CompactNFA::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, CompactNFA::getXmlTagName() ); return automaton; } @@ -187,7 +185,7 @@ void CompactNFA::parseTransition ( std::deque < sax::Token >::iterator & input, } void CompactNFA::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( CompactNFA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( CompactNFA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); AutomatonToXMLComposer::composeStates ( out, this->getStates ( ) ); AutomatonToXMLComposer::composeInputAlphabet ( out, this->getInputAlphabet ( ) ); @@ -195,7 +193,7 @@ void CompactNFA::compose ( std::deque < sax::Token > & out ) const { AutomatonToXMLComposer::composeFinalStates ( out, this->getFinalStates ( ) ); composeTransitions ( out ); - out.emplace_back ( CompactNFA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( CompactNFA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void CompactNFA::composeTransitions ( std::deque < sax::Token > & out ) const { @@ -303,6 +301,6 @@ auto CompactNFAFromDFA = castApi::CastRegister < automaton::CompactNFA, automato auto CompactNFAFromNFA = castApi::CastRegister < automaton::CompactNFA, automaton::NFA > ( ); auto CompactNFAFromMultiInitialStateNFA = castApi::CastRegister < automaton::CompactNFA, automaton::MultiInitialStateNFA > ( ); auto CompactNFAEpsilonNFA = castApi::CastRegister < automaton::CompactNFA, automaton::EpsilonNFA > ( ); -auto CompactNFACastBinder = castApi::CastPoolStringBinder < automaton::CompactNFA > ( automaton::CompactNFA::XML_TAG_NAME ); +auto CompactNFACastBinder = castApi::CastPoolStringBinder < automaton::CompactNFA > ( automaton::CompactNFA::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/automaton/FSM/CompactNFA.h b/alib2data/src/automaton/FSM/CompactNFA.h index ea33c4a1f8..1bdc96afb9 100644 --- a/alib2data/src/automaton/FSM/CompactNFA.h +++ b/alib2data/src/automaton/FSM/CompactNFA.h @@ -149,7 +149,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "CompactNFA"; + + return xmlTagName; + } static CompactNFA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, CompactNFA & automaton ); diff --git a/alib2data/src/automaton/FSM/DFA.cpp b/alib2data/src/automaton/FSM/DFA.cpp index eec791c238..55873abc4f 100644 --- a/alib2data/src/automaton/FSM/DFA.cpp +++ b/alib2data/src/automaton/FSM/DFA.cpp @@ -128,10 +128,8 @@ DFA::operator std::string ( ) const { return ss.str ( ); } -const std::string DFA::XML_TAG_NAME = "DFA"; - DFA DFA::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, DFA::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, DFA::getXmlTagName() ); std::set < State > states = AutomatonFromXMLParser::parseStates ( input ); std::set < alphabet::Symbol > inputSymbols = AutomatonFromXMLParser::parseInputAlphabet ( input ); @@ -146,7 +144,7 @@ DFA DFA::parse ( std::deque < sax::Token >::iterator & input ) { AutomatonFromXMLParser::parseTransitions < DFA > ( input, automaton ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, DFA::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, DFA::getXmlTagName() ); return automaton; } @@ -161,7 +159,7 @@ void DFA::parseTransition ( std::deque < sax::Token >::iterator & input, DFA & a } void DFA::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( DFA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( DFA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); AutomatonToXMLComposer::composeStates ( out, this->getStates ( ) ); AutomatonToXMLComposer::composeInputAlphabet ( out, this->getInputAlphabet ( ) ); @@ -169,7 +167,7 @@ void DFA::compose ( std::deque < sax::Token > & out ) const { AutomatonToXMLComposer::composeFinalStates ( out, this->getFinalStates ( ) ); composeTransitions ( out ); - out.emplace_back ( DFA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( DFA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void DFA::composeTransitions ( std::deque < sax::Token > & out ) const { diff --git a/alib2data/src/automaton/FSM/DFA.h b/alib2data/src/automaton/FSM/DFA.h index 7e44337a2b..e3a5b356c5 100644 --- a/alib2data/src/automaton/FSM/DFA.h +++ b/alib2data/src/automaton/FSM/DFA.h @@ -149,7 +149,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "DFA"; + + return xmlTagName; + } static DFA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, DFA & automaton ); diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.cpp b/alib2data/src/automaton/FSM/EpsilonNFA.cpp index 778d412882..1f9f5c85d4 100644 --- a/alib2data/src/automaton/FSM/EpsilonNFA.cpp +++ b/alib2data/src/automaton/FSM/EpsilonNFA.cpp @@ -251,10 +251,8 @@ EpsilonNFA::operator std::string ( ) const { return ss.str ( ); } -const std::string EpsilonNFA::XML_TAG_NAME = "EpsilonNFA"; - EpsilonNFA EpsilonNFA::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, EpsilonNFA::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, EpsilonNFA::getXmlTagName() ); std::set < State > states = AutomatonFromXMLParser::parseStates ( input ); std::set < alphabet::Symbol > inputSymbols = AutomatonFromXMLParser::parseInputAlphabet ( input ); @@ -269,7 +267,7 @@ EpsilonNFA EpsilonNFA::parse ( std::deque < sax::Token >::iterator & input ) { AutomatonFromXMLParser::parseTransitions < EpsilonNFA > ( input, automaton ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, EpsilonNFA::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, EpsilonNFA::getXmlTagName() ); return automaton; } @@ -284,7 +282,7 @@ void EpsilonNFA::parseTransition ( std::deque < sax::Token >::iterator & input, } void EpsilonNFA::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( EpsilonNFA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( EpsilonNFA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); AutomatonToXMLComposer::composeStates ( out, this->getStates ( ) ); AutomatonToXMLComposer::composeInputAlphabet ( out, this->getInputAlphabet ( ) ); @@ -292,7 +290,7 @@ void EpsilonNFA::compose ( std::deque < sax::Token > & out ) const { AutomatonToXMLComposer::composeFinalStates ( out, this->getFinalStates ( ) ); composeTransitions ( out ); - out.emplace_back ( EpsilonNFA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( EpsilonNFA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void EpsilonNFA::composeTransitions ( std::deque < sax::Token > & out ) const { @@ -399,6 +397,6 @@ auto epsilonNFAParserRegister2 = xmlApi < alib::Object >::ParserRegister < autom auto EpsilonNFAFromDFA = castApi::CastRegister < automaton::EpsilonNFA, automaton::DFA > ( ); auto EpsilonNFAFromNFA = castApi::CastRegister < automaton::EpsilonNFA, automaton::NFA > ( ); auto EpsilonNFAFromMultiInitialStateNFA = castApi::CastRegister < automaton::EpsilonNFA, automaton::MultiInitialStateNFA > ( ); -auto EpsilonNFACastBinder = castApi::CastPoolStringBinder < automaton::EpsilonNFA > ( automaton::EpsilonNFA::XML_TAG_NAME ); +auto EpsilonNFACastBinder = castApi::CastPoolStringBinder < automaton::EpsilonNFA > ( automaton::EpsilonNFA::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.h b/alib2data/src/automaton/FSM/EpsilonNFA.h index 86ac789ac9..209a9e7e83 100644 --- a/alib2data/src/automaton/FSM/EpsilonNFA.h +++ b/alib2data/src/automaton/FSM/EpsilonNFA.h @@ -225,7 +225,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "EpsilonNFA"; + + return xmlTagName; + } static EpsilonNFA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, EpsilonNFA & automaton ); diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.cpp b/alib2data/src/automaton/FSM/ExtendedNFA.cpp index f0cd5dd1b3..b6336f904a 100644 --- a/alib2data/src/automaton/FSM/ExtendedNFA.cpp +++ b/alib2data/src/automaton/FSM/ExtendedNFA.cpp @@ -164,10 +164,8 @@ ExtendedNFA::operator std::string ( ) const { return ss.str ( ); } -const std::string ExtendedNFA::XML_TAG_NAME = "ExtendedNFA"; - ExtendedNFA ExtendedNFA::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ExtendedNFA::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ExtendedNFA::getXmlTagName() ); std::set < State > states = AutomatonFromXMLParser::parseStates ( input ); std::set < alphabet::Symbol > inputSymbols = AutomatonFromXMLParser::parseInputAlphabet ( input ); @@ -182,7 +180,7 @@ ExtendedNFA ExtendedNFA::parse ( std::deque < sax::Token >::iterator & input ) { AutomatonFromXMLParser::parseTransitions < ExtendedNFA > ( input, automaton ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ExtendedNFA::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ExtendedNFA::getXmlTagName() ); return automaton; } @@ -197,7 +195,7 @@ void ExtendedNFA::parseTransition ( std::deque < sax::Token >::iterator & input, } void ExtendedNFA::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( ExtendedNFA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( ExtendedNFA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); AutomatonToXMLComposer::composeStates ( out, this->getStates ( ) ); AutomatonToXMLComposer::composeInputAlphabet ( out, this->getInputAlphabet ( ) ); @@ -205,7 +203,7 @@ void ExtendedNFA::compose ( std::deque < sax::Token > & out ) const { AutomatonToXMLComposer::composeFinalStates ( out, this->getFinalStates ( ) ); composeTransitions ( out ); - out.emplace_back ( ExtendedNFA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( ExtendedNFA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void ExtendedNFA::composeTransitions ( std::deque < sax::Token > & out ) const { @@ -314,6 +312,6 @@ auto ExtendedNFAFromNFA = castApi::CastRegister < automaton::ExtendedNFA, automa auto ExtendedNFAFromMultiInitialStateNFA = castApi::CastRegister < automaton::ExtendedNFA, automaton::MultiInitialStateNFA > ( ); auto ExtendedNFAEpsilonNFA = castApi::CastRegister < automaton::ExtendedNFA, automaton::EpsilonNFA > ( ); auto ExtendedNFACompactNFA = castApi::CastRegister < automaton::ExtendedNFA, automaton::CompactNFA > ( ); -auto ExtendedNFACastBinder = castApi::CastPoolStringBinder < automaton::ExtendedNFA > ( automaton::ExtendedNFA::XML_TAG_NAME ); +auto ExtendedNFACastBinder = castApi::CastPoolStringBinder < automaton::ExtendedNFA > ( automaton::ExtendedNFA::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.h b/alib2data/src/automaton/FSM/ExtendedNFA.h index 4417b6b799..c24c86d9ca 100644 --- a/alib2data/src/automaton/FSM/ExtendedNFA.h +++ b/alib2data/src/automaton/FSM/ExtendedNFA.h @@ -150,7 +150,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "ExtendedNFA"; + + return xmlTagName; + } static ExtendedNFA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, ExtendedNFA & automaton ); diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp b/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp index 7918f5231c..aa5fd2db15 100644 --- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp +++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp @@ -143,10 +143,8 @@ MultiInitialStateNFA::operator std::string ( ) const { return ss.str ( ); } -const std::string MultiInitialStateNFA::XML_TAG_NAME = "MultiInitialStateNFA"; - MultiInitialStateNFA MultiInitialStateNFA::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, MultiInitialStateNFA::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, MultiInitialStateNFA::getXmlTagName() ); std::set < State > states = AutomatonFromXMLParser::parseStates ( input ); std::set < alphabet::Symbol > inputSymbols = AutomatonFromXMLParser::parseInputAlphabet ( input ); @@ -162,7 +160,7 @@ MultiInitialStateNFA MultiInitialStateNFA::parse ( std::deque < sax::Token >::it AutomatonFromXMLParser::parseTransitions < MultiInitialStateNFA > ( input, automaton ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, MultiInitialStateNFA::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, MultiInitialStateNFA::getXmlTagName() ); return automaton; } @@ -177,7 +175,7 @@ void MultiInitialStateNFA::parseTransition ( std::deque < sax::Token >::iterator } void MultiInitialStateNFA::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( MultiInitialStateNFA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( MultiInitialStateNFA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); AutomatonToXMLComposer::composeStates ( out, this->getStates ( ) ); AutomatonToXMLComposer::composeInputAlphabet ( out, this->getInputAlphabet ( ) ); @@ -185,7 +183,7 @@ void MultiInitialStateNFA::compose ( std::deque < sax::Token > & out ) const { AutomatonToXMLComposer::composeFinalStates ( out, this->getFinalStates ( ) ); composeTransitions ( out ); - out.emplace_back ( MultiInitialStateNFA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( MultiInitialStateNFA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void MultiInitialStateNFA::composeTransitions ( std::deque < sax::Token > & out ) const { @@ -296,6 +294,6 @@ auto multiInitialStateNFAParserRegister2 = xmlApi < alib::Object >::ParserRegist auto MultiInitialStateNFAFromDFA = castApi::CastRegister < automaton::MultiInitialStateNFA, automaton::DFA > ( ); auto MultiInitialStateNFAFromNFA = castApi::CastRegister < automaton::MultiInitialStateNFA, automaton::NFA > ( ); -auto MultiInitialStateNFACastBinder = castApi::CastPoolStringBinder < automaton::MultiInitialStateNFA > ( automaton::MultiInitialStateNFA::XML_TAG_NAME ); +auto MultiInitialStateNFACastBinder = castApi::CastPoolStringBinder < automaton::MultiInitialStateNFA > ( automaton::MultiInitialStateNFA::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h index f97d175c83..b40a32f450 100644 --- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h +++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h @@ -169,7 +169,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "MultiInitialStateNFA"; + + return xmlTagName; + } static MultiInitialStateNFA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, MultiInitialStateNFA & automaton ); diff --git a/alib2data/src/automaton/FSM/NFA.cpp b/alib2data/src/automaton/FSM/NFA.cpp index f64446db63..701ff3016f 100644 --- a/alib2data/src/automaton/FSM/NFA.cpp +++ b/alib2data/src/automaton/FSM/NFA.cpp @@ -136,10 +136,8 @@ NFA::operator std::string ( ) const { return ss.str ( ); } -const std::string NFA::XML_TAG_NAME = "NFA"; - NFA NFA::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, NFA::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, NFA::getXmlTagName() ); std::set < State > states = AutomatonFromXMLParser::parseStates ( input ); std::set < alphabet::Symbol > inputSymbols = AutomatonFromXMLParser::parseInputAlphabet ( input ); @@ -154,7 +152,7 @@ NFA NFA::parse ( std::deque < sax::Token >::iterator & input ) { AutomatonFromXMLParser::parseTransitions < NFA > ( input, automaton ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, NFA::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, NFA::getXmlTagName() ); return automaton; } @@ -169,7 +167,7 @@ void NFA::parseTransition ( std::deque < sax::Token >::iterator & input, NFA & a } void NFA::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( NFA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( NFA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); AutomatonToXMLComposer::composeStates ( out, this->getStates ( ) ); AutomatonToXMLComposer::composeInputAlphabet ( out, this->getInputAlphabet ( ) ); @@ -177,7 +175,7 @@ void NFA::compose ( std::deque < sax::Token > & out ) const { AutomatonToXMLComposer::composeFinalStates ( out, this->getFinalStates ( ) ); composeTransitions ( out ); - out.emplace_back ( NFA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( NFA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void NFA::composeTransitions ( std::deque < sax::Token > & out ) const { @@ -282,6 +280,6 @@ auto NFAParserRegister = xmlApi < automaton::Automaton >::ParserRegister < autom auto NFAParserRegister2 = xmlApi < alib::Object >::ParserRegister < automaton::NFA > ( ); auto NFAFromDFA = castApi::CastRegister < automaton::NFA, automaton::DFA > ( ); -auto NFACastBinder = castApi::CastPoolStringBinder < automaton::NFA > ( automaton::NFA::XML_TAG_NAME ); +auto NFACastBinder = castApi::CastPoolStringBinder < automaton::NFA > ( automaton::NFA::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/automaton/FSM/NFA.h b/alib2data/src/automaton/FSM/NFA.h index 70cd5d44cb..a4390c741c 100644 --- a/alib2data/src/automaton/FSM/NFA.h +++ b/alib2data/src/automaton/FSM/NFA.h @@ -163,7 +163,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "NFA"; + + return xmlTagName; + } static NFA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, NFA & automaton ); diff --git a/alib2data/src/automaton/PDA/DPDA.cpp b/alib2data/src/automaton/PDA/DPDA.cpp index ce555fa728..198bd56153 100644 --- a/alib2data/src/automaton/PDA/DPDA.cpp +++ b/alib2data/src/automaton/PDA/DPDA.cpp @@ -211,10 +211,8 @@ DPDA::operator std::string () const { return ss.str(); } -const std::string DPDA::XML_TAG_NAME = "DPDA"; - DPDA DPDA::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, DPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, DPDA::getXmlTagName()); std::set<State> states = AutomatonFromXMLParser::parseStates(input); std::set<alphabet::Symbol> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet(input); @@ -231,7 +229,7 @@ DPDA DPDA::parse(std::deque<sax::Token>::iterator& input) { AutomatonFromXMLParser::parseTransitions<DPDA>(input, automaton); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, DPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, DPDA::getXmlTagName()); return automaton; } @@ -248,7 +246,7 @@ void DPDA::parseTransition(std::deque<sax::Token>::iterator& input, DPDA& automa } void DPDA::compose(std::deque<sax::Token>& out) const { - out.emplace_back(DPDA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(DPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); AutomatonToXMLComposer::composeStates(out, this->getStates()); AutomatonToXMLComposer::composeInputAlphabet(out, this->getInputAlphabet()); @@ -258,7 +256,7 @@ void DPDA::compose(std::deque<sax::Token>& out) const { AutomatonToXMLComposer::composeFinalStates(out, this->getFinalStates()); composeTransitions(out); - out.emplace_back(DPDA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(DPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } void DPDA::composeTransitions(std::deque<sax::Token>& out) const { @@ -399,6 +397,6 @@ namespace alib { auto DPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::DPDA>(); auto DPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::DPDA>(); -auto DPDACastBinder = castApi::CastPoolStringBinder<automaton::DPDA>(automaton::DPDA::XML_TAG_NAME); +auto DPDACastBinder = castApi::CastPoolStringBinder<automaton::DPDA>(automaton::DPDA::getXmlTagName()); } /* namespace alib */ diff --git a/alib2data/src/automaton/PDA/DPDA.h b/alib2data/src/automaton/PDA/DPDA.h index ff754482da..bdd1fc294c 100644 --- a/alib2data/src/automaton/PDA/DPDA.h +++ b/alib2data/src/automaton/PDA/DPDA.h @@ -184,7 +184,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "DPDA"; + + return xmlTagName; + } static DPDA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, DPDA & automaton ); diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp b/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp index 6305ad81e8..d17a041651 100644 --- a/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp +++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp @@ -183,10 +183,8 @@ InputDrivenDPDA::operator std::string () const { return ss.str(); } -const std::string InputDrivenDPDA::XML_TAG_NAME = "InputDrivenDPDA"; - InputDrivenDPDA InputDrivenDPDA::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, InputDrivenDPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, InputDrivenDPDA::getXmlTagName()); std::set<State> states = AutomatonFromXMLParser::parseStates(input); std::set<alphabet::Symbol> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet(input); @@ -204,7 +202,7 @@ InputDrivenDPDA InputDrivenDPDA::parse(std::deque<sax::Token>::iterator& input) automaton.setPushdownStoreOperations(AutomatonFromXMLParser::parseInputToPushdownStoreOperation(input)); AutomatonFromXMLParser::parseTransitions<InputDrivenDPDA>(input, automaton); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, InputDrivenDPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, InputDrivenDPDA::getXmlTagName()); return automaton; } @@ -219,7 +217,7 @@ void InputDrivenDPDA::parseTransition(std::deque<sax::Token>::iterator& input, I } void InputDrivenDPDA::compose(std::deque<sax::Token>& out) const { - out.emplace_back(InputDrivenDPDA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(InputDrivenDPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); AutomatonToXMLComposer::composeStates(out, this->getStates()); AutomatonToXMLComposer::composeInputAlphabet(out, this->getInputAlphabet()); @@ -230,7 +228,7 @@ void InputDrivenDPDA::compose(std::deque<sax::Token>& out) const { AutomatonToXMLComposer::composeInputToPushdownStoreOperation(out, this->getPushdownStoreOperations()); composeTransitions(out); - out.emplace_back(InputDrivenDPDA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(InputDrivenDPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } void InputDrivenDPDA::composeTransitions(std::deque<sax::Token>& out) const { diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.h b/alib2data/src/automaton/PDA/InputDrivenDPDA.h index f85fa6c4a3..6335bc29cb 100644 --- a/alib2data/src/automaton/PDA/InputDrivenDPDA.h +++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.h @@ -186,7 +186,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "InputDrivenDPDA"; + + return xmlTagName; + } static InputDrivenDPDA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, InputDrivenDPDA & automaton ); diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp b/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp index 0244bcd9b8..6a870fe53f 100644 --- a/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp +++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp @@ -178,10 +178,8 @@ InputDrivenNPDA::operator std::string () const { return ss.str(); } -const std::string InputDrivenNPDA::XML_TAG_NAME = "InputDrivenNPDA"; - InputDrivenNPDA InputDrivenNPDA::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, InputDrivenNPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, InputDrivenNPDA::getXmlTagName()); std::set<State> states = AutomatonFromXMLParser::parseStates(input); std::set<alphabet::Symbol> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet(input); @@ -199,7 +197,7 @@ InputDrivenNPDA InputDrivenNPDA::parse(std::deque<sax::Token>::iterator& input) automaton.setPushdownStoreOperations(AutomatonFromXMLParser::parseInputToPushdownStoreOperation(input)); AutomatonFromXMLParser::parseTransitions<InputDrivenNPDA>(input, automaton); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, InputDrivenNPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, InputDrivenNPDA::getXmlTagName()); return automaton; } @@ -214,7 +212,7 @@ void InputDrivenNPDA::parseTransition(std::deque<sax::Token>::iterator& input, I } void InputDrivenNPDA::compose(std::deque<sax::Token>& out) const { - out.emplace_back(InputDrivenNPDA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(InputDrivenNPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); AutomatonToXMLComposer::composeStates(out, this->getStates()); AutomatonToXMLComposer::composeInputAlphabet(out, this->getInputAlphabet()); @@ -225,7 +223,7 @@ void InputDrivenNPDA::compose(std::deque<sax::Token>& out) const { AutomatonToXMLComposer::composeInputToPushdownStoreOperation(out, this->getPushdownStoreOperations()); composeTransitions(out); - out.emplace_back(InputDrivenNPDA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(InputDrivenNPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } void InputDrivenNPDA::composeTransitions(std::deque<sax::Token>& out) const { diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.h b/alib2data/src/automaton/PDA/InputDrivenNPDA.h index 35fde87e14..8bf17b533f 100644 --- a/alib2data/src/automaton/PDA/InputDrivenNPDA.h +++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.h @@ -186,7 +186,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "InputDrivenNPDA"; + + return xmlTagName; + } static InputDrivenNPDA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, InputDrivenNPDA & automaton ); diff --git a/alib2data/src/automaton/PDA/NPDA.cpp b/alib2data/src/automaton/PDA/NPDA.cpp index 6986c8cbea..82fdedf5cf 100644 --- a/alib2data/src/automaton/PDA/NPDA.cpp +++ b/alib2data/src/automaton/PDA/NPDA.cpp @@ -115,10 +115,8 @@ NPDA::operator std::string () const { return ss.str(); } -const std::string NPDA::XML_TAG_NAME = "NPDA"; - NPDA NPDA::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, NPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, NPDA::getXmlTagName()); std::set<State> states = AutomatonFromXMLParser::parseStates(input); std::set<alphabet::Symbol> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet(input); @@ -135,7 +133,7 @@ NPDA NPDA::parse(std::deque<sax::Token>::iterator& input) { AutomatonFromXMLParser::parseTransitions<NPDA>(input, automaton); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, NPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, NPDA::getXmlTagName()); return automaton; } @@ -152,7 +150,7 @@ void NPDA::parseTransition(std::deque<sax::Token>::iterator& input, NPDA& automa } void NPDA::compose(std::deque<sax::Token>& out) const { - out.emplace_back(NPDA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(NPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); AutomatonToXMLComposer::composeStates(out, this->getStates()); AutomatonToXMLComposer::composeInputAlphabet(out, this->getInputAlphabet()); @@ -162,7 +160,7 @@ void NPDA::compose(std::deque<sax::Token>& out) const { AutomatonToXMLComposer::composeFinalStates(out, this->getFinalStates()); composeTransitions(out); - out.emplace_back(NPDA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(NPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } void NPDA::composeTransitions(std::deque<sax::Token>& out) const { @@ -312,6 +310,6 @@ namespace alib { auto NPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::NPDA>(); auto NPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::NPDA>(); -auto NPDACastBinder = castApi::CastPoolStringBinder<automaton::NPDA>(automaton::NPDA::XML_TAG_NAME); +auto NPDACastBinder = castApi::CastPoolStringBinder<automaton::NPDA>(automaton::NPDA::getXmlTagName()); } /* namespace alib */ diff --git a/alib2data/src/automaton/PDA/NPDA.h b/alib2data/src/automaton/PDA/NPDA.h index 85851ee07e..b9622b4501 100644 --- a/alib2data/src/automaton/PDA/NPDA.h +++ b/alib2data/src/automaton/PDA/NPDA.h @@ -170,7 +170,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "NPDA"; + + return xmlTagName; + } static NPDA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, NPDA & automaton ); diff --git a/alib2data/src/automaton/PDA/NPDTA.cpp b/alib2data/src/automaton/PDA/NPDTA.cpp index 241fd8e6df..0f36e9f6dc 100644 --- a/alib2data/src/automaton/PDA/NPDTA.cpp +++ b/alib2data/src/automaton/PDA/NPDTA.cpp @@ -145,10 +145,8 @@ NPDTA::operator std::string () const { return ss.str(); } -const std::string NPDTA::XML_TAG_NAME = "NPDTA"; - NPDTA NPDTA::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, NPDTA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, NPDTA::getXmlTagName()); std::set<State> states = AutomatonFromXMLParser::parseStates(input); std::set<alphabet::Symbol> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet(input); @@ -167,7 +165,7 @@ NPDTA NPDTA::parse(std::deque<sax::Token>::iterator& input) { AutomatonFromXMLParser::parseTransitions<NPDTA>(input, automaton); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, NPDTA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, NPDTA::getXmlTagName()); return automaton; } @@ -185,7 +183,7 @@ void NPDTA::parseTransition(std::deque<sax::Token>::iterator& input, NPDTA& auto } void NPDTA::compose(std::deque<sax::Token>& out) const { - out.emplace_back(NPDTA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(NPDTA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); AutomatonToXMLComposer::composeStates(out, this->getStates()); AutomatonToXMLComposer::composeInputAlphabet(out, this->getInputAlphabet()); @@ -196,7 +194,7 @@ void NPDTA::compose(std::deque<sax::Token>& out) const { AutomatonToXMLComposer::composeFinalStates(out, this->getFinalStates()); composeTransitions(out); - out.emplace_back(NPDTA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(NPDTA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } void NPDTA::composeTransitions(std::deque<sax::Token>& out) const { @@ -369,6 +367,6 @@ namespace alib { auto NPDTAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::NPDTA>(); auto NPDTAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::NPDTA>(); -auto NPDTACastBinder = castApi::CastPoolStringBinder<automaton::NPDTA>(automaton::NPDTA::XML_TAG_NAME); +auto NPDTACastBinder = castApi::CastPoolStringBinder<automaton::NPDTA>(automaton::NPDTA::getXmlTagName()); } /* namespace alib */ diff --git a/alib2data/src/automaton/PDA/NPDTA.h b/alib2data/src/automaton/PDA/NPDTA.h index 62956f0727..d2ee8a7089 100644 --- a/alib2data/src/automaton/PDA/NPDTA.h +++ b/alib2data/src/automaton/PDA/NPDTA.h @@ -194,7 +194,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "NPDTA"; + + return xmlTagName; + } static NPDTA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, NPDTA & automaton ); diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp index 866c9c57b9..f7698552cb 100644 --- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp +++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp @@ -336,10 +336,8 @@ RealTimeHeightDeterministicDPDA::operator std::string () const { return ss.str(); } -const std::string RealTimeHeightDeterministicDPDA::XML_TAG_NAME = "RealTimeHeightDeterministicDPDA"; - RealTimeHeightDeterministicDPDA RealTimeHeightDeterministicDPDA::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, RealTimeHeightDeterministicDPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, RealTimeHeightDeterministicDPDA::getXmlTagName()); std::set<State> states = AutomatonFromXMLParser::parseStates(input); std::set<alphabet::Symbol> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet(input); @@ -356,7 +354,7 @@ RealTimeHeightDeterministicDPDA RealTimeHeightDeterministicDPDA::parse(std::dequ AutomatonFromXMLParser::parseTransitions<RealTimeHeightDeterministicDPDA>(input, automaton); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, RealTimeHeightDeterministicDPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, RealTimeHeightDeterministicDPDA::getXmlTagName()); return automaton; } @@ -391,7 +389,7 @@ void RealTimeHeightDeterministicDPDA::parseTransition(std::deque<sax::Token>::it } void RealTimeHeightDeterministicDPDA::compose(std::deque<sax::Token>& out) const { - out.emplace_back(RealTimeHeightDeterministicDPDA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(RealTimeHeightDeterministicDPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); AutomatonToXMLComposer::composeStates(out, this->getStates()); AutomatonToXMLComposer::composeInputAlphabet(out, this->getInputAlphabet()); @@ -401,7 +399,7 @@ void RealTimeHeightDeterministicDPDA::compose(std::deque<sax::Token>& out) const AutomatonToXMLComposer::composeFinalStates(out, this->getFinalStates()); composeTransitions(out); - out.emplace_back(RealTimeHeightDeterministicDPDA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(RealTimeHeightDeterministicDPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } void RealTimeHeightDeterministicDPDA::composeTransitions(std::deque<sax::Token>& out) const { @@ -576,6 +574,6 @@ namespace alib { auto realTimeHeightDeterministicDPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::RealTimeHeightDeterministicDPDA>(); auto realTimeHeightDeterministicDPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::RealTimeHeightDeterministicDPDA>(); -auto RealTimeHeightDeterministicDPDACastBinder = castApi::CastPoolStringBinder<automaton::RealTimeHeightDeterministicDPDA>(automaton::RealTimeHeightDeterministicDPDA::XML_TAG_NAME); +auto RealTimeHeightDeterministicDPDACastBinder = castApi::CastPoolStringBinder<automaton::RealTimeHeightDeterministicDPDA>(automaton::RealTimeHeightDeterministicDPDA::getXmlTagName()); } /* namespace alib */ diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h index 74c01326cf..bc10518e11 100644 --- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h +++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h @@ -210,7 +210,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "RealTimeHeightDeterministicDPDA"; + + return xmlTagName; + } static RealTimeHeightDeterministicDPDA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, RealTimeHeightDeterministicDPDA & automaton ); diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp index ddac5583e4..7ef3543015 100644 --- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp +++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp @@ -216,10 +216,8 @@ RealTimeHeightDeterministicNPDA::operator std::string () const { return ss.str(); } -const std::string RealTimeHeightDeterministicNPDA::XML_TAG_NAME = "RealTimeHeightDeterministicNPDA"; - RealTimeHeightDeterministicNPDA RealTimeHeightDeterministicNPDA::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, RealTimeHeightDeterministicNPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, RealTimeHeightDeterministicNPDA::getXmlTagName()); std::set<State> states = AutomatonFromXMLParser::parseStates(input); std::set<alphabet::Symbol> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet(input); @@ -237,7 +235,7 @@ RealTimeHeightDeterministicNPDA RealTimeHeightDeterministicNPDA::parse(std::dequ AutomatonFromXMLParser::parseTransitions<RealTimeHeightDeterministicNPDA>(input, automaton); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, RealTimeHeightDeterministicNPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, RealTimeHeightDeterministicNPDA::getXmlTagName()); return automaton; } @@ -272,7 +270,7 @@ void RealTimeHeightDeterministicNPDA::parseTransition(std::deque<sax::Token>::it } void RealTimeHeightDeterministicNPDA::compose(std::deque<sax::Token>& out) const { - out.emplace_back(RealTimeHeightDeterministicNPDA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(RealTimeHeightDeterministicNPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); AutomatonToXMLComposer::composeStates(out, this->getStates()); AutomatonToXMLComposer::composeInputAlphabet(out, this->getInputAlphabet()); @@ -282,7 +280,7 @@ void RealTimeHeightDeterministicNPDA::compose(std::deque<sax::Token>& out) const AutomatonToXMLComposer::composeFinalStates(out, this->getFinalStates()); composeTransitions(out); - out.emplace_back(RealTimeHeightDeterministicNPDA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(RealTimeHeightDeterministicNPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } void RealTimeHeightDeterministicNPDA::composeTransitions(std::deque<sax::Token>& out) const { @@ -484,6 +482,6 @@ namespace alib { auto realTimeHeightDeterministicNPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::RealTimeHeightDeterministicNPDA>(); auto realTimeHeightDeterministicNPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::RealTimeHeightDeterministicNPDA>(); -auto RealTimeHeightDeterministicNPDACastBinder = castApi::CastPoolStringBinder<automaton::RealTimeHeightDeterministicNPDA>(automaton::RealTimeHeightDeterministicNPDA::XML_TAG_NAME); +auto RealTimeHeightDeterministicNPDACastBinder = castApi::CastPoolStringBinder<automaton::RealTimeHeightDeterministicNPDA>(automaton::RealTimeHeightDeterministicNPDA::getXmlTagName()); } /* namespace alib */ diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h index 251419111a..d24f0aa52b 100644 --- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h +++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h @@ -217,7 +217,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "RealTimeHeightDeterministicNPDA"; + + return xmlTagName; + } static RealTimeHeightDeterministicNPDA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, RealTimeHeightDeterministicNPDA & automaton ); diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.cpp b/alib2data/src/automaton/PDA/SinglePopDPDA.cpp index 106841e743..e08b505313 100644 --- a/alib2data/src/automaton/PDA/SinglePopDPDA.cpp +++ b/alib2data/src/automaton/PDA/SinglePopDPDA.cpp @@ -158,10 +158,8 @@ SinglePopDPDA::operator std::string () const { return ss.str(); } -const std::string SinglePopDPDA::XML_TAG_NAME = "SinglePopDPDA"; - SinglePopDPDA SinglePopDPDA::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, SinglePopDPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, SinglePopDPDA::getXmlTagName()); std::set<State> states = AutomatonFromXMLParser::parseStates(input); std::set<alphabet::Symbol> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet(input); @@ -178,7 +176,7 @@ SinglePopDPDA SinglePopDPDA::parse(std::deque<sax::Token>::iterator& input) { AutomatonFromXMLParser::parseTransitions<SinglePopDPDA>(input, automaton); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, SinglePopDPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, SinglePopDPDA::getXmlTagName()); return automaton; } @@ -195,7 +193,7 @@ void SinglePopDPDA::parseTransition(std::deque<sax::Token>::iterator& input, Sin } void SinglePopDPDA::compose(std::deque<sax::Token>& out) const { - out.emplace_back(SinglePopDPDA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(SinglePopDPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); AutomatonToXMLComposer::composeStates(out, this->getStates()); AutomatonToXMLComposer::composeInputAlphabet(out, this->getInputAlphabet()); @@ -205,7 +203,7 @@ void SinglePopDPDA::compose(std::deque<sax::Token>& out) const { AutomatonToXMLComposer::composeFinalStates(out, this->getFinalStates()); composeTransitions(out); - out.emplace_back(SinglePopDPDA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(SinglePopDPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } void SinglePopDPDA::composeTransitions(std::deque<sax::Token>& out) const { diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.h b/alib2data/src/automaton/PDA/SinglePopDPDA.h index c7bccf49e1..c95d5b2b50 100644 --- a/alib2data/src/automaton/PDA/SinglePopDPDA.h +++ b/alib2data/src/automaton/PDA/SinglePopDPDA.h @@ -174,7 +174,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "SinglePopDPDA"; + + return xmlTagName; + } static SinglePopDPDA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, SinglePopDPDA & automaton ); diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.cpp b/alib2data/src/automaton/PDA/SinglePopNPDA.cpp index 181c92ec81..6bf2395ec6 100644 --- a/alib2data/src/automaton/PDA/SinglePopNPDA.cpp +++ b/alib2data/src/automaton/PDA/SinglePopNPDA.cpp @@ -119,10 +119,8 @@ SinglePopNPDA::operator std::string () const { return ss.str(); } -const std::string SinglePopNPDA::XML_TAG_NAME = "SinglePopNPDA"; - SinglePopNPDA SinglePopNPDA::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, SinglePopNPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, SinglePopNPDA::getXmlTagName()); std::set<State> states = AutomatonFromXMLParser::parseStates(input); std::set<alphabet::Symbol> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet(input); @@ -139,7 +137,7 @@ SinglePopNPDA SinglePopNPDA::parse(std::deque<sax::Token>::iterator& input) { AutomatonFromXMLParser::parseTransitions<SinglePopNPDA>(input, automaton); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, SinglePopNPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, SinglePopNPDA::getXmlTagName()); return automaton; } @@ -156,7 +154,7 @@ void SinglePopNPDA::parseTransition(std::deque<sax::Token>::iterator& input, Sin } void SinglePopNPDA::compose(std::deque<sax::Token>& out) const { - out.emplace_back(SinglePopNPDA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(SinglePopNPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); AutomatonToXMLComposer::composeStates(out, this->getStates()); AutomatonToXMLComposer::composeInputAlphabet(out, this->getInputAlphabet()); @@ -166,7 +164,7 @@ void SinglePopNPDA::compose(std::deque<sax::Token>& out) const { AutomatonToXMLComposer::composeFinalStates(out, this->getFinalStates()); composeTransitions(out); - out.emplace_back(SinglePopNPDA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(SinglePopNPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } void SinglePopNPDA::composeTransitions(std::deque<sax::Token>& out) const { diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.h b/alib2data/src/automaton/PDA/SinglePopNPDA.h index 1826114c48..4dc2e75ce0 100644 --- a/alib2data/src/automaton/PDA/SinglePopNPDA.h +++ b/alib2data/src/automaton/PDA/SinglePopNPDA.h @@ -170,7 +170,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "SinglePopNPDA"; + + return xmlTagName; + } static SinglePopNPDA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, SinglePopNPDA & automaton ); diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp index 3b51759bd3..58ad4a44ef 100644 --- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp +++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp @@ -232,10 +232,8 @@ VisiblyPushdownDPDA::operator std::string () const { return ss.str(); } -const std::string VisiblyPushdownDPDA::XML_TAG_NAME = "VisiblyPushdownDPDA"; - VisiblyPushdownDPDA VisiblyPushdownDPDA::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, VisiblyPushdownDPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, VisiblyPushdownDPDA::getXmlTagName()); std::set<State> states = AutomatonFromXMLParser::parseStates(input); std::set<alphabet::Symbol> callAlphabet = AutomatonFromXMLParser::parseCallInputAlphabet(input); @@ -256,7 +254,7 @@ VisiblyPushdownDPDA VisiblyPushdownDPDA::parse(std::deque<sax::Token>::iterator& AutomatonFromXMLParser::parseTransitions<VisiblyPushdownDPDA>(input, automaton); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, VisiblyPushdownDPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, VisiblyPushdownDPDA::getXmlTagName()); return automaton; } @@ -291,7 +289,7 @@ void VisiblyPushdownDPDA::parseTransition(std::deque<sax::Token>::iterator& inpu } void VisiblyPushdownDPDA::compose(std::deque<sax::Token>& out) const { - out.emplace_back(VisiblyPushdownDPDA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(VisiblyPushdownDPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); AutomatonToXMLComposer::composeStates(out, this->getStates()); AutomatonToXMLComposer::composeCallInputAlphabet(out, this->getCallInputAlphabet()); @@ -303,7 +301,7 @@ void VisiblyPushdownDPDA::compose(std::deque<sax::Token>& out) const { AutomatonToXMLComposer::composeFinalStates(out, this->getFinalStates()); composeTransitions(out); - out.emplace_back(VisiblyPushdownDPDA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(VisiblyPushdownDPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } void VisiblyPushdownDPDA::composeTransitions(std::deque<sax::Token>& out) const { diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h index 9dcef9e692..c126dff616 100644 --- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h +++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h @@ -242,7 +242,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "VisiblyPushdownDPDA"; + + return xmlTagName; + } static VisiblyPushdownDPDA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, VisiblyPushdownDPDA & automaton ); diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp index 209f122840..3113c5bd6d 100644 --- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp +++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp @@ -157,10 +157,8 @@ VisiblyPushdownNPDA::operator std::string () const { return ss.str(); } -const std::string VisiblyPushdownNPDA::XML_TAG_NAME = "VisiblyPushdownNPDA"; - VisiblyPushdownNPDA VisiblyPushdownNPDA::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, VisiblyPushdownNPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, VisiblyPushdownNPDA::getXmlTagName()); std::set<State> states = AutomatonFromXMLParser::parseStates(input); std::set<alphabet::Symbol> callInputAlphabet = AutomatonFromXMLParser::parseCallInputAlphabet(input); @@ -182,7 +180,7 @@ VisiblyPushdownNPDA VisiblyPushdownNPDA::parse(std::deque<sax::Token>::iterator& AutomatonFromXMLParser::parseTransitions<VisiblyPushdownNPDA>(input, automaton); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, VisiblyPushdownNPDA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, VisiblyPushdownNPDA::getXmlTagName()); return automaton; } @@ -217,7 +215,7 @@ void VisiblyPushdownNPDA::parseTransition(std::deque<sax::Token>::iterator& inpu } void VisiblyPushdownNPDA::compose(std::deque<sax::Token>& out) const { - out.emplace_back(VisiblyPushdownNPDA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(VisiblyPushdownNPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); AutomatonToXMLComposer::composeStates(out, this->getStates()); AutomatonToXMLComposer::composeCallInputAlphabet(out, this->getCallInputAlphabet()); @@ -229,7 +227,7 @@ void VisiblyPushdownNPDA::compose(std::deque<sax::Token>& out) const { AutomatonToXMLComposer::composeFinalStates(out, this->getFinalStates()); composeTransitions(out); - out.emplace_back(VisiblyPushdownNPDA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(VisiblyPushdownNPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } void VisiblyPushdownNPDA::composeTransitions(std::deque<sax::Token>& out) const { diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h index 3c0237a621..35f8583128 100644 --- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h +++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h @@ -250,7 +250,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "VisiblyPushdownNPDA"; + + return xmlTagName; + } static VisiblyPushdownNPDA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, VisiblyPushdownNPDA & automaton ); diff --git a/alib2data/src/automaton/TA/DFTA.cpp b/alib2data/src/automaton/TA/DFTA.cpp index 911d8edfae..ce461570ef 100644 --- a/alib2data/src/automaton/TA/DFTA.cpp +++ b/alib2data/src/automaton/TA/DFTA.cpp @@ -96,10 +96,8 @@ DFTA::operator std::string () const { return ss.str(); } -const std::string DFTA::XML_TAG_NAME = "DFTA"; - DFTA DFTA::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, DFTA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, DFTA::getXmlTagName()); std::set<State> states = AutomatonFromXMLParser::parseStates(input); std::set<alphabet::RankedSymbol> inputSymbols = AutomatonFromXMLParser::parseRankedInputAlphabet(input); @@ -112,7 +110,7 @@ DFTA DFTA::parse(std::deque<sax::Token>::iterator& input) { AutomatonFromXMLParser::parseTransitions<DFTA>(input, automaton); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, DFTA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, DFTA::getXmlTagName()); return automaton; } @@ -127,14 +125,14 @@ void DFTA::parseTransition(std::deque<sax::Token>::iterator& input, DFTA& automa } void DFTA::compose(std::deque<sax::Token>& out) const { - out.emplace_back(DFTA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(DFTA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); AutomatonToXMLComposer::composeStates(out, this->getStates()); AutomatonToXMLComposer::composeRankedInputAlphabet(out, this->getInputAlphabet()); AutomatonToXMLComposer::composeFinalStates(out, this->getFinalStates()); composeTransitions(out); - out.emplace_back(DFTA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(DFTA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } void DFTA::composeTransitions(std::deque<sax::Token>& out) const { diff --git a/alib2data/src/automaton/TA/DFTA.h b/alib2data/src/automaton/TA/DFTA.h index f715de18cf..9f313cfca7 100644 --- a/alib2data/src/automaton/TA/DFTA.h +++ b/alib2data/src/automaton/TA/DFTA.h @@ -124,7 +124,11 @@ public: virtual operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "DFTA"; + + return xmlTagName; + } static DFTA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, DFTA & automaton ); diff --git a/alib2data/src/automaton/TA/NFTA.cpp b/alib2data/src/automaton/TA/NFTA.cpp index 93a6989ee8..484e7b81e8 100644 --- a/alib2data/src/automaton/TA/NFTA.cpp +++ b/alib2data/src/automaton/TA/NFTA.cpp @@ -103,10 +103,8 @@ NFTA::operator std::string () const { return ss.str(); } -const std::string NFTA::XML_TAG_NAME = "NFTA"; - NFTA NFTA::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, NFTA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, NFTA::getXmlTagName()); std::set<State> states = AutomatonFromXMLParser::parseStates(input); std::set<alphabet::RankedSymbol> inputSymbols = AutomatonFromXMLParser::parseRankedInputAlphabet(input); @@ -119,7 +117,7 @@ NFTA NFTA::parse(std::deque<sax::Token>::iterator& input) { AutomatonFromXMLParser::parseTransitions<NFTA>(input, automaton); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, NFTA::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, NFTA::getXmlTagName()); return automaton; } @@ -134,14 +132,14 @@ void NFTA::parseTransition(std::deque<sax::Token>::iterator& input, NFTA& automa } void NFTA::compose(std::deque<sax::Token>& out) const { - out.emplace_back(NFTA::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(NFTA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); AutomatonToXMLComposer::composeStates(out, this->getStates()); AutomatonToXMLComposer::composeRankedInputAlphabet(out, this->getInputAlphabet()); AutomatonToXMLComposer::composeFinalStates(out, this->getFinalStates()); composeTransitions(out); - out.emplace_back(NFTA::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(NFTA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } void NFTA::composeTransitions(std::deque<sax::Token>& out) const { diff --git a/alib2data/src/automaton/TA/NFTA.h b/alib2data/src/automaton/TA/NFTA.h index e3c906c37a..8b736aeff0 100644 --- a/alib2data/src/automaton/TA/NFTA.h +++ b/alib2data/src/automaton/TA/NFTA.h @@ -136,7 +136,11 @@ public: virtual operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "NFTA"; + + return xmlTagName; + } static NFTA parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, NFTA & automaton ); diff --git a/alib2data/src/automaton/TM/OneTapeDTM.cpp b/alib2data/src/automaton/TM/OneTapeDTM.cpp index daedf9ea4d..d52d7046a5 100644 --- a/alib2data/src/automaton/TM/OneTapeDTM.cpp +++ b/alib2data/src/automaton/TM/OneTapeDTM.cpp @@ -110,10 +110,8 @@ OneTapeDTM::operator std::string () const { return ss.str(); } -const std::string OneTapeDTM::XML_TAG_NAME = "OneTapeDTM"; - OneTapeDTM OneTapeDTM::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, OneTapeDTM::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, OneTapeDTM::getXmlTagName()); std::set<State> states = AutomatonFromXMLParser::parseStates(input); std::set<alphabet::Symbol> tapeSymbols = AutomatonFromXMLParser::parseTapeAlphabet(input); @@ -130,7 +128,7 @@ OneTapeDTM OneTapeDTM::parse(std::deque<sax::Token>::iterator& input) { AutomatonFromXMLParser::parseTransitions<OneTapeDTM>(input, automaton); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, OneTapeDTM::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, OneTapeDTM::getXmlTagName()); return automaton; } @@ -147,7 +145,7 @@ void OneTapeDTM::parseTransition(std::deque<sax::Token>::iterator& input, OneTap } void OneTapeDTM::compose(std::deque<sax::Token>& out) const { - out.emplace_back(OneTapeDTM::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(OneTapeDTM::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); AutomatonToXMLComposer::composeStates(out, this->getStates()); AutomatonToXMLComposer::composeTapeAlphabet(out, this->getTapeAlphabet()); @@ -157,7 +155,7 @@ void OneTapeDTM::compose(std::deque<sax::Token>& out) const { AutomatonToXMLComposer::composeFinalStates(out, this->getFinalStates()); composeTransitions(out); - out.emplace_back(OneTapeDTM::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(OneTapeDTM::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } void OneTapeDTM::composeTransitions(std::deque<sax::Token>& out) const { diff --git a/alib2data/src/automaton/TM/OneTapeDTM.h b/alib2data/src/automaton/TM/OneTapeDTM.h index fae130f560..2fd9ae681a 100644 --- a/alib2data/src/automaton/TM/OneTapeDTM.h +++ b/alib2data/src/automaton/TM/OneTapeDTM.h @@ -163,7 +163,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "OneTapeDTM"; + + return xmlTagName; + } static OneTapeDTM parse ( std::deque < sax::Token >::iterator & input ); static void parseTransition ( std::deque < sax::Token >::iterator & input, OneTapeDTM & automaton ); diff --git a/alib2data/src/automaton/common/State.cpp b/alib2data/src/automaton/common/State.cpp index c0ea30534a..f9fc60f8ea 100644 --- a/alib2data/src/automaton/common/State.cpp +++ b/alib2data/src/automaton/common/State.cpp @@ -62,8 +62,6 @@ State::operator std::string () const { return (std::string) name; } -const std::string State::XML_TAG_NAME = "State"; - State State::parse(std::deque<sax::Token>::iterator& input) { return State(alib::xmlApi<label::Label>::parse(input)); } @@ -81,7 +79,7 @@ automaton::State xmlApi<automaton::State>::parse(std::deque<sax::Token>::iterato } bool xmlApi<automaton::State>::first(const std::deque<sax::Token>::const_iterator& input) { - return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, automaton::State::XML_TAG_NAME); + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, automaton::State::getXmlTagName()); } void xmlApi<automaton::State>::compose(std::deque<sax::Token>& output, const automaton::State& data) { diff --git a/alib2data/src/automaton/common/State.h b/alib2data/src/automaton/common/State.h index 4a73626296..0f1f76be0d 100644 --- a/alib2data/src/automaton/common/State.h +++ b/alib2data/src/automaton/common/State.h @@ -42,15 +42,17 @@ public: explicit operator std::string () const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "State"; + + return xmlTagName; + } static State parse(std::deque<sax::Token>::iterator& input); void compose(std::deque<sax::Token>& out) const; }; -const State FAILSTATE = State("fail"); - } /* namespace automaton */ namespace std { diff --git a/alib2data/src/container/Container.cpp b/alib2data/src/container/Container.cpp index 6a2f320adf..18ed78e592 100644 --- a/alib2data/src/container/Container.cpp +++ b/alib2data/src/container/Container.cpp @@ -8,13 +8,8 @@ #include "Container.h" #include <XmlApi.hpp> -namespace container { - -const std::string Container::XML_TAG_NAME_REF = "ContainerRef"; - -} /* namespace container */ - namespace alib { auto ContainerDeleter = xmlApi < container::Container >::InputContextDeleter ( ); + } diff --git a/alib2data/src/container/Container.h b/alib2data/src/container/Container.h index d22daeaea8..833e3863f1 100644 --- a/alib2data/src/container/Container.h +++ b/alib2data/src/container/Container.h @@ -20,7 +20,11 @@ class Container : public alib::WrapperBase < ContainerBase > { using alib::WrapperBase < ContainerBase >::WrapperBase; public: - const static std::string XML_TAG_NAME_REF; + static const std::string & getXmlTagRefName() { + static std::string xmlTagName = "ContainerRef"; + + return xmlTagName; + } }; } /* namespace container */ diff --git a/alib2data/src/container/ObjectsDeque.cpp b/alib2data/src/container/ObjectsDeque.cpp index cf3aa8d068..b6db2e2c82 100644 --- a/alib2data/src/container/ObjectsDeque.cpp +++ b/alib2data/src/container/ObjectsDeque.cpp @@ -43,8 +43,6 @@ ObjectsDeque::operator std::string ( ) const { return std::move ( ss ).str ( ); } -const std::string ObjectsDeque::XML_TAG_NAME = "Deque"; - ObjectsDeque ObjectsDeque::parse ( std::deque < sax::Token >::iterator & input ) { return ObjectsDeque ( parseRaw < alib::Object > ( input ) ); } diff --git a/alib2data/src/container/ObjectsDeque.h b/alib2data/src/container/ObjectsDeque.h index ba2582dbc8..ba9dd5e939 100644 --- a/alib2data/src/container/ObjectsDeque.h +++ b/alib2data/src/container/ObjectsDeque.h @@ -43,7 +43,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "Deque"; + + return xmlTagName; + } static ObjectsDeque parse ( std::deque < sax::Token >::iterator & input ); template < class T > @@ -56,25 +60,25 @@ public: template < class T > std::deque < T > ObjectsDeque::parseRaw ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ObjectsDeque::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ObjectsDeque::getXmlTagName() ); std::deque < T > deque; while ( sax::FromXMLParserHelper::isTokenType ( input, sax::Token::TokenType::START_ELEMENT ) ) deque.push_back ( alib::xmlApi < T >::parse ( input ) ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ObjectsDeque::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ObjectsDeque::getXmlTagName() ); return deque; } template < class T > void ObjectsDeque::compose ( std::deque < sax::Token > & out, const std::deque < T > & input ) { - out.emplace_back ( ObjectsDeque::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( ObjectsDeque::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); for ( const T & item : input ) alib::xmlApi < T >::compose ( out, item ); - out.emplace_back ( ObjectsDeque::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( ObjectsDeque::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace container */ @@ -95,7 +99,7 @@ std::deque < T > xmlApi < std::deque < T > >::parse ( std::deque < sax::Token >: template < typename T > bool xmlApi < std::deque < T > >::first ( const std::deque < sax::Token >::const_iterator & input ) { - return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, container::ObjectsDeque::XML_TAG_NAME ); + return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, container::ObjectsDeque::getXmlTagName() ); } template < typename T > diff --git a/alib2data/src/container/ObjectsList.cpp b/alib2data/src/container/ObjectsList.cpp index 7beb376796..01f88d8104 100644 --- a/alib2data/src/container/ObjectsList.cpp +++ b/alib2data/src/container/ObjectsList.cpp @@ -43,8 +43,6 @@ ObjectsList::operator std::string ( ) const { return std::move ( ss ).str ( ); } -const std::string ObjectsList::XML_TAG_NAME = "List"; - ObjectsList ObjectsList::parse ( std::deque < sax::Token >::iterator & input ) { return ObjectsList ( parseRaw < alib::Object > ( input ) ); } diff --git a/alib2data/src/container/ObjectsList.h b/alib2data/src/container/ObjectsList.h index 9d4819cc51..f95accf3e2 100644 --- a/alib2data/src/container/ObjectsList.h +++ b/alib2data/src/container/ObjectsList.h @@ -43,7 +43,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "List"; + + return xmlTagName; + } static ObjectsList parse ( std::deque < sax::Token >::iterator & input ); template < class T > @@ -56,25 +60,25 @@ public: template < class T > std::list < T > ObjectsList::parseRaw ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ObjectsList::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ObjectsList::getXmlTagName() ); std::list < T > list; while ( sax::FromXMLParserHelper::isTokenType ( input, sax::Token::TokenType::START_ELEMENT ) ) list.push_back ( alib::xmlApi < T >::parse ( input ) ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ObjectsList::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ObjectsList::getXmlTagName() ); return list; } template < class T > void ObjectsList::compose ( std::deque < sax::Token > & out, const std::list < T > & input ) { - out.emplace_back ( ObjectsList::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( ObjectsList::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); for ( const T & item : input ) alib::xmlApi < T >::compose ( out, item ); - out.emplace_back ( ObjectsList::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( ObjectsList::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace container */ @@ -95,7 +99,7 @@ std::list < T > xmlApi < std::list < T > >::parse ( std::deque < sax::Token >::i template < typename T > bool xmlApi < std::list < T > >::first ( const std::deque < sax::Token >::const_iterator & input ) { - return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, container::ObjectsList::XML_TAG_NAME ); + return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, container::ObjectsList::getXmlTagName() ); } template < typename T > diff --git a/alib2data/src/container/ObjectsMap.cpp b/alib2data/src/container/ObjectsMap.cpp index b508a919b1..39959a6b90 100644 --- a/alib2data/src/container/ObjectsMap.cpp +++ b/alib2data/src/container/ObjectsMap.cpp @@ -46,8 +46,6 @@ ObjectsMap::operator std::string() const { return std::move(ss).str(); } -const std::string ObjectsMap::XML_TAG_NAME = "Map"; - ObjectsMap ObjectsMap::parse(std::deque<sax::Token>::iterator& input) { return ObjectsMap(parseRaw<alib::Object, alib::Object>(input)); } diff --git a/alib2data/src/container/ObjectsMap.h b/alib2data/src/container/ObjectsMap.h index bd06281426..d5e52679c9 100644 --- a/alib2data/src/container/ObjectsMap.h +++ b/alib2data/src/container/ObjectsMap.h @@ -44,7 +44,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "Map"; + + return xmlTagName; + } static ObjectsMap parse ( std::deque < sax::Token >::iterator & input ); template < class T, class R > @@ -57,25 +61,25 @@ public: template < class T, class R > std::map < T, R > ObjectsMap::parseRaw ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ObjectsMap::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ObjectsMap::getXmlTagName() ); std::map < T, R > map; while ( sax::FromXMLParserHelper::isTokenType ( input, sax::Token::TokenType::START_ELEMENT ) ) map.insert ( alib::xmlApi < std::pair < T, R > >::parse ( input ) ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ObjectsMap::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ObjectsMap::getXmlTagName() ); return map; } template < class T, class R > void ObjectsMap::compose ( std::deque < sax::Token > & out, const std::map < T, R > & input ) { - out.emplace_back ( ObjectsMap::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( ObjectsMap::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); for ( const std::pair < const T, R > & item : input ) alib::xmlApi < std::pair < T, R > >::compose ( out, item ); - out.emplace_back ( ObjectsMap::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( ObjectsMap::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace container */ @@ -96,7 +100,7 @@ std::map < T, R > xmlApi < std::map < T, R > >::parse ( std::deque < sax::Token template < typename T, typename R > bool xmlApi < std::map < T, R > >::first ( const std::deque < sax::Token >::const_iterator & input ) { - return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, container::ObjectsMap::XML_TAG_NAME ); + return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, container::ObjectsMap::getXmlTagName() ); } template < typename T, typename R > diff --git a/alib2data/src/container/ObjectsPair.cpp b/alib2data/src/container/ObjectsPair.cpp index a1e249a726..179f7dc3c6 100644 --- a/alib2data/src/container/ObjectsPair.cpp +++ b/alib2data/src/container/ObjectsPair.cpp @@ -46,8 +46,6 @@ ObjectsPair::operator std::string() const { return std::move(ss).str(); } -const std::string ObjectsPair::XML_TAG_NAME = "Pair"; - ObjectsPair ObjectsPair::parse(std::deque<sax::Token>::iterator& input) { return ObjectsPair(parseRaw<alib::Object, alib::Object>(input)); } diff --git a/alib2data/src/container/ObjectsPair.h b/alib2data/src/container/ObjectsPair.h index d12fecdcc6..7b1a929fc9 100644 --- a/alib2data/src/container/ObjectsPair.h +++ b/alib2data/src/container/ObjectsPair.h @@ -43,7 +43,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "Pair"; + + return xmlTagName; + } static ObjectsPair parse ( std::deque < sax::Token >::iterator & input ); template < class T, class R > @@ -56,24 +60,24 @@ public: template < class T, class R > std::pair < T, R > ObjectsPair::parseRaw ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ObjectsPair::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ObjectsPair::getXmlTagName() ); T first = alib::xmlApi < T >::parse ( input ); R second = alib::xmlApi < R >::parse ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ObjectsPair::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ObjectsPair::getXmlTagName() ); return std::make_pair ( std::move ( first ), std::move ( second ) ); } template < class T, class R > void ObjectsPair::compose ( std::deque < sax::Token > & out, const std::pair < T, R > & input ) { - out.emplace_back ( ObjectsPair::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( ObjectsPair::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); alib::xmlApi < T >::compose ( out, input.first ); alib::xmlApi < R >::compose ( out, input.second ); - out.emplace_back ( ObjectsPair::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( ObjectsPair::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace container */ @@ -94,7 +98,7 @@ std::pair < T, R > xmlApi < std::pair < T, R > >::parse ( std::deque < sax::Toke template < typename T, typename R > bool xmlApi < std::pair < T, R > >::first ( const std::deque < sax::Token >::const_iterator & input ) { - return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, container::ObjectsPair::XML_TAG_NAME ); + return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, container::ObjectsPair::getXmlTagName() ); } template < typename T, typename R > diff --git a/alib2data/src/container/ObjectsSet.cpp b/alib2data/src/container/ObjectsSet.cpp index 9bf5cd8aff..0f1ac45d8b 100644 --- a/alib2data/src/container/ObjectsSet.cpp +++ b/alib2data/src/container/ObjectsSet.cpp @@ -44,8 +44,6 @@ ObjectsSet::operator std::string() const { return std::move(ss).str(); } -const std::string ObjectsSet::XML_TAG_NAME = "Set"; - ObjectsSet ObjectsSet::parse(std::deque<sax::Token>::iterator& input) { return ObjectsSet(parseRaw<alib::Object>(input)); } diff --git a/alib2data/src/container/ObjectsSet.h b/alib2data/src/container/ObjectsSet.h index e129ca1920..c42cb69456 100644 --- a/alib2data/src/container/ObjectsSet.h +++ b/alib2data/src/container/ObjectsSet.h @@ -43,7 +43,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "Set"; + + return xmlTagName; + } static ObjectsSet parse ( std::deque < sax::Token >::iterator & input ); template < class T > @@ -56,25 +60,25 @@ public: template < class T > std::set < T > ObjectsSet::parseRaw ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ObjectsSet::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ObjectsSet::getXmlTagName() ); std::set < T > set; while ( sax::FromXMLParserHelper::isTokenType ( input, sax::Token::TokenType::START_ELEMENT ) ) set.insert ( alib::xmlApi < T >::parse ( input ) ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ObjectsSet::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ObjectsSet::getXmlTagName() ); return set; } template < class T > void ObjectsSet::compose ( std::deque < sax::Token > & out, const std::set < T > & input ) { - out.emplace_back ( ObjectsSet::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( ObjectsSet::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); for ( const T & item : input ) alib::xmlApi < T >::compose ( out, item ); - out.emplace_back ( ObjectsSet::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( ObjectsSet::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace container */ @@ -95,7 +99,7 @@ std::set < T > xmlApi < std::set < T > >::parse ( std::deque < sax::Token >::ite template < typename T > bool xmlApi < std::set < T > >::first ( const std::deque < sax::Token >::const_iterator & input ) { - return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, container::ObjectsSet::XML_TAG_NAME ); + return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, container::ObjectsSet::getXmlTagName() ); } template < typename T > diff --git a/alib2data/src/container/ObjectsTuple.cpp b/alib2data/src/container/ObjectsTuple.cpp deleted file mode 100644 index 4669d118a2..0000000000 --- a/alib2data/src/container/ObjectsTuple.cpp +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Tuple.cpp - * - * Created on: May 7, 2016 - * Author: Jan Travnicek - */ - -#include "ObjectsTuple.h" - -namespace container { - -const std::string ObjectsTuple::XML_TAG_NAME = "Tuple"; - -} /* namespace container */ diff --git a/alib2data/src/container/ObjectsTuple.h b/alib2data/src/container/ObjectsTuple.h index aa9e887b36..9ccc54aa7d 100644 --- a/alib2data/src/container/ObjectsTuple.h +++ b/alib2data/src/container/ObjectsTuple.h @@ -25,7 +25,11 @@ private: explicit ObjectsTuple ( ); public: - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "Tuple"; + + return xmlTagName; + } template < class ... Ts > static std::tuple < Ts ... > parseRaw ( std::deque < sax::Token >::iterator & input ); @@ -36,11 +40,11 @@ public: template < typename ... Ts > std::tuple < Ts ... > ObjectsTuple::parseRaw ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ObjectsTuple::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ObjectsTuple::getXmlTagName() ); return std::tuple < Ts ... > { alib::xmlApi < Ts >::parse ( input ) ... }; // NOTE buggy in gcc < 4.9.1 - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ObjectsTuple::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ObjectsTuple::getXmlTagName() ); } template < class ... Ts, size_t ... I > @@ -50,11 +54,11 @@ void tupleComposeHelper ( std::deque < sax::Token > & out, const std::tuple < Ts template < typename ... Ts > void ObjectsTuple::compose ( std::deque < sax::Token > & out, const std::tuple < Ts ... > & container ) { - out.emplace_back ( ObjectsTuple::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( ObjectsTuple::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); tupleComposeHelper ( out, container, std::make_index_sequence < std::tuple_size < std::tuple < Ts ... > >::value > { } ); - out.emplace_back ( ObjectsTuple::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( ObjectsTuple::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace container */ @@ -75,7 +79,7 @@ std::tuple < Ts ... > xmlApi < std::tuple < Ts ... > >::parse ( std::deque < sax template < typename ... Ts > bool xmlApi < std::tuple < Ts ... > >::first ( const std::deque < sax::Token >::const_iterator & input ) { - return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, container::ObjectsTuple::XML_TAG_NAME ); + return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, container::ObjectsTuple::getXmlTagName() ); } template < typename ... Ts > diff --git a/alib2data/src/container/ObjectsVector.cpp b/alib2data/src/container/ObjectsVector.cpp index 8253e946f9..6908341f89 100644 --- a/alib2data/src/container/ObjectsVector.cpp +++ b/alib2data/src/container/ObjectsVector.cpp @@ -43,8 +43,6 @@ ObjectsVector::operator std::string ( ) const { return std::move ( ss ).str ( ); } -const std::string ObjectsVector::XML_TAG_NAME = "Vector"; - ObjectsVector ObjectsVector::parse ( std::deque < sax::Token >::iterator & input ) { return ObjectsVector ( parseRaw < alib::Object > ( input ) ); } diff --git a/alib2data/src/container/ObjectsVector.h b/alib2data/src/container/ObjectsVector.h index be3aabb715..0f5b2bd37b 100644 --- a/alib2data/src/container/ObjectsVector.h +++ b/alib2data/src/container/ObjectsVector.h @@ -43,7 +43,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "Vector"; + + return xmlTagName; + } static ObjectsVector parse ( std::deque < sax::Token >::iterator & input ); template < class T > @@ -56,25 +60,25 @@ public: template < class T > std::vector < T > ObjectsVector::parseRaw ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ObjectsVector::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ObjectsVector::getXmlTagName() ); std::vector < T > vector; while ( sax::FromXMLParserHelper::isTokenType ( input, sax::Token::TokenType::START_ELEMENT ) ) vector.push_back ( alib::xmlApi < T >::parse ( input ) ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ObjectsVector::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ObjectsVector::getXmlTagName() ); return vector; } template < class T > void ObjectsVector::compose ( std::deque < sax::Token > & out, const std::vector < T > & input ) { - out.emplace_back ( ObjectsVector::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( ObjectsVector::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); for ( const T & item : input ) alib::xmlApi < T >::compose ( out, item ); - out.emplace_back ( ObjectsVector::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( ObjectsVector::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace container */ @@ -95,7 +99,7 @@ std::vector < T > xmlApi < std::vector < T > >::parse ( std::deque < sax::Token template < typename T > bool xmlApi < std::vector < T > >::first ( const std::deque < sax::Token >::const_iterator & input ) { - return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, container::ObjectsVector::XML_TAG_NAME ); + return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, container::ObjectsVector::getXmlTagName() ); } template < typename T > diff --git a/alib2data/src/grammar/ContextFree/CFG.cpp b/alib2data/src/grammar/ContextFree/CFG.cpp index 88eb5455ca..a89836b6a8 100644 --- a/alib2data/src/grammar/ContextFree/CFG.cpp +++ b/alib2data/src/grammar/ContextFree/CFG.cpp @@ -99,10 +99,8 @@ CFG::operator std::string ( ) const { return ss.str ( ); } -const std::string CFG::XML_TAG_NAME = "CFG"; - CFG CFG::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, CFG::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, CFG::getXmlTagName() ); std::set < alphabet::Symbol > nonterminalAlphabet = GrammarFromXMLParser::parseNonterminalAlphabet ( input ); std::set < alphabet::Symbol > terminalAlphabet = GrammarFromXMLParser::parseTerminalAlphabet ( input ); @@ -115,7 +113,7 @@ CFG CFG::parse ( std::deque < sax::Token >::iterator & input ) { GrammarFromXMLParser::parseRules ( input, grammar ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, CFG::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, CFG::getXmlTagName() ); return grammar; } @@ -127,14 +125,14 @@ void CFG::parseRule ( std::deque < sax::Token >::iterator & input, CFG & grammar } void CFG::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( CFG::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( CFG::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); GrammarToXMLComposer::composeNonterminalAlphabet ( out, this->getNonterminalAlphabet ( ) ); GrammarToXMLComposer::composeTerminalAlphabet ( out, this->getTerminalAlphabet ( ) ); GrammarToXMLComposer::composeInitialSymbol ( out, this->getInitialSymbol ( ) ); composeRules ( out ); - out.emplace_back ( CFG::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( CFG::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void CFG::composeRules ( std::deque < sax::Token > & out ) const { @@ -235,6 +233,6 @@ auto CFGParserRegister = xmlApi < grammar::Grammar >::ParserRegister < grammar:: auto CFGParserRegister2 = xmlApi < alib::Object >::ParserRegister < grammar::CFG > ( ); auto CFGEpsilonFreeCFG = castApi::CastRegister < grammar::CFG, grammar::EpsilonFreeCFG > ( ); -auto CFGCastBinder = castApi::CastPoolStringBinder < grammar::CFG > ( grammar::CFG::XML_TAG_NAME ); +auto CFGCastBinder = castApi::CastPoolStringBinder < grammar::CFG > ( grammar::CFG::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/grammar/ContextFree/CFG.h b/alib2data/src/grammar/ContextFree/CFG.h index c2baf0d6dd..0fd7cb2924 100644 --- a/alib2data/src/grammar/ContextFree/CFG.h +++ b/alib2data/src/grammar/ContextFree/CFG.h @@ -94,7 +94,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "CFG"; + + return xmlTagName; + } static CFG parse ( std::deque < sax::Token >::iterator & input ); static void parseRule ( std::deque < sax::Token >::iterator & input, CFG & grammar ); diff --git a/alib2data/src/grammar/ContextFree/CNF.cpp b/alib2data/src/grammar/ContextFree/CNF.cpp index aa7b5671e2..e76339e1b8 100644 --- a/alib2data/src/grammar/ContextFree/CNF.cpp +++ b/alib2data/src/grammar/ContextFree/CNF.cpp @@ -177,10 +177,8 @@ CNF::operator std::string ( ) const { return ss.str ( ); } -const std::string CNF::XML_TAG_NAME = "CNF"; - CNF CNF::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, CNF::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, CNF::getXmlTagName() ); std::set < alphabet::Symbol > nonterminalAlphabet = GrammarFromXMLParser::parseNonterminalAlphabet ( input ); std::set < alphabet::Symbol > terminalAlphabet = GrammarFromXMLParser::parseTerminalAlphabet ( input ); @@ -196,7 +194,7 @@ CNF CNF::parse ( std::deque < sax::Token >::iterator & input ) { bool generatesEpsilon = GrammarFromXMLParser::parseGeneratesEpsilon ( input ); grammar.setGeneratesEpsilon ( generatesEpsilon ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, CNF::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, CNF::getXmlTagName() ); return grammar; } @@ -208,7 +206,7 @@ void CNF::parseRule ( std::deque < sax::Token >::iterator & input, CNF & grammar } void CNF::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( CNF::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( CNF::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); GrammarToXMLComposer::composeNonterminalAlphabet ( out, this->getNonterminalAlphabet ( ) ); GrammarToXMLComposer::composeTerminalAlphabet ( out, this->getTerminalAlphabet ( ) ); @@ -216,7 +214,7 @@ void CNF::compose ( std::deque < sax::Token > & out ) const { composeRules ( out ); GrammarToXMLComposer::composeGeneratesEpsilon ( out, this->getGeneratesEpsilon ( ) ); - out.emplace_back ( CNF::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( CNF::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void CNF::composeRules ( std::deque < sax::Token > & out ) const { diff --git a/alib2data/src/grammar/ContextFree/CNF.h b/alib2data/src/grammar/ContextFree/CNF.h index 64ca8f4201..eee5fb1451 100644 --- a/alib2data/src/grammar/ContextFree/CNF.h +++ b/alib2data/src/grammar/ContextFree/CNF.h @@ -100,7 +100,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "CNF"; + + return xmlTagName; + } static CNF parse ( std::deque < sax::Token >::iterator & input ); static void parseRule ( std::deque < sax::Token >::iterator & input, CNF & grammar ); diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp index 97184eb1b9..98517f6b01 100644 --- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp +++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp @@ -124,10 +124,8 @@ EpsilonFreeCFG::operator std::string ( ) const { return ss.str ( ); } -const std::string EpsilonFreeCFG::XML_TAG_NAME = "EpsilonFreeCFG"; - EpsilonFreeCFG EpsilonFreeCFG::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, EpsilonFreeCFG::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, EpsilonFreeCFG::getXmlTagName() ); std::set < alphabet::Symbol > nonterminalAlphabet = GrammarFromXMLParser::parseNonterminalAlphabet ( input ); std::set < alphabet::Symbol > terminalAlphabet = GrammarFromXMLParser::parseTerminalAlphabet ( input ); @@ -143,7 +141,7 @@ EpsilonFreeCFG EpsilonFreeCFG::parse ( std::deque < sax::Token >::iterator & inp bool generatesEpsilon = GrammarFromXMLParser::parseGeneratesEpsilon ( input ); grammar.setGeneratesEpsilon ( generatesEpsilon ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, EpsilonFreeCFG::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, EpsilonFreeCFG::getXmlTagName() ); return grammar; } @@ -155,7 +153,7 @@ void EpsilonFreeCFG::parseRule ( std::deque < sax::Token >::iterator & input, Ep } void EpsilonFreeCFG::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( EpsilonFreeCFG::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( EpsilonFreeCFG::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); GrammarToXMLComposer::composeNonterminalAlphabet ( out, this->getNonterminalAlphabet ( ) ); GrammarToXMLComposer::composeTerminalAlphabet ( out, this->getTerminalAlphabet ( ) ); @@ -163,7 +161,7 @@ void EpsilonFreeCFG::compose ( std::deque < sax::Token > & out ) const { composeRules ( out ); GrammarToXMLComposer::composeGeneratesEpsilon ( out, this->getGeneratesEpsilon ( ) ); - out.emplace_back ( EpsilonFreeCFG::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( EpsilonFreeCFG::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void EpsilonFreeCFG::composeRules ( std::deque < sax::Token > & out ) const { diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h index d0c40054e7..2e36217975 100644 --- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h +++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h @@ -95,7 +95,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "EpsilonFreeCFG"; + + return xmlTagName; + } static EpsilonFreeCFG parse ( std::deque < sax::Token >::iterator & input ); static void parseRule ( std::deque < sax::Token >::iterator & input, EpsilonFreeCFG & grammar ); diff --git a/alib2data/src/grammar/ContextFree/GNF.cpp b/alib2data/src/grammar/ContextFree/GNF.cpp index 98821bd949..1bf480c634 100644 --- a/alib2data/src/grammar/ContextFree/GNF.cpp +++ b/alib2data/src/grammar/ContextFree/GNF.cpp @@ -132,10 +132,8 @@ GNF::operator std::string ( ) const { return ss.str ( ); } -const std::string GNF::XML_TAG_NAME = "GNF"; - GNF GNF::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, GNF::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, GNF::getXmlTagName() ); std::set < alphabet::Symbol > nonterminalAlphabet = GrammarFromXMLParser::parseNonterminalAlphabet ( input ); std::set < alphabet::Symbol > terminalAlphabet = GrammarFromXMLParser::parseTerminalAlphabet ( input ); @@ -151,7 +149,7 @@ GNF GNF::parse ( std::deque < sax::Token >::iterator & input ) { bool generatesEpsilon = GrammarFromXMLParser::parseGeneratesEpsilon ( input ); grammar.setGeneratesEpsilon ( generatesEpsilon ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, GNF::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, GNF::getXmlTagName() ); return grammar; } @@ -163,7 +161,7 @@ void GNF::parseRule ( std::deque < sax::Token >::iterator & input, GNF & grammar } void GNF::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( GNF::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( GNF::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); GrammarToXMLComposer::composeNonterminalAlphabet ( out, this->getNonterminalAlphabet ( ) ); GrammarToXMLComposer::composeTerminalAlphabet ( out, this->getTerminalAlphabet ( ) ); @@ -171,7 +169,7 @@ void GNF::compose ( std::deque < sax::Token > & out ) const { composeRules ( out ); GrammarToXMLComposer::composeGeneratesEpsilon ( out, this->getGeneratesEpsilon ( ) ); - out.emplace_back ( GNF::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( GNF::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void GNF::composeRules ( std::deque < sax::Token > & out ) const { diff --git a/alib2data/src/grammar/ContextFree/GNF.h b/alib2data/src/grammar/ContextFree/GNF.h index 1494e3045b..7d521171ed 100644 --- a/alib2data/src/grammar/ContextFree/GNF.h +++ b/alib2data/src/grammar/ContextFree/GNF.h @@ -96,7 +96,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "GNF"; + + return xmlTagName; + } static GNF parse ( std::deque < sax::Token >::iterator & input ); static void parseRule ( std::deque < sax::Token >::iterator & input, GNF & grammar ); diff --git a/alib2data/src/grammar/ContextFree/LG.cpp b/alib2data/src/grammar/ContextFree/LG.cpp index 81cae9483a..d5d5e06ce3 100644 --- a/alib2data/src/grammar/ContextFree/LG.cpp +++ b/alib2data/src/grammar/ContextFree/LG.cpp @@ -163,10 +163,8 @@ LG::operator std::string ( ) const { return ss.str ( ); } -const std::string LG::XML_TAG_NAME = "LG"; - LG LG::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, LG::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, LG::getXmlTagName() ); std::set < alphabet::Symbol > nonterminalAlphabet = GrammarFromXMLParser::parseNonterminalAlphabet ( input ); std::set < alphabet::Symbol > terminalAlphabet = GrammarFromXMLParser::parseTerminalAlphabet ( input ); @@ -179,7 +177,7 @@ LG LG::parse ( std::deque < sax::Token >::iterator & input ) { GrammarFromXMLParser::parseRules ( input, grammar ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, LG::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, LG::getXmlTagName() ); return grammar; } @@ -191,14 +189,14 @@ void LG::parseRule ( std::deque < sax::Token >::iterator & input, LG & grammar ) } void LG::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( LG::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( LG::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); GrammarToXMLComposer::composeNonterminalAlphabet ( out, this->getNonterminalAlphabet ( ) ); GrammarToXMLComposer::composeTerminalAlphabet ( out, this->getTerminalAlphabet ( ) ); GrammarToXMLComposer::composeInitialSymbol ( out, this->getInitialSymbol ( ) ); composeRules ( out ); - out.emplace_back ( LG::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( LG::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void LG::composeRules ( std::deque < sax::Token > & out ) const { diff --git a/alib2data/src/grammar/ContextFree/LG.h b/alib2data/src/grammar/ContextFree/LG.h index d23a676b43..9520c98746 100644 --- a/alib2data/src/grammar/ContextFree/LG.h +++ b/alib2data/src/grammar/ContextFree/LG.h @@ -97,7 +97,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "LG"; + + return xmlTagName; + } static LG parse ( std::deque < sax::Token >::iterator & input ); static void parseRule ( std::deque < sax::Token >::iterator & input, LG & grammar ); diff --git a/alib2data/src/grammar/ContextSensitive/CSG.cpp b/alib2data/src/grammar/ContextSensitive/CSG.cpp index 68f125175c..30e18c58ad 100644 --- a/alib2data/src/grammar/ContextSensitive/CSG.cpp +++ b/alib2data/src/grammar/ContextSensitive/CSG.cpp @@ -100,10 +100,8 @@ CSG::operator std::string ( ) const { return ss.str ( ); } -const std::string CSG::XML_TAG_NAME = "CSG"; - CSG CSG::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, CSG::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, CSG::getXmlTagName() ); std::set < alphabet::Symbol > nonterminalAlphabet = GrammarFromXMLParser::parseNonterminalAlphabet ( input ); std::set < alphabet::Symbol > terminalAlphabet = GrammarFromXMLParser::parseTerminalAlphabet ( input ); @@ -119,7 +117,7 @@ CSG CSG::parse ( std::deque < sax::Token >::iterator & input ) { bool generatesEpsilon = GrammarFromXMLParser::parseGeneratesEpsilon ( input ); grammar.setGeneratesEpsilon ( generatesEpsilon ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, CSG::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, CSG::getXmlTagName() ); return grammar; } @@ -133,7 +131,7 @@ void CSG::parseRule ( std::deque < sax::Token >::iterator & input, CSG & grammar } void CSG::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( CSG::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( CSG::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); GrammarToXMLComposer::composeNonterminalAlphabet ( out, this->getNonterminalAlphabet ( ) ); GrammarToXMLComposer::composeTerminalAlphabet ( out, this->getTerminalAlphabet ( ) ); @@ -141,7 +139,7 @@ void CSG::compose ( std::deque < sax::Token > & out ) const { composeRules ( out ); GrammarToXMLComposer::composeGeneratesEpsilon ( out, this->getGeneratesEpsilon ( ) ); - out.emplace_back ( CSG::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( CSG::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void CSG::composeRules ( std::deque < sax::Token > & out ) const { diff --git a/alib2data/src/grammar/ContextSensitive/CSG.h b/alib2data/src/grammar/ContextSensitive/CSG.h index ed1a87eeb3..d2c69a3169 100644 --- a/alib2data/src/grammar/ContextSensitive/CSG.h +++ b/alib2data/src/grammar/ContextSensitive/CSG.h @@ -89,7 +89,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "CSG"; + + return xmlTagName; + } static CSG parse ( std::deque < sax::Token >::iterator & input ); static void parseRule ( std::deque < sax::Token >::iterator & input, CSG & grammar ); diff --git a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp index ed30d3fc61..1634953fdd 100644 --- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp +++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp @@ -98,10 +98,8 @@ NonContractingGrammar::operator std::string ( ) const { return ss.str ( ); } -const std::string NonContractingGrammar::XML_TAG_NAME = "NonContractingGrammar"; - NonContractingGrammar NonContractingGrammar::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, NonContractingGrammar::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, NonContractingGrammar::getXmlTagName() ); std::set < alphabet::Symbol > nonterminalAlphabet = GrammarFromXMLParser::parseNonterminalAlphabet ( input ); std::set < alphabet::Symbol > terminalAlphabet = GrammarFromXMLParser::parseTerminalAlphabet ( input ); @@ -117,7 +115,7 @@ NonContractingGrammar NonContractingGrammar::parse ( std::deque < sax::Token >:: bool generatesEpsilon = GrammarFromXMLParser::parseGeneratesEpsilon ( input ); grammar.setGeneratesEpsilon ( generatesEpsilon ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, NonContractingGrammar::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, NonContractingGrammar::getXmlTagName() ); return grammar; } @@ -129,7 +127,7 @@ void NonContractingGrammar::parseRule ( std::deque < sax::Token >::iterator & in } void NonContractingGrammar::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( NonContractingGrammar::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( NonContractingGrammar::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); GrammarToXMLComposer::composeNonterminalAlphabet ( out, this->getNonterminalAlphabet ( ) ); GrammarToXMLComposer::composeTerminalAlphabet ( out, this->getTerminalAlphabet ( ) ); @@ -137,7 +135,7 @@ void NonContractingGrammar::compose ( std::deque < sax::Token > & out ) const { composeRules ( out ); GrammarToXMLComposer::composeGeneratesEpsilon ( out, this->getGeneratesEpsilon ( ) ); - out.emplace_back ( NonContractingGrammar::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( NonContractingGrammar::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void NonContractingGrammar::composeRules ( std::deque < sax::Token > & out ) const { diff --git a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h index d7b750540a..c02115c423 100644 --- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h +++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h @@ -89,7 +89,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "NonContractingGrammar"; + + return xmlTagName; + } static NonContractingGrammar parse ( std::deque < sax::Token >::iterator & input ); static void parseRule ( std::deque < sax::Token >::iterator & input, NonContractingGrammar & grammar ); diff --git a/alib2data/src/grammar/Grammar.cpp b/alib2data/src/grammar/Grammar.cpp index 4f37b12ecb..e138eb3e49 100644 --- a/alib2data/src/grammar/Grammar.cpp +++ b/alib2data/src/grammar/Grammar.cpp @@ -8,12 +8,6 @@ #include "Grammar.h" #include <XmlApi.hpp> -namespace grammar { - -const std::string Grammar::XML_TAG_NAME_REF = "GrammarRef"; - -} /* namespace grammar */ - namespace alib { auto GrammarDeleter = xmlApi < grammar::Grammar >::InputContextDeleter ( ); diff --git a/alib2data/src/grammar/Grammar.h b/alib2data/src/grammar/Grammar.h index 8b5c0bd0b4..ad68385b4d 100644 --- a/alib2data/src/grammar/Grammar.h +++ b/alib2data/src/grammar/Grammar.h @@ -20,7 +20,11 @@ class Grammar : public alib::WrapperBase < GrammarBase > { using alib::WrapperBase < GrammarBase >::WrapperBase; public: - const static std::string XML_TAG_NAME_REF; + static const std::string & getXmlTagRefName() { + static std::string xmlTagName = "GrammarRef"; + + return xmlTagName; + } }; } /* namespace grammar */ diff --git a/alib2data/src/grammar/Regular/LeftLG.cpp b/alib2data/src/grammar/Regular/LeftLG.cpp index ae6e7f893d..7f0c24f42f 100644 --- a/alib2data/src/grammar/Regular/LeftLG.cpp +++ b/alib2data/src/grammar/Regular/LeftLG.cpp @@ -150,10 +150,8 @@ LeftLG::operator std::string ( ) const { return ss.str ( ); } -const std::string LeftLG::XML_TAG_NAME = "LeftLG"; - LeftLG LeftLG::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, LeftLG::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, LeftLG::getXmlTagName() ); std::set < alphabet::Symbol > nonterminalAlphabet = GrammarFromXMLParser::parseNonterminalAlphabet ( input ); std::set < alphabet::Symbol > terminalAlphabet = GrammarFromXMLParser::parseTerminalAlphabet ( input ); @@ -166,7 +164,7 @@ LeftLG LeftLG::parse ( std::deque < sax::Token >::iterator & input ) { GrammarFromXMLParser::parseRules ( input, grammar ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, LeftLG::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, LeftLG::getXmlTagName() ); return grammar; } @@ -178,14 +176,14 @@ void LeftLG::parseRule ( std::deque < sax::Token >::iterator & input, LeftLG & g } void LeftLG::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( LeftLG::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( LeftLG::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); GrammarToXMLComposer::composeNonterminalAlphabet ( out, this->getNonterminalAlphabet ( ) ); GrammarToXMLComposer::composeTerminalAlphabet ( out, this->getTerminalAlphabet ( ) ); GrammarToXMLComposer::composeInitialSymbol ( out, this->getInitialSymbol ( ) ); composeRules ( out ); - out.emplace_back ( LeftLG::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( LeftLG::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void LeftLG::composeRules ( std::deque < sax::Token > & out ) const { diff --git a/alib2data/src/grammar/Regular/LeftLG.h b/alib2data/src/grammar/Regular/LeftLG.h index 9d57dad219..5b11f3599c 100644 --- a/alib2data/src/grammar/Regular/LeftLG.h +++ b/alib2data/src/grammar/Regular/LeftLG.h @@ -96,7 +96,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "LeftLG"; + + return xmlTagName; + } static LeftLG parse ( std::deque < sax::Token >::iterator & input ); static void parseRule ( std::deque < sax::Token >::iterator & input, LeftLG & grammar ); diff --git a/alib2data/src/grammar/Regular/LeftRG.cpp b/alib2data/src/grammar/Regular/LeftRG.cpp index 87b82ce698..db59311825 100644 --- a/alib2data/src/grammar/Regular/LeftRG.cpp +++ b/alib2data/src/grammar/Regular/LeftRG.cpp @@ -173,10 +173,8 @@ LeftRG::operator std::string ( ) const { return ss.str ( ); } -const std::string LeftRG::XML_TAG_NAME = "LeftRG"; - LeftRG LeftRG::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, LeftRG::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, LeftRG::getXmlTagName() ); std::set < alphabet::Symbol > nonterminalAlphabet = GrammarFromXMLParser::parseNonterminalAlphabet ( input ); std::set < alphabet::Symbol > terminalAlphabet = GrammarFromXMLParser::parseTerminalAlphabet ( input ); @@ -192,7 +190,7 @@ LeftRG LeftRG::parse ( std::deque < sax::Token >::iterator & input ) { bool generatesEpsilon = GrammarFromXMLParser::parseGeneratesEpsilon ( input ); grammar.setGeneratesEpsilon ( generatesEpsilon ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, LeftRG::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, LeftRG::getXmlTagName() ); return grammar; } @@ -204,7 +202,7 @@ void LeftRG::parseRule ( std::deque < sax::Token >::iterator & input, LeftRG & g } void LeftRG::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( LeftRG::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( LeftRG::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); GrammarToXMLComposer::composeNonterminalAlphabet ( out, this->getNonterminalAlphabet ( ) ); GrammarToXMLComposer::composeTerminalAlphabet ( out, this->getTerminalAlphabet ( ) ); @@ -212,7 +210,7 @@ void LeftRG::compose ( std::deque < sax::Token > & out ) const { composeRules ( out ); GrammarToXMLComposer::composeGeneratesEpsilon ( out, this->getGeneratesEpsilon ( ) ); - out.emplace_back ( LeftRG::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( LeftRG::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void LeftRG::composeRules ( std::deque < sax::Token > & out ) const { diff --git a/alib2data/src/grammar/Regular/LeftRG.h b/alib2data/src/grammar/Regular/LeftRG.h index eb704840f6..a8307dfe7b 100644 --- a/alib2data/src/grammar/Regular/LeftRG.h +++ b/alib2data/src/grammar/Regular/LeftRG.h @@ -174,7 +174,11 @@ public: */ virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "LeftRG"; + + return xmlTagName; + } static LeftRG parse ( std::deque < sax::Token >::iterator & input ); static void parseRule ( std::deque < sax::Token >::iterator & input, LeftRG & grammar ); diff --git a/alib2data/src/grammar/Regular/RightLG.cpp b/alib2data/src/grammar/Regular/RightLG.cpp index 59504f775c..3ce8a30432 100644 --- a/alib2data/src/grammar/Regular/RightLG.cpp +++ b/alib2data/src/grammar/Regular/RightLG.cpp @@ -150,10 +150,8 @@ RightLG::operator std::string ( ) const { return ss.str ( ); } -const std::string RightLG::XML_TAG_NAME = "RightLG"; - RightLG RightLG::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, RightLG::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, RightLG::getXmlTagName() ); std::set < alphabet::Symbol > nonterminalAlphabet = GrammarFromXMLParser::parseNonterminalAlphabet ( input ); std::set < alphabet::Symbol > terminalAlphabet = GrammarFromXMLParser::parseTerminalAlphabet ( input ); @@ -166,7 +164,7 @@ RightLG RightLG::parse ( std::deque < sax::Token >::iterator & input ) { GrammarFromXMLParser::parseRules ( input, grammar ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RightLG::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RightLG::getXmlTagName() ); return grammar; } @@ -178,14 +176,14 @@ void RightLG::parseRule ( std::deque < sax::Token >::iterator & input, RightLG & } void RightLG::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( RightLG::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( RightLG::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); GrammarToXMLComposer::composeNonterminalAlphabet ( out, this->getNonterminalAlphabet ( ) ); GrammarToXMLComposer::composeTerminalAlphabet ( out, this->getTerminalAlphabet ( ) ); GrammarToXMLComposer::composeInitialSymbol ( out, this->getInitialSymbol ( ) ); composeRules ( out ); - out.emplace_back ( RightLG::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( RightLG::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void RightLG::composeRules ( std::deque < sax::Token > & out ) const { diff --git a/alib2data/src/grammar/Regular/RightLG.h b/alib2data/src/grammar/Regular/RightLG.h index 40627770e3..e758a27d44 100644 --- a/alib2data/src/grammar/Regular/RightLG.h +++ b/alib2data/src/grammar/Regular/RightLG.h @@ -96,7 +96,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "RightLG"; + + return xmlTagName; + } static RightLG parse ( std::deque < sax::Token >::iterator & input ); static void parseRule ( std::deque < sax::Token >::iterator & input, RightLG & grammar ); diff --git a/alib2data/src/grammar/Regular/RightRG.cpp b/alib2data/src/grammar/Regular/RightRG.cpp index 691f6c1b35..5c34244a69 100644 --- a/alib2data/src/grammar/Regular/RightRG.cpp +++ b/alib2data/src/grammar/Regular/RightRG.cpp @@ -173,10 +173,8 @@ RightRG::operator std::string ( ) const { return ss.str ( ); } -const std::string RightRG::XML_TAG_NAME = "RightRG"; - RightRG RightRG::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, RightRG::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, RightRG::getXmlTagName() ); std::set < alphabet::Symbol > nonterminalAlphabet = GrammarFromXMLParser::parseNonterminalAlphabet ( input ); std::set < alphabet::Symbol > terminalAlphabet = GrammarFromXMLParser::parseTerminalAlphabet ( input ); @@ -190,7 +188,7 @@ RightRG RightRG::parse ( std::deque < sax::Token >::iterator & input ) { grammar.setGeneratesEpsilon ( generatesEpsilon ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RightRG::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RightRG::getXmlTagName() ); return grammar; } @@ -202,7 +200,7 @@ void RightRG::parseRule ( std::deque < sax::Token >::iterator & input, RightRG & } void RightRG::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( RightRG::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( RightRG::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); GrammarToXMLComposer::composeNonterminalAlphabet ( out, getNonterminalAlphabet ( ) ); GrammarToXMLComposer::composeTerminalAlphabet ( out, getTerminalAlphabet ( ) ); @@ -210,7 +208,7 @@ void RightRG::compose ( std::deque < sax::Token > & out ) const { composeRules ( out ); GrammarToXMLComposer::composeGeneratesEpsilon ( out, getGeneratesEpsilon ( ) ); - out.emplace_back ( RightRG::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( RightRG::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void RightRG::composeRules ( std::deque < sax::Token > & out ) const { diff --git a/alib2data/src/grammar/Regular/RightRG.h b/alib2data/src/grammar/Regular/RightRG.h index 719cf53f6c..1b8d85ba74 100644 --- a/alib2data/src/grammar/Regular/RightRG.h +++ b/alib2data/src/grammar/Regular/RightRG.h @@ -117,7 +117,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "RightRG"; + + return xmlTagName; + } static RightRG parse ( std::deque < sax::Token >::iterator & input ); static void parseRule ( std::deque < sax::Token >::iterator & input, RightRG & grammar ); diff --git a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp index b42e55ff75..269fdda994 100644 --- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp +++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp @@ -85,10 +85,8 @@ ContextPreservingUnrestrictedGrammar::operator std::string ( ) const { return ss.str ( ); } -const std::string ContextPreservingUnrestrictedGrammar::XML_TAG_NAME = "ContextPreservingUnrestrictedGrammar"; - ContextPreservingUnrestrictedGrammar ContextPreservingUnrestrictedGrammar::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ContextPreservingUnrestrictedGrammar::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ContextPreservingUnrestrictedGrammar::getXmlTagName() ); std::set < alphabet::Symbol > nonterminalAlphabet = GrammarFromXMLParser::parseNonterminalAlphabet ( input ); std::set < alphabet::Symbol > terminalAlphabet = GrammarFromXMLParser::parseTerminalAlphabet ( input ); @@ -101,7 +99,7 @@ ContextPreservingUnrestrictedGrammar ContextPreservingUnrestrictedGrammar::parse GrammarFromXMLParser::parseRules ( input, grammar ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ContextPreservingUnrestrictedGrammar::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ContextPreservingUnrestrictedGrammar::getXmlTagName() ); return grammar; } @@ -115,14 +113,14 @@ void ContextPreservingUnrestrictedGrammar::parseRule ( std::deque < sax::Token > } void ContextPreservingUnrestrictedGrammar::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( ContextPreservingUnrestrictedGrammar::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( ContextPreservingUnrestrictedGrammar::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); GrammarToXMLComposer::composeNonterminalAlphabet ( out, this->getNonterminalAlphabet ( ) ); GrammarToXMLComposer::composeTerminalAlphabet ( out, this->getTerminalAlphabet ( ) ); GrammarToXMLComposer::composeInitialSymbol ( out, this->getInitialSymbol ( ) ); composeRules ( out ); - out.emplace_back ( ContextPreservingUnrestrictedGrammar::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( ContextPreservingUnrestrictedGrammar::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void ContextPreservingUnrestrictedGrammar::composeRules ( std::deque < sax::Token > & out ) const { diff --git a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h index fc966c3c4c..380024ebef 100644 --- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h +++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h @@ -85,7 +85,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "ContextPreservingUnrestrictedGrammar"; + + return xmlTagName; + } static ContextPreservingUnrestrictedGrammar parse ( std::deque < sax::Token >::iterator & input ); static void parseRule ( std::deque < sax::Token >::iterator & input, ContextPreservingUnrestrictedGrammar & grammar ); diff --git a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp index bb96c38947..da6290017f 100644 --- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp +++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp @@ -83,10 +83,8 @@ UnrestrictedGrammar::operator std::string ( ) const { return ss.str ( ); } -const std::string UnrestrictedGrammar::XML_TAG_NAME = "UnrestrictedGrammar"; - UnrestrictedGrammar UnrestrictedGrammar::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, UnrestrictedGrammar::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, UnrestrictedGrammar::getXmlTagName() ); std::set < alphabet::Symbol > nonterminalAlphabet = GrammarFromXMLParser::parseNonterminalAlphabet ( input ); std::set < alphabet::Symbol > terminalAlphabet = GrammarFromXMLParser::parseTerminalAlphabet ( input ); @@ -99,7 +97,7 @@ UnrestrictedGrammar UnrestrictedGrammar::parse ( std::deque < sax::Token >::iter GrammarFromXMLParser::parseRules ( input, grammar ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, UnrestrictedGrammar::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, UnrestrictedGrammar::getXmlTagName() ); return grammar; } @@ -111,14 +109,14 @@ void UnrestrictedGrammar::parseRule ( std::deque < sax::Token >::iterator & inpu } void UnrestrictedGrammar::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( UnrestrictedGrammar::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( UnrestrictedGrammar::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); GrammarToXMLComposer::composeNonterminalAlphabet ( out, this->getNonterminalAlphabet ( ) ); GrammarToXMLComposer::composeTerminalAlphabet ( out, this->getTerminalAlphabet ( ) ); GrammarToXMLComposer::composeInitialSymbol ( out, this->getInitialSymbol ( ) ); composeRules ( out ); - out.emplace_back ( UnrestrictedGrammar::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( UnrestrictedGrammar::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } void UnrestrictedGrammar::composeRules ( std::deque < sax::Token > & out ) const { diff --git a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h index d01c68a349..756c90c80b 100644 --- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h +++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h @@ -85,7 +85,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "UnrestrictedGrammar"; + + return xmlTagName; + } static UnrestrictedGrammar parse ( std::deque < sax::Token >::iterator & input ); static void parseRule ( std::deque < sax::Token >::iterator & input, UnrestrictedGrammar & grammar ); diff --git a/alib2data/src/graph/Graph.cpp b/alib2data/src/graph/Graph.cpp index fe8f67ea9d..2affcd42d6 100644 --- a/alib2data/src/graph/Graph.cpp +++ b/alib2data/src/graph/Graph.cpp @@ -8,13 +8,8 @@ #include "Graph.h" #include <XmlApi.hpp> -namespace graph { - -const std::string Graph::XML_TAG_NAME_REF = "GraphRef"; - -} /* namespace graph */ - namespace alib { auto GraphDeleter = xmlApi < graph::Graph >::InputContextDeleter ( ); + } diff --git a/alib2data/src/graph/Graph.h b/alib2data/src/graph/Graph.h index 2657de8381..bf4a814397 100644 --- a/alib2data/src/graph/Graph.h +++ b/alib2data/src/graph/Graph.h @@ -18,7 +18,11 @@ class Graph : public alib::WrapperBase < GraphBase > { using alib::WrapperBase < GraphBase >::WrapperBase; public: - const static std::string XML_TAG_NAME_REF; + static const std::string & getXmlTagRefName() { + static std::string xmlTagName = "GraphRef"; + + return xmlTagName; + } }; } // namespace graph diff --git a/alib2data/src/graph/GraphBase.h b/alib2data/src/graph/GraphBase.h index 7cc1c6aec7..2b9a5cf74b 100644 --- a/alib2data/src/graph/GraphBase.h +++ b/alib2data/src/graph/GraphBase.h @@ -45,6 +45,4 @@ class GraphBase : public alib::ObjectBase { } // namespace graph -GRAPH_DEFINE_STD_COMPARE(GraphBase) - #endif // GRAPH_BASE_H_ diff --git a/alib2data/src/graph/common/Macros.h b/alib2data/src/graph/common/Macros.h index 4616245d4c..9a9eb94bed 100644 --- a/alib2data/src/graph/common/Macros.h +++ b/alib2data/src/graph/common/Macros.h @@ -20,16 +20,4 @@ }; \ } \ -#define GRAPH_DEFINE_STD_COMPARE(T) \ - namespace std { \ - template<> \ - struct compare<graph::T> \ - { \ - int operator()(const graph::T &first, const graph::T &second) const \ - { \ - return first.compare(second); \ - } \ - }; \ - } \ - #endif // GRAPH_MACROS_H_ diff --git a/alib2data/src/graph/common/Node.h b/alib2data/src/graph/common/Node.h index eabc403da6..d6223a3324 100644 --- a/alib2data/src/graph/common/Node.h +++ b/alib2data/src/graph/common/Node.h @@ -15,9 +15,11 @@ namespace graph { class Node { + label::Label name; - public: + void dump(std::ostream & os) const; +public: /// should be used only to create variable, to which will be assigned soon Node() : name(label::labelFrom("uninitialized")) {} @@ -39,18 +41,21 @@ class Node { void operator<<(std::ostream & out) const; friend std::ostream & operator<<(std::ostream & out, const Node & node); explicit operator std::string() const; +}; - private: - - void dump(std::ostream & os) const; +} // namespace graph - label::Label name; +namespace std { +template<> +struct compare<graph::Node> { + int operator()(const graph::Node& first, const graph::Node& second) const { + return first.compare(second); + } }; -} // namespace graph +} /* namespace std */ GRAPH_DEFINE_STD_HASH(Node) -GRAPH_DEFINE_STD_COMPARE(Node) #endif // NODE_H_ diff --git a/alib2data/src/graph/directed/AdjacencyListDirectedGraph.cpp b/alib2data/src/graph/directed/AdjacencyListDirectedGraph.cpp index c665d665fe..a086377058 100644 --- a/alib2data/src/graph/directed/AdjacencyListDirectedGraph.cpp +++ b/alib2data/src/graph/directed/AdjacencyListDirectedGraph.cpp @@ -289,11 +289,9 @@ bool AdjacencyListDirectedGraph::removeEdge( const DirectedEdge & edge ) return true; } -const std::string AdjacencyListDirectedGraph::XML_TAG_NAME = "AdjacencyListDirectedGraph"; - AdjacencyListDirectedGraph AdjacencyListDirectedGraph::parse( std::deque<sax::Token>::iterator & input ) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, getXmlTagName()); AdjacencyListDirectedGraph graph; GraphFromXMLParser::parseNodes(input, graph); @@ -301,20 +299,20 @@ AdjacencyListDirectedGraph AdjacencyListDirectedGraph::parse( std::deque<sax::To GraphFromXMLParser::parseNodeValues(input, graph); GraphFromXMLParser::parseDirectedEdgeValues(input, graph); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, getXmlTagName()); return graph; } void AdjacencyListDirectedGraph::compose( std::deque<sax::Token> & out ) const { - out.emplace_back(XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(getXmlTagName(), sax::Token::TokenType::START_ELEMENT); GraphToXMLComposer::composeNodes(out, this->getNodes()); GraphToXMLComposer::composeEdges(out, this->getEdges()); GraphToXMLComposer::composeNodeValues(out, *this); GraphToXMLComposer::composeEdgeValues(out, *this); - out.emplace_back(XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } diff --git a/alib2data/src/graph/directed/AdjacencyListDirectedGraph.h b/alib2data/src/graph/directed/AdjacencyListDirectedGraph.h index 9fefb96406..a114f38a02 100644 --- a/alib2data/src/graph/directed/AdjacencyListDirectedGraph.h +++ b/alib2data/src/graph/directed/AdjacencyListDirectedGraph.h @@ -34,9 +34,11 @@ class UndirectedGraph; */ class AdjacencyListDirectedGraph : public DirectedGraph { + std::unordered_map< Node, std::list< Node > > succ; + std::unordered_map< Node, std::list< Node > > pred; + std::set< DirectedEdge > edges; - public: - +public: AdjacencyListDirectedGraph(); /// constructs an directed adjacency list from any representation of directed graph @@ -81,14 +83,11 @@ class AdjacencyListDirectedGraph : public DirectedGraph { static AdjacencyListDirectedGraph parse( std::deque< sax::Token >::iterator & input ); virtual void compose( std::deque< sax::Token > & out ) const override; - const static std::string XML_TAG_NAME; - - private: - - std::unordered_map< Node, std::list< Node > > succ; - std::unordered_map< Node, std::list< Node > > pred; - std::set< DirectedEdge > edges; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "AdjacencyListDirectedGraph"; + return xmlTagName; + } }; } // namespace graph diff --git a/alib2data/src/graph/directed/AdjacencyMatrixDirectedGraph.cpp b/alib2data/src/graph/directed/AdjacencyMatrixDirectedGraph.cpp index 130c858dc6..d8b433117f 100644 --- a/alib2data/src/graph/directed/AdjacencyMatrixDirectedGraph.cpp +++ b/alib2data/src/graph/directed/AdjacencyMatrixDirectedGraph.cpp @@ -290,11 +290,9 @@ bool AdjacencyMatrixDirectedGraph::removeEdge( const DirectedEdge & edge ) return true; } -const std::string AdjacencyMatrixDirectedGraph::XML_TAG_NAME = "AdjacencyMatrixDirectedGraph"; - AdjacencyMatrixDirectedGraph AdjacencyMatrixDirectedGraph::parse( std::deque<sax::Token>::iterator & input ) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, getXmlTagName()); AdjacencyMatrixDirectedGraph graph; GraphFromXMLParser::parseNodes(input, graph); @@ -302,20 +300,20 @@ AdjacencyMatrixDirectedGraph AdjacencyMatrixDirectedGraph::parse( std::deque<sax GraphFromXMLParser::parseNodeValues(input, graph); GraphFromXMLParser::parseDirectedEdgeValues(input, graph); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, getXmlTagName()); return graph; } void AdjacencyMatrixDirectedGraph::compose( std::deque<sax::Token> & out ) const { - out.emplace_back(XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(getXmlTagName(), sax::Token::TokenType::START_ELEMENT); GraphToXMLComposer::composeNodes(out, this->getNodes()); GraphToXMLComposer::composeEdges(out, this->getEdges()); GraphToXMLComposer::composeNodeValues(out, *this); GraphToXMLComposer::composeEdgeValues(out, *this); - out.emplace_back(XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } diff --git a/alib2data/src/graph/directed/AdjacencyMatrixDirectedGraph.h b/alib2data/src/graph/directed/AdjacencyMatrixDirectedGraph.h index a33a25f5b1..bbc7a48e14 100644 --- a/alib2data/src/graph/directed/AdjacencyMatrixDirectedGraph.h +++ b/alib2data/src/graph/directed/AdjacencyMatrixDirectedGraph.h @@ -38,9 +38,10 @@ class UndirectedGraph; */ class AdjacencyMatrixDirectedGraph : public DirectedGraph { + std::unordered_map<Node, std::unordered_map<Node, int>> adj; + std::set<DirectedEdge> edges; - public: - +public: AdjacencyMatrixDirectedGraph(); /// constructs an directed adjacency matrix from any representation of directed graph @@ -85,13 +86,11 @@ class AdjacencyMatrixDirectedGraph : public DirectedGraph { static AdjacencyMatrixDirectedGraph parse( std::deque< sax::Token >::iterator & input ); virtual void compose( std::deque< sax::Token > & out ) const override; - const static std::string XML_TAG_NAME; - - private: - - std::unordered_map<Node, std::unordered_map<Node, int>> adj; - std::set<DirectedEdge> edges; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "AdjacencyMatrixDirectedGraph"; + return xmlTagName; + } }; } // namespace graph diff --git a/alib2data/src/graph/directed/DirectedEdge.h b/alib2data/src/graph/directed/DirectedEdge.h index a43df8103b..fcaf65cf74 100644 --- a/alib2data/src/graph/directed/DirectedEdge.h +++ b/alib2data/src/graph/directed/DirectedEdge.h @@ -14,9 +14,13 @@ namespace graph { class DirectedEdge { + Node from; + Node to; + label::Label name; - public: + void dump(std::ostream & os) const; +public: /// should be used only to create variable, to which will be assigned soon DirectedEdge() : from(), to(), name(label::labelFrom("uninitialized")) {} @@ -41,20 +45,21 @@ class DirectedEdge { friend std::ostream &operator<<(std::ostream & out, const DirectedEdge & node); explicit operator std::string() const; +}; - private: - - void dump(std::ostream & os) const; +} // namespace graph - Node from; - Node to; - label::Label name; +namespace std { +template<> +struct compare<graph::DirectedEdge> { + int operator()(const graph::DirectedEdge& first, const graph::DirectedEdge& second) const { + return first.compare(second); + } }; -} // namespace graph +} /* namespace std */ GRAPH_DEFINE_STD_HASH(DirectedEdge) -GRAPH_DEFINE_STD_COMPARE(DirectedEdge) #endif // DIRECTED_EDGE_H_ diff --git a/alib2data/src/graph/directed/DirectedGraph.cpp b/alib2data/src/graph/directed/DirectedGraph.cpp index 11859b97f7..d3f280390e 100644 --- a/alib2data/src/graph/directed/DirectedGraph.cpp +++ b/alib2data/src/graph/directed/DirectedGraph.cpp @@ -191,11 +191,9 @@ std::string DirectedGraph::toString() const return ss.str(); } /* -const std::string DirectedGraph::XML_TAG_NAME = "DirectedGraph"; - DirectedGraph * DirectedGraph::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, DirectedGraph::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, DirectedGraph::getXmlTagName()); DirectedGraph * graph; switch (GraphFromXMLParser::parseRepresentation(input)) { @@ -217,13 +215,13 @@ DirectedGraph * DirectedGraph::parse(std::deque<sax::Token>::iterator& input) GraphFromXMLParser::parseNodeValues(input, *graph); GraphFromXMLParser::parseDirectedEdgeValues(input, *graph); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, DirectedGraph::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, DirectedGraph::getXmlTagName()); return graph; } void DirectedGraph::compose(std::deque<sax::Token>& out) const { - out.emplace_back(DirectedGraph::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(DirectedGraph::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); GraphToXMLComposer::composeRepresentation(out, representationToString(this->getRepresentation())); GraphToXMLComposer::composeNodes(out, this->getNodes()); @@ -231,7 +229,7 @@ void DirectedGraph::compose(std::deque<sax::Token>& out) const GraphToXMLComposer::composeNodeValues(out, *this); GraphToXMLComposer::composeEdgeValues(out, *this); - out.emplace_back(DirectedGraph::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(DirectedGraph::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } */ diff --git a/alib2data/src/graph/directed/DirectedGraph.h b/alib2data/src/graph/directed/DirectedGraph.h index 98a93aa092..fdddc3148d 100644 --- a/alib2data/src/graph/directed/DirectedGraph.h +++ b/alib2data/src/graph/directed/DirectedGraph.h @@ -24,9 +24,11 @@ namespace graph { class UndirectedGraph; class DirectedGraph : public GraphBase { + std::unordered_map< Node, int > nodeValues; + std::unordered_map< DirectedEdge, int > edgeValues; + std::unordered_map< Node, std::vector< Node > > embedding; - public: - +public: DirectedGraph(); virtual GRAPH_TYPE getType() const override; @@ -105,13 +107,11 @@ class DirectedGraph : public GraphBase { //static DirectedGraph * parse( std::deque< sax::Token >::iterator & input ); //void compose( std::deque< sax::Token > & out ) const override; - //const static std::string XML_TAG_NAME; + /*static const std::string & getXmlTagName() { + static std::string xmlTagName = "DirectedGraph"; - private: - - std::unordered_map< Node, int > nodeValues; - std::unordered_map< DirectedEdge, int > edgeValues; - std::unordered_map< Node, std::vector< Node > > embedding; + return xmlTagName; + }*/ friend class GraphToXMLComposer; friend class GraphToStringComposer; @@ -120,6 +120,4 @@ class DirectedGraph : public GraphBase { } // namespace graph -GRAPH_DEFINE_STD_COMPARE( DirectedGraph ) - #endif // DIRECTED_GRAPH_H_ diff --git a/alib2data/src/graph/undirected/AdjacencyListUndirectedGraph.cpp b/alib2data/src/graph/undirected/AdjacencyListUndirectedGraph.cpp index e4266c1e0b..3f90d46a7d 100644 --- a/alib2data/src/graph/undirected/AdjacencyListUndirectedGraph.cpp +++ b/alib2data/src/graph/undirected/AdjacencyListUndirectedGraph.cpp @@ -218,11 +218,9 @@ bool AdjacencyListUndirectedGraph::removeEdge( const UndirectedEdge & edge ) return true; } -const std::string AdjacencyListUndirectedGraph::XML_TAG_NAME = "AdjacencyListUndirectedGraph"; - AdjacencyListUndirectedGraph AdjacencyListUndirectedGraph::parse( std::deque<sax::Token>::iterator & input ) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, getXmlTagName()); AdjacencyListUndirectedGraph graph; GraphFromXMLParser::parseNodes(input, graph); @@ -230,20 +228,20 @@ AdjacencyListUndirectedGraph AdjacencyListUndirectedGraph::parse( std::deque<sax GraphFromXMLParser::parseNodeValues(input, graph); GraphFromXMLParser::parseUndirectedEdgeValues(input, graph); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, getXmlTagName()); return graph; } void AdjacencyListUndirectedGraph::compose( std::deque<sax::Token> & out ) const { - out.emplace_back(XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(getXmlTagName(), sax::Token::TokenType::START_ELEMENT); GraphToXMLComposer::composeNodes(out, this->getNodes()); GraphToXMLComposer::composeEdges(out, this->getEdges()); GraphToXMLComposer::composeNodeValues(out, *this); GraphToXMLComposer::composeEdgeValues(out, *this); - out.emplace_back(XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } diff --git a/alib2data/src/graph/undirected/AdjacencyListUndirectedGraph.h b/alib2data/src/graph/undirected/AdjacencyListUndirectedGraph.h index 71adfad12f..71c09bb974 100644 --- a/alib2data/src/graph/undirected/AdjacencyListUndirectedGraph.h +++ b/alib2data/src/graph/undirected/AdjacencyListUndirectedGraph.h @@ -37,9 +37,10 @@ class DirectedGraph; */ class AdjacencyListUndirectedGraph : public UndirectedGraph { + std::unordered_map< Node, std::list< Node > > adj; + std::set< UndirectedEdge > edges; - public: - +public: AdjacencyListUndirectedGraph(); /// constructs an undirected adjacency list from any representation of undirected graph @@ -79,13 +80,11 @@ class AdjacencyListUndirectedGraph : public UndirectedGraph { static AdjacencyListUndirectedGraph parse( std::deque< sax::Token >::iterator & input ); virtual void compose( std::deque< sax::Token > & out ) const override; - const static std::string XML_TAG_NAME; - - private: - - std::unordered_map< Node, std::list< Node > > adj; - std::set< UndirectedEdge > edges; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "AdjacencyListUndirectedGraph"; + return xmlTagName; + } }; } // namespace graph diff --git a/alib2data/src/graph/undirected/AdjacencyMatrixUndirectedGraph.cpp b/alib2data/src/graph/undirected/AdjacencyMatrixUndirectedGraph.cpp index 1fcd0ecbff..f3411da16f 100644 --- a/alib2data/src/graph/undirected/AdjacencyMatrixUndirectedGraph.cpp +++ b/alib2data/src/graph/undirected/AdjacencyMatrixUndirectedGraph.cpp @@ -232,11 +232,9 @@ bool AdjacencyMatrixUndirectedGraph::removeEdge( const UndirectedEdge & edge ) return true; } -const std::string AdjacencyMatrixUndirectedGraph::XML_TAG_NAME = "AdjacencyMatrixUndirectedGraph"; - AdjacencyMatrixUndirectedGraph AdjacencyMatrixUndirectedGraph::parse( std::deque<sax::Token>::iterator & input ) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, getXmlTagName()); AdjacencyMatrixUndirectedGraph graph; GraphFromXMLParser::parseNodes(input, graph); @@ -244,20 +242,20 @@ AdjacencyMatrixUndirectedGraph AdjacencyMatrixUndirectedGraph::parse( std::deque GraphFromXMLParser::parseNodeValues(input, graph); GraphFromXMLParser::parseUndirectedEdgeValues(input, graph); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, getXmlTagName()); return graph; } void AdjacencyMatrixUndirectedGraph::compose( std::deque<sax::Token> & out ) const { - out.emplace_back(XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(getXmlTagName(), sax::Token::TokenType::START_ELEMENT); GraphToXMLComposer::composeNodes(out, this->getNodes()); GraphToXMLComposer::composeEdges(out, this->getEdges()); GraphToXMLComposer::composeNodeValues(out, *this); GraphToXMLComposer::composeEdgeValues(out, *this); - out.emplace_back(XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } diff --git a/alib2data/src/graph/undirected/AdjacencyMatrixUndirectedGraph.h b/alib2data/src/graph/undirected/AdjacencyMatrixUndirectedGraph.h index 778bd684a7..aa449eb63e 100644 --- a/alib2data/src/graph/undirected/AdjacencyMatrixUndirectedGraph.h +++ b/alib2data/src/graph/undirected/AdjacencyMatrixUndirectedGraph.h @@ -40,9 +40,10 @@ class DirectedGraph; */ class AdjacencyMatrixUndirectedGraph : public UndirectedGraph { + std::unordered_map< Node, std::unordered_map< Node, int > > adj; + std::set< UndirectedEdge > edges; - public: - +public: AdjacencyMatrixUndirectedGraph(); /// constructs an undirected adjacency matrix from any representation of undirected graph @@ -82,13 +83,11 @@ class AdjacencyMatrixUndirectedGraph : public UndirectedGraph { static AdjacencyMatrixUndirectedGraph parse( std::deque< sax::Token >::iterator & input ); virtual void compose( std::deque< sax::Token > & out ) const override; - const static std::string XML_TAG_NAME; - - private: - - std::unordered_map< Node, std::unordered_map< Node, int > > adj; - std::set< UndirectedEdge > edges; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "AdjacencyMatrixUndirectedGraph"; + return xmlTagName; + } }; } // namespace graph diff --git a/alib2data/src/graph/undirected/UndirectedEdge.h b/alib2data/src/graph/undirected/UndirectedEdge.h index eac1ad7d3e..dfbd55e1d6 100644 --- a/alib2data/src/graph/undirected/UndirectedEdge.h +++ b/alib2data/src/graph/undirected/UndirectedEdge.h @@ -14,9 +14,13 @@ namespace graph { class UndirectedEdge { + Node first; + Node second; + label::Label name; - public: + void dump(std::ostream & os) const; +public: /// should be used only to create variable, to which will be assigned soon UndirectedEdge() : first(), second(), name(label::labelFrom("uninitialized")) {} @@ -41,20 +45,21 @@ class UndirectedEdge { friend std::ostream & operator<<(std::ostream & out, const UndirectedEdge & node); explicit operator std::string() const; +}; - private: - - void dump(std::ostream & os) const; +} // namespace graph - Node first; - Node second; - label::Label name; +namespace std { +template<> +struct compare<graph::UndirectedEdge> { + int operator()(const graph::UndirectedEdge& first, const graph::UndirectedEdge& second) const { + return first.compare(second); + } }; -} // namespace graph +} /* namespace std */ GRAPH_DEFINE_STD_HASH(UndirectedEdge) -GRAPH_DEFINE_STD_COMPARE(UndirectedEdge) #endif // UNDIRECTED_EDGE_H_ diff --git a/alib2data/src/graph/undirected/UndirectedGraph.cpp b/alib2data/src/graph/undirected/UndirectedGraph.cpp index 46807fb29c..914ed0b4d3 100644 --- a/alib2data/src/graph/undirected/UndirectedGraph.cpp +++ b/alib2data/src/graph/undirected/UndirectedGraph.cpp @@ -190,11 +190,9 @@ std::string UndirectedGraph::toString() const return ss.str(); } /* -const std::string UndirectedGraph::XML_TAG_NAME = "UndirectedGraph"; - UndirectedGraph * UndirectedGraph::parse(std::deque<sax::Token>::iterator & input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, UndirectedGraph::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, UndirectedGraph::getXmlTagName()); UndirectedGraph * graph; switch (GraphFromXMLParser::parseRepresentation(input)) { @@ -215,13 +213,13 @@ UndirectedGraph * UndirectedGraph::parse(std::deque<sax::Token>::iterator & inpu GraphFromXMLParser::parseNodeValues(input, *graph); GraphFromXMLParser::parseUndirectedEdgeValues(input, *graph); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, UndirectedGraph::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, UndirectedGraph::getXmlTagName()); return graph; } void UndirectedGraph::compose(std::deque<sax::Token> & out) const { - out.emplace_back(UndirectedGraph::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(UndirectedGraph::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); GraphToXMLComposer::composeRepresentation(out, representationToString(this->getRepresentation())); GraphToXMLComposer::composeNodes(out, this->getNodes()); @@ -229,7 +227,7 @@ void UndirectedGraph::compose(std::deque<sax::Token> & out) const GraphToXMLComposer::composeNodeValues(out, *this); GraphToXMLComposer::composeEdgeValues(out, *this); - out.emplace_back(UndirectedGraph::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(UndirectedGraph::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } */ diff --git a/alib2data/src/graph/undirected/UndirectedGraph.h b/alib2data/src/graph/undirected/UndirectedGraph.h index 2bb99b472a..ee4b48723e 100644 --- a/alib2data/src/graph/undirected/UndirectedGraph.h +++ b/alib2data/src/graph/undirected/UndirectedGraph.h @@ -24,9 +24,11 @@ namespace graph { class DirectedGraph; class UndirectedGraph : public GraphBase { + std::unordered_map< Node, int > nodeValues; + std::unordered_map< UndirectedEdge, int > edgeValues; + std::unordered_map< Node, std::vector< Node > > embedding; - public: - +public: UndirectedGraph(); virtual GRAPH_TYPE getType() const override; @@ -97,13 +99,11 @@ class UndirectedGraph : public GraphBase { //static UndirectedGraph * parse( std::deque< sax::Token >::iterator & input ); //void compose( std::deque< sax::Token > & out ) const override; - //const static std::string XML_TAG_NAME; + /*static const std::string & getXmlTagName() { + static std::string xmlTagName = "UndirectedGraph"; - private: - - std::unordered_map< Node, int > nodeValues; - std::unordered_map< UndirectedEdge, int > edgeValues; - std::unordered_map< Node, std::vector< Node > > embedding; + return xmlTagName; + }*/ friend class GraphToXMLComposer; friend class GraphToStringComposer; @@ -112,6 +112,4 @@ class UndirectedGraph : public GraphBase { } // namespace graph -GRAPH_DEFINE_STD_COMPARE( UndirectedGraph ) - #endif // UNDIRECTED_GRAPH_H_ diff --git a/alib2data/src/indexes/suffixTrie/SuffixTrieFinalMark.cpp b/alib2data/src/indexes/suffixTrie/SuffixTrieFinalMark.cpp index 5de1d9f69b..55b4c280ed 100644 --- a/alib2data/src/indexes/suffixTrie/SuffixTrieFinalMark.cpp +++ b/alib2data/src/indexes/suffixTrie/SuffixTrieFinalMark.cpp @@ -115,24 +115,22 @@ SuffixTrieFinalMark::operator std::string ( ) const { return ss.str ( ); } -const std::string SuffixTrieFinalMark::XML_TAG_NAME = "SuffixTrieFinalMark"; - SuffixTrieFinalMark SuffixTrieFinalMark::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, SuffixTrieFinalMark::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, SuffixTrieFinalMark::getXmlTagName() ); std::set < alphabet::Symbol > rankedAlphabet = IndexFromXMLParser::parseAlphabet ( input ); SuffixTrieNodeFinalMark * root = IndexFromXMLParser::parseSuffixTrieNodeFinalMark ( input ); SuffixTrieFinalMark tree ( std::move ( rankedAlphabet ), std::move ( * root ) ); delete root; - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, SuffixTrieFinalMark::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, SuffixTrieFinalMark::getXmlTagName() ); return tree; } void SuffixTrieFinalMark::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( SuffixTrieFinalMark::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( SuffixTrieFinalMark::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); IndexToXMLComposer::composeAlphabet ( out, getAlphabet ( ) ); IndexToXMLComposer::composeNode ( out, * tree ); - out.emplace_back ( SuffixTrieFinalMark::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( SuffixTrieFinalMark::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace indexes */ diff --git a/alib2data/src/indexes/suffixTrie/SuffixTrieFinalMark.h b/alib2data/src/indexes/suffixTrie/SuffixTrieFinalMark.h index 91d5ab33f7..74af98ea34 100644 --- a/alib2data/src/indexes/suffixTrie/SuffixTrieFinalMark.h +++ b/alib2data/src/indexes/suffixTrie/SuffixTrieFinalMark.h @@ -101,7 +101,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "SuffixTrieFinalMark"; + + return xmlTagName; + } static SuffixTrieFinalMark parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.cpp b/alib2data/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.cpp index b651095791..083027555a 100644 --- a/alib2data/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.cpp +++ b/alib2data/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.cpp @@ -110,26 +110,24 @@ SuffixTrieTerminatingSymbol::operator std::string ( ) const { return ss.str ( ); } -const std::string SuffixTrieTerminatingSymbol::XML_TAG_NAME = "SuffixTrieTerminatingSymbol"; - SuffixTrieTerminatingSymbol SuffixTrieTerminatingSymbol::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, SuffixTrieTerminatingSymbol::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, SuffixTrieTerminatingSymbol::getXmlTagName() ); std::set < alphabet::Symbol > rankedAlphabet = IndexFromXMLParser::parseAlphabet ( input ); alphabet::Symbol terminatingSymbol = alib::xmlApi < alphabet::Symbol >::parse ( input ); SuffixTrieNodeTerminatingSymbol * root = IndexFromXMLParser::parseSuffixTrieNodeTerminatingSymbol ( input ); SuffixTrieTerminatingSymbol tree ( std::move ( rankedAlphabet ), terminatingSymbol, std::move ( * root ) ); delete root; - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, SuffixTrieTerminatingSymbol::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, SuffixTrieTerminatingSymbol::getXmlTagName() ); return tree; } void SuffixTrieTerminatingSymbol::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( SuffixTrieTerminatingSymbol::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( SuffixTrieTerminatingSymbol::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); IndexToXMLComposer::composeAlphabet ( out, getAlphabet ( ) ); alib::xmlApi < alphabet::Symbol >::compose ( out, getTerminatingSymbol ( ) ); IndexToXMLComposer::composeNode ( out, * tree ); - out.emplace_back ( SuffixTrieTerminatingSymbol::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( SuffixTrieTerminatingSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace indexes */ diff --git a/alib2data/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h b/alib2data/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h index 60ffa15fa9..da5df918d4 100644 --- a/alib2data/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h +++ b/alib2data/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h @@ -97,7 +97,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "SuffixTrieTerminatingSymbol"; + + return xmlTagName; + } static SuffixTrieTerminatingSymbol parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/label/HexavigesimalLabel.cpp b/alib2data/src/label/HexavigesimalLabel.cpp index cfb0193f06..ce6e0c7626 100644 --- a/alib2data/src/label/HexavigesimalLabel.cpp +++ b/alib2data/src/label/HexavigesimalLabel.cpp @@ -45,19 +45,17 @@ HexavigesimalLabel::operator std::string() const { return std::toBase26(hexavigesimal); } -const std::string HexavigesimalLabel::XML_TAG_NAME = "HexavigesimalLabel"; - HexavigesimalLabel HexavigesimalLabel::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, HexavigesimalLabel::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, HexavigesimalLabel::getXmlTagName()); HexavigesimalLabel data(std::stoi(sax::FromXMLParserHelper::popTokenData(input, sax::Token::TokenType::CHARACTER))); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, HexavigesimalLabel::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, HexavigesimalLabel::getXmlTagName()); return data; } void HexavigesimalLabel::compose(std::deque<sax::Token>& out) const { - out.emplace_back(HexavigesimalLabel::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(HexavigesimalLabel::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); out.emplace_back(std::itos(hexavigesimal), sax::Token::TokenType::CHARACTER); - out.emplace_back(HexavigesimalLabel::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(HexavigesimalLabel::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } LabelBase* HexavigesimalLabel::next() const { diff --git a/alib2data/src/label/HexavigesimalLabel.h b/alib2data/src/label/HexavigesimalLabel.h index 1bf1f5042c..c611c607f9 100644 --- a/alib2data/src/label/HexavigesimalLabel.h +++ b/alib2data/src/label/HexavigesimalLabel.h @@ -51,7 +51,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "HexavigesimalLabel"; + + return xmlTagName; + } static HexavigesimalLabel parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/label/LR0ItemsLabel.cpp b/alib2data/src/label/LR0ItemsLabel.cpp index b3536159f8..dba76b321f 100644 --- a/alib2data/src/label/LR0ItemsLabel.cpp +++ b/alib2data/src/label/LR0ItemsLabel.cpp @@ -56,19 +56,17 @@ LR0ItemsLabel::operator std::string ( ) const { return ss.str ( ); } -const std::string LR0ItemsLabel::XML_TAG_NAME = "LR0ItemsLabel"; - LR0ItemsLabel LR0ItemsLabel::parse ( std::deque<sax::Token>::iterator& input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, LR0ItemsLabel::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, LR0ItemsLabel::getXmlTagName() ); LR0ItemsLabel data ( alib::xmlApi < grammar::parsing::LR0Items > ::parse ( input ) ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, LR0ItemsLabel::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, LR0ItemsLabel::getXmlTagName() ); return data; } void LR0ItemsLabel::compose(std::deque<sax::Token>& out) const { - out.emplace_back ( LR0ItemsLabel::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( LR0ItemsLabel::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); alib::xmlApi < grammar::parsing::LR0Items > ::compose ( out, items ); - out.emplace_back ( LR0ItemsLabel::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( LR0ItemsLabel::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } LabelBase* LR0ItemsLabel::next ( ) const { diff --git a/alib2data/src/label/LR0ItemsLabel.h b/alib2data/src/label/LR0ItemsLabel.h index 6d181397b4..cdd22a49f4 100644 --- a/alib2data/src/label/LR0ItemsLabel.h +++ b/alib2data/src/label/LR0ItemsLabel.h @@ -66,7 +66,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "LR0ItemsLabel"; + + return xmlTagName; + } static LR0ItemsLabel parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/label/Label.cpp b/alib2data/src/label/Label.cpp index 32ea7a89bd..273c65c303 100644 --- a/alib2data/src/label/Label.cpp +++ b/alib2data/src/label/Label.cpp @@ -13,8 +13,6 @@ namespace label { -const std::string Label::XML_TAG_NAME_REF = "LabelRef"; - Label Label::next ( ) const { return Label ( this->getData ( ).next ( ) ); } diff --git a/alib2data/src/label/Label.h b/alib2data/src/label/Label.h index 5b54a89ee5..e4541ad332 100644 --- a/alib2data/src/label/Label.h +++ b/alib2data/src/label/Label.h @@ -23,7 +23,11 @@ public: Label next ( ) const; void inc ( ); - const static std::string XML_TAG_NAME_REF; + static const std::string & getXmlTagRefName() { + static std::string xmlTagName = "LabelRef"; + + return xmlTagName; + } }; label::Label labelFrom ( int number ); diff --git a/alib2data/src/label/LabelPairLabel.cpp b/alib2data/src/label/LabelPairLabel.cpp index 275587993b..98b7aaf6a1 100644 --- a/alib2data/src/label/LabelPairLabel.cpp +++ b/alib2data/src/label/LabelPairLabel.cpp @@ -51,24 +51,22 @@ LabelPairLabel::operator std::string() const { return std::move(ss).str(); } -const std::string LabelPairLabel::XML_TAG_NAME = "LabelPairLabel"; - LabelPairLabel LabelPairLabel::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, LabelPairLabel::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, LabelPairLabel::getXmlTagName()); Label firstLabel = alib::xmlApi<Label>::parse(input); Label secondLabel = alib::xmlApi<Label>::parse(input); LabelPairLabel data(std::make_pair(std::move(firstLabel), std::move(secondLabel))); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, LabelPairLabel::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, LabelPairLabel::getXmlTagName()); return data; } void LabelPairLabel::compose(std::deque<sax::Token>& out) const { - out.emplace_back(LabelPairLabel::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(LabelPairLabel::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); alib::xmlApi<Label>::compose(out, label.first); alib::xmlApi<Label>::compose(out, label.second); - out.emplace_back(LabelPairLabel::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(LabelPairLabel::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } LabelBase* LabelPairLabel::next() const { diff --git a/alib2data/src/label/LabelPairLabel.h b/alib2data/src/label/LabelPairLabel.h index a719044a50..48671e63d1 100644 --- a/alib2data/src/label/LabelPairLabel.h +++ b/alib2data/src/label/LabelPairLabel.h @@ -48,7 +48,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "LabelPairLabel"; + + return xmlTagName; + } static LabelPairLabel parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/label/LabelSetLabel.cpp b/alib2data/src/label/LabelSetLabel.cpp index 22e8f01448..f1c3437d96 100644 --- a/alib2data/src/label/LabelSetLabel.cpp +++ b/alib2data/src/label/LabelSetLabel.cpp @@ -55,25 +55,23 @@ LabelSetLabel::operator std::string() const { return std::move(ss).str(); } -const std::string LabelSetLabel::XML_TAG_NAME = "LabelSetLabel"; - LabelSetLabel LabelSetLabel::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, LabelSetLabel::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, LabelSetLabel::getXmlTagName()); std::set<Label> labels; while(sax::FromXMLParserHelper::isTokenType(input, sax::Token::TokenType::START_ELEMENT)) { labels.insert(alib::xmlApi<Label>::parse(input)); } LabelSetLabel data(std::move(labels)); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, LabelSetLabel::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, LabelSetLabel::getXmlTagName()); return data; } void LabelSetLabel::compose(std::deque<sax::Token>& out) const { - out.emplace_back(LabelSetLabel::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(LabelSetLabel::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); for(const Label& innerLabel : label) { alib::xmlApi<label::Label>::compose(out, innerLabel); } - out.emplace_back(LabelSetLabel::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(LabelSetLabel::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } LabelBase* LabelSetLabel::next() const { diff --git a/alib2data/src/label/LabelSetLabel.h b/alib2data/src/label/LabelSetLabel.h index f05217c3c5..28eab1853f 100644 --- a/alib2data/src/label/LabelSetLabel.h +++ b/alib2data/src/label/LabelSetLabel.h @@ -48,7 +48,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "LabelSetLabel"; + + return xmlTagName; + } static LabelSetLabel parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/label/ObjectLabel.cpp b/alib2data/src/label/ObjectLabel.cpp index 472fbc17ec..5cdeb1c7c0 100644 --- a/alib2data/src/label/ObjectLabel.cpp +++ b/alib2data/src/label/ObjectLabel.cpp @@ -42,19 +42,17 @@ ObjectLabel::operator std::string() const { return (std::string) label; } -const std::string ObjectLabel::XML_TAG_NAME = "ObjectLabel"; - ObjectLabel ObjectLabel::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, ObjectLabel::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, ObjectLabel::getXmlTagName()); ObjectLabel data(alib::xmlApi<alib::Object>::parse(input)); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, ObjectLabel::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, ObjectLabel::getXmlTagName()); return data; } void ObjectLabel::compose(std::deque<sax::Token>& out) const { - out.emplace_back(ObjectLabel::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(ObjectLabel::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); alib::xmlApi<alib::Object>::compose(out, label); - out.emplace_back(ObjectLabel::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(ObjectLabel::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } LabelBase* ObjectLabel::next() const { diff --git a/alib2data/src/label/ObjectLabel.h b/alib2data/src/label/ObjectLabel.h index 7438d059b4..3d0f625db8 100644 --- a/alib2data/src/label/ObjectLabel.h +++ b/alib2data/src/label/ObjectLabel.h @@ -49,7 +49,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "ObjectLabel"; + + return xmlTagName; + } static ObjectLabel parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/label/PrimitiveLabel.cpp b/alib2data/src/label/PrimitiveLabel.cpp index 714cb74c58..da62ed9b6b 100644 --- a/alib2data/src/label/PrimitiveLabel.cpp +++ b/alib2data/src/label/PrimitiveLabel.cpp @@ -46,19 +46,17 @@ PrimitiveLabel::operator std::string() const { return (std::string) primitive; } -const std::string PrimitiveLabel::XML_TAG_NAME = "PrimitiveLabel"; - PrimitiveLabel PrimitiveLabel::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, PrimitiveLabel::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, PrimitiveLabel::getXmlTagName()); PrimitiveLabel data(alib::xmlApi<primitive::Primitive>::parse(input)); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, PrimitiveLabel::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, PrimitiveLabel::getXmlTagName()); return data; } void PrimitiveLabel::compose(std::deque<sax::Token>& out) const { - out.emplace_back(PrimitiveLabel::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(PrimitiveLabel::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); alib::xmlApi<primitive::Primitive>::compose(out, primitive); - out.emplace_back(PrimitiveLabel::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(PrimitiveLabel::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } LabelBase* PrimitiveLabel::next() const { diff --git a/alib2data/src/label/PrimitiveLabel.h b/alib2data/src/label/PrimitiveLabel.h index b0b2ac222b..bcecf9f7ed 100644 --- a/alib2data/src/label/PrimitiveLabel.h +++ b/alib2data/src/label/PrimitiveLabel.h @@ -51,7 +51,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "PrimitiveLabel"; + + return xmlTagName; + } static PrimitiveLabel parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/label/UniqueLabel.cpp b/alib2data/src/label/UniqueLabel.cpp index 4215ab9f73..33afdc04a3 100644 --- a/alib2data/src/label/UniqueLabel.cpp +++ b/alib2data/src/label/UniqueLabel.cpp @@ -58,24 +58,22 @@ UniqueLabel::operator std::string() const { return std::move(ss).str(); } -const std::string UniqueLabel::XML_TAG_NAME = "UniqueLabel"; - UniqueLabel UniqueLabel::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, UniqueLabel::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, UniqueLabel::getXmlTagName()); Label firstLabel = alib::xmlApi<Label>::parse(input); primitive::Integer secondLabel = alib::xmlApi<primitive::Integer>::parse(input); UniqueLabel data(std::move(firstLabel), std::move(secondLabel)); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, UniqueLabel::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, UniqueLabel::getXmlTagName()); return data; } void UniqueLabel::compose(std::deque<sax::Token>& out) const { - out.emplace_back(UniqueLabel::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(UniqueLabel::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); alib::xmlApi<label::Label>::compose(out, label); alib::xmlApi<primitive::Integer>::compose(out, id); - out.emplace_back(UniqueLabel::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(UniqueLabel::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } LabelBase* UniqueLabel::next() const { diff --git a/alib2data/src/label/UniqueLabel.h b/alib2data/src/label/UniqueLabel.h index 69b51f0634..5915179fcb 100644 --- a/alib2data/src/label/UniqueLabel.h +++ b/alib2data/src/label/UniqueLabel.h @@ -53,7 +53,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "UniqueLabel"; + + return xmlTagName; + } static UniqueLabel parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/primitive/Bool.cpp b/alib2data/src/primitive/Bool.cpp index f0c9136890..936cb7e444 100644 --- a/alib2data/src/primitive/Bool.cpp +++ b/alib2data/src/primitive/Bool.cpp @@ -45,14 +45,12 @@ Bool::operator std::string() const { return data ? "true" : "false"; } -const std::string Bool::XML_TAG_NAME = "Bool"; - Bool Bool::parse(std::deque<sax::Token>::iterator& input) { return Bool(parseRaw(input)); } bool Bool::parseRaw(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, Bool::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, Bool::getXmlTagName()); std::string tmp = sax::FromXMLParserHelper::popTokenData(input, sax::Token::TokenType::CHARACTER); bool data; if(tmp == "true") @@ -61,7 +59,7 @@ bool Bool::parseRaw(std::deque<sax::Token>::iterator& input) { data = false; else throw exception::CommonException("Invalid boolean value"); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, Bool::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, Bool::getXmlTagName()); return data; } @@ -70,12 +68,12 @@ void Bool::compose(std::deque<sax::Token>& out) const { } void Bool::compose(std::deque<sax::Token>& out, bool primitive) { - out.emplace_back(Bool::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(Bool::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); if(primitive) out.emplace_back("true", sax::Token::TokenType::CHARACTER); else out.emplace_back("false", sax::Token::TokenType::CHARACTER); - out.emplace_back(Bool::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(Bool::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } Bool Bool::next() const { @@ -95,7 +93,7 @@ bool xmlApi<bool>::parse(std::deque<sax::Token>::iterator& input) { } bool xmlApi<bool>::first(const std::deque<sax::Token>::const_iterator& input) { - return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, primitive::Bool::XML_TAG_NAME); + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, primitive::Bool::getXmlTagName()); } void xmlApi<bool>::compose(std::deque<sax::Token>& output, bool data) { diff --git a/alib2data/src/primitive/Bool.h b/alib2data/src/primitive/Bool.h index d5cc8ed881..62e2ea6e64 100644 --- a/alib2data/src/primitive/Bool.h +++ b/alib2data/src/primitive/Bool.h @@ -53,7 +53,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "Bool"; + + return xmlTagName; + } static Bool parse ( std::deque < sax::Token >::iterator & input ); static bool parseRaw ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/primitive/Character.cpp b/alib2data/src/primitive/Character.cpp index b35bae9c71..22116f0449 100644 --- a/alib2data/src/primitive/Character.cpp +++ b/alib2data/src/primitive/Character.cpp @@ -44,16 +44,14 @@ Character::operator std::string() const { return std::string(1, data); } -const std::string Character::XML_TAG_NAME = "Character"; - Character Character::parse(std::deque<sax::Token>::iterator& input) { return Character(parseRaw(input)); } char Character::parseRaw(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, Character::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, Character::getXmlTagName()); char data = sax::FromXMLParserHelper::popTokenData(input, sax::Token::TokenType::CHARACTER)[0]; - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, Character::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, Character::getXmlTagName()); return data; } @@ -62,9 +60,9 @@ void Character::compose(std::deque<sax::Token>& out) const { } void Character::compose(std::deque<sax::Token>& out, char primitive) { - out.emplace_back(Character::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(Character::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); out.emplace_back(std::string(1, primitive), sax::Token::TokenType::CHARACTER); - out.emplace_back(Character::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(Character::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } Character Character::next() const { @@ -84,7 +82,7 @@ char xmlApi<char>::parse(std::deque<sax::Token>::iterator& input) { } bool xmlApi<char>::first(const std::deque<sax::Token>::const_iterator& input) { - return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, primitive::Character::XML_TAG_NAME); + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, primitive::Character::getXmlTagName()); } void xmlApi<char>::compose(std::deque<sax::Token>& output, char data) { diff --git a/alib2data/src/primitive/Character.h b/alib2data/src/primitive/Character.h index fd9235d0df..9ffd82aad5 100644 --- a/alib2data/src/primitive/Character.h +++ b/alib2data/src/primitive/Character.h @@ -53,7 +53,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "Character"; + + return xmlTagName; + } static Character parse ( std::deque < sax::Token >::iterator & input ); static char parseRaw ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/primitive/Integer.cpp b/alib2data/src/primitive/Integer.cpp index fbf24fd562..323d30d8b3 100644 --- a/alib2data/src/primitive/Integer.cpp +++ b/alib2data/src/primitive/Integer.cpp @@ -44,16 +44,14 @@ Integer::operator std::string() const { return std::to_string(data); } -const std::string Integer::XML_TAG_NAME = "Integer"; - Integer Integer::parse(std::deque<sax::Token>::iterator& input) { return Integer(parseRaw(input)); } int Integer::parseRaw(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, Integer::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, Integer::getXmlTagName()); int data = std::stoi(sax::FromXMLParserHelper::popTokenData(input, sax::Token::TokenType::CHARACTER)); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, Integer::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, Integer::getXmlTagName()); return data; } @@ -62,9 +60,9 @@ void Integer::compose(std::deque<sax::Token>& out) const { } void Integer::compose(std::deque<sax::Token>& out, int primitive) { - out.emplace_back(Integer::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(Integer::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); out.emplace_back(std::itos(primitive), sax::Token::TokenType::CHARACTER); - out.emplace_back(Integer::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(Integer::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } Integer Integer::next() const { @@ -84,7 +82,7 @@ int xmlApi<int>::parse(std::deque<sax::Token>::iterator& input) { } bool xmlApi<int>::first(const std::deque<sax::Token>::const_iterator& input) { - return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, primitive::Integer::XML_TAG_NAME); + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, primitive::Integer::getXmlTagName()); } void xmlApi<int>::compose(std::deque<sax::Token>& output, int data) { diff --git a/alib2data/src/primitive/Integer.h b/alib2data/src/primitive/Integer.h index b383d5a71f..c446de7381 100644 --- a/alib2data/src/primitive/Integer.h +++ b/alib2data/src/primitive/Integer.h @@ -53,7 +53,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "Integer"; + + return xmlTagName; + } static Integer parse ( std::deque < sax::Token >::iterator & input ); static int parseRaw ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/primitive/Primitive.cpp b/alib2data/src/primitive/Primitive.cpp index dbb07c0dc0..e71c5d3b28 100644 --- a/alib2data/src/primitive/Primitive.cpp +++ b/alib2data/src/primitive/Primitive.cpp @@ -15,8 +15,6 @@ namespace primitive { -const std::string Primitive::XML_TAG_NAME_REF = "PrimitiveRef"; - Primitive Primitive::next ( ) const { Primitive res = * this; diff --git a/alib2data/src/primitive/Primitive.h b/alib2data/src/primitive/Primitive.h index 793e87a124..8f3c61d797 100644 --- a/alib2data/src/primitive/Primitive.h +++ b/alib2data/src/primitive/Primitive.h @@ -23,7 +23,11 @@ public: Primitive next ( ) const; void inc ( ); - const static std::string XML_TAG_NAME_REF; + static const std::string & getXmlTagRefName() { + static std::string xmlTagName = "PrimitiveRef"; + + return xmlTagName; + } }; Primitive primitiveFrom ( int number ); diff --git a/alib2data/src/primitive/String.cpp b/alib2data/src/primitive/String.cpp index 05e27fda83..bc18ae77f5 100644 --- a/alib2data/src/primitive/String.cpp +++ b/alib2data/src/primitive/String.cpp @@ -48,18 +48,16 @@ String::operator std::string() const { return data; } -const std::string String::XML_TAG_NAME = "String"; - String String::parse(std::deque<sax::Token>::iterator& input) { return String(parseRaw(input)); } std::string String::parseRaw(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, primitive::String::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, primitive::String::getXmlTagName()); std::string data = ""; if( sax::FromXMLParserHelper::isTokenType(input, sax::Token::TokenType::CHARACTER)) data = sax::FromXMLParserHelper::popTokenData(input, sax::Token::TokenType::CHARACTER); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, primitive::String::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, primitive::String::getXmlTagName()); return data; } @@ -69,9 +67,9 @@ void String::compose(std::deque<sax::Token>& out) const { } void String::compose(std::deque<sax::Token>& out, std::string primitive) { - out.emplace_back(primitive::String::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(primitive::String::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); out.emplace_back(primitive, sax::Token::TokenType::CHARACTER); - out.emplace_back(primitive::String::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(primitive::String::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } String String::next() const { @@ -91,7 +89,7 @@ std::string xmlApi<std::string>::parse(std::deque<sax::Token>::iterator& input) } bool xmlApi<std::string>::first(const std::deque<sax::Token>::const_iterator& input) { - return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, primitive::String::XML_TAG_NAME); + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, primitive::String::getXmlTagName()); } void xmlApi<std::string>::compose(std::deque<sax::Token>& output, std::string data) { diff --git a/alib2data/src/primitive/String.h b/alib2data/src/primitive/String.h index e4a653d894..c179d79cd9 100644 --- a/alib2data/src/primitive/String.h +++ b/alib2data/src/primitive/String.h @@ -56,7 +56,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "String"; + + return xmlTagName; + } static String parse ( std::deque < sax::Token >::iterator & input ); static std::string parseRaw ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/primitive/Unsigned.cpp b/alib2data/src/primitive/Unsigned.cpp index 71071653e8..a37f774505 100644 --- a/alib2data/src/primitive/Unsigned.cpp +++ b/alib2data/src/primitive/Unsigned.cpp @@ -44,16 +44,14 @@ Unsigned::operator std::string() const { return std::to_string(data); } -const std::string Unsigned::XML_TAG_NAME = "Unsigned"; - Unsigned Unsigned::parse(std::deque<sax::Token>::iterator& input) { return Unsigned(parseRaw(input)); } unsigned Unsigned::parseRaw(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, Unsigned::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, Unsigned::getXmlTagName()); unsigned data = std::stoi(sax::FromXMLParserHelper::popTokenData(input, sax::Token::TokenType::CHARACTER)); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, Unsigned::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, Unsigned::getXmlTagName()); return data; } @@ -62,9 +60,9 @@ void Unsigned::compose(std::deque<sax::Token>& out) const { } void Unsigned::compose(std::deque<sax::Token>& out, unsigned primitive) { - out.emplace_back(Unsigned::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(Unsigned::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); out.emplace_back(std::itos(primitive), sax::Token::TokenType::CHARACTER); - out.emplace_back(Unsigned::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(Unsigned::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } Unsigned Unsigned::next() const { @@ -84,7 +82,7 @@ unsigned xmlApi<unsigned>::parse(std::deque<sax::Token>::iterator& input) { } bool xmlApi<unsigned>::first(const std::deque<sax::Token>::const_iterator& input) { - return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, primitive::Unsigned::XML_TAG_NAME); + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, primitive::Unsigned::getXmlTagName()); } void xmlApi<unsigned>::compose(std::deque<sax::Token>& output, unsigned data) { diff --git a/alib2data/src/primitive/Unsigned.h b/alib2data/src/primitive/Unsigned.h index fc33cfcab0..1a287cfdcc 100644 --- a/alib2data/src/primitive/Unsigned.h +++ b/alib2data/src/primitive/Unsigned.h @@ -53,7 +53,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "Unsigned"; + + return xmlTagName; + } static Unsigned parse ( std::deque < sax::Token >::iterator & input ); static unsigned parseRaw ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/regexp/RegExp.cpp b/alib2data/src/regexp/RegExp.cpp index 496885f271..64679c8ba1 100644 --- a/alib2data/src/regexp/RegExp.cpp +++ b/alib2data/src/regexp/RegExp.cpp @@ -17,8 +17,6 @@ namespace regexp { -const std::string RegExp::XML_TAG_NAME_REF = "RegExpRef"; - const std::set < alphabet::Symbol > & RegExp::getAlphabet ( ) const { return this->getData ( ).getAlphabet ( ); } diff --git a/alib2data/src/regexp/RegExp.h b/alib2data/src/regexp/RegExp.h index d2c66bb31f..8595280f97 100644 --- a/alib2data/src/regexp/RegExp.h +++ b/alib2data/src/regexp/RegExp.h @@ -27,7 +27,11 @@ class RegExp : public alib::WrapperBase < RegExpBase > { public: const std::set < alphabet::Symbol > & getAlphabet ( ) const; - const static std::string XML_TAG_NAME_REF; + static const std::string & getXmlTagRefName() { + static std::string xmlTagName = "RegExpRef"; + + return xmlTagName; + } }; regexp::RegExp regexpFrom ( const std::string & string ); diff --git a/alib2data/src/regexp/formal/FormalRegExp.cpp b/alib2data/src/regexp/formal/FormalRegExp.cpp index db7257695b..34b278604c 100644 --- a/alib2data/src/regexp/formal/FormalRegExp.cpp +++ b/alib2data/src/regexp/formal/FormalRegExp.cpp @@ -117,26 +117,24 @@ FormalRegExp::operator std::string ( ) const { return ss.str ( ); } -const std::string FormalRegExp::XML_TAG_NAME = "FormalRegExp"; - FormalRegExp FormalRegExp::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, FormalRegExp::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, FormalRegExp::getXmlTagName() ); std::set < alphabet::Symbol > alphabet = RegExpFromXMLParser::parseAlphabet ( input ); std::rvalue_ref < FormalRegExpElement > element ( alib::xmlApi < regexp::FormalRegExpElement >::parse ( input ) ); FormalRegExp regexp ( std::move ( alphabet ), std::move ( element ) ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, FormalRegExp::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, FormalRegExp::getXmlTagName() ); return regexp; } void FormalRegExp::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( FormalRegExp::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( FormalRegExp::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); RegExpToXMLComposer::composeAlphabet ( out, getAlphabet ( ) ); alib::xmlApi < FormalRegExpElement >::compose ( out, this->getRegExp ( ) ); - out.emplace_back ( FormalRegExp::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( FormalRegExp::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace regexp */ @@ -165,6 +163,6 @@ auto formalRegExpParserRegister = xmlApi < regexp::RegExp >::ParserRegister < re auto formalRegExpParserRegister2 = xmlApi < alib::Object >::ParserRegister < regexp::FormalRegExp > ( ); auto FormalRegExpFromUnboundedRegExp = castApi::CastRegister < regexp::FormalRegExp, regexp::UnboundedRegExp > ( ); -auto FormalRegExpCastBinder = castApi::CastPoolStringBinder < regexp::FormalRegExp > ( regexp::FormalRegExp::XML_TAG_NAME ); +auto FormalRegExpCastBinder = castApi::CastPoolStringBinder < regexp::FormalRegExp > ( regexp::FormalRegExp::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/regexp/formal/FormalRegExp.h b/alib2data/src/regexp/formal/FormalRegExp.h index 8ac557cf66..86fad7b7da 100644 --- a/alib2data/src/regexp/formal/FormalRegExp.h +++ b/alib2data/src/regexp/formal/FormalRegExp.h @@ -96,7 +96,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "FormalRegExp"; + + return xmlTagName; + } static FormalRegExp parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp b/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp index 41bb2cc4cc..f1a0bb9845 100644 --- a/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp +++ b/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp @@ -117,26 +117,24 @@ UnboundedRegExp::operator std::string ( ) const { return ss.str ( ); } -const std::string UnboundedRegExp::XML_TAG_NAME = "UnboundedRegExp"; - UnboundedRegExp UnboundedRegExp::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, UnboundedRegExp::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, UnboundedRegExp::getXmlTagName() ); std::set < alphabet::Symbol > alphabet = RegExpFromXMLParser::parseAlphabet ( input ); std::rvalue_ref < UnboundedRegExpElement > element ( alib::xmlApi < regexp::UnboundedRegExpElement >::parse ( input ) ); UnboundedRegExp regexp ( std::move ( alphabet ), std::move ( element ) ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, UnboundedRegExp::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, UnboundedRegExp::getXmlTagName() ); return regexp; } void UnboundedRegExp::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( UnboundedRegExp::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( UnboundedRegExp::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); RegExpToXMLComposer::composeAlphabet ( out, this->getAlphabet ( ) ); alib::xmlApi < UnboundedRegExpElement >::compose ( out, this->getRegExp ( ) ); - out.emplace_back ( UnboundedRegExp::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( UnboundedRegExp::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace regexp */ @@ -165,6 +163,6 @@ auto unboundedRegExpParserRegister = xmlApi < regexp::RegExp >::ParserRegister < auto unboundedRegExpParserRegister2 = xmlApi < alib::Object >::ParserRegister < regexp::UnboundedRegExp > ( ); auto UnboundedRegExpFromFormalRegExp = castApi::CastRegister < regexp::UnboundedRegExp, regexp::FormalRegExp > ( ); -auto UnboundedRegExpCastBinder = castApi::CastPoolStringBinder < regexp::UnboundedRegExp > ( regexp::UnboundedRegExp::XML_TAG_NAME ); +auto UnboundedRegExpCastBinder = castApi::CastPoolStringBinder < regexp::UnboundedRegExp > ( regexp::UnboundedRegExp::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExp.h b/alib2data/src/regexp/unbounded/UnboundedRegExp.h index 342a775c4c..3b863e2d0e 100644 --- a/alib2data/src/regexp/unbounded/UnboundedRegExp.h +++ b/alib2data/src/regexp/unbounded/UnboundedRegExp.h @@ -96,7 +96,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "UnboundedRegExp"; + + return xmlTagName; + } static UnboundedRegExp parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/string/CyclicString.cpp b/alib2data/src/string/CyclicString.cpp index 7c70171875..c40c2519dc 100644 --- a/alib2data/src/string/CyclicString.cpp +++ b/alib2data/src/string/CyclicString.cpp @@ -94,21 +94,19 @@ CyclicString::operator std::string () const { return std::move(ss).str(); } -const std::string CyclicString::XML_TAG_NAME = "CyclicString"; - CyclicString CyclicString::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, CyclicString::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, CyclicString::getXmlTagName()); std::set<alphabet::Symbol> alphabet = StringFromXMLParser::parseAlphabet(input); std::vector<alphabet::Symbol> content = StringFromXMLParser::parseContent(input); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, CyclicString::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, CyclicString::getXmlTagName()); return CyclicString ( std::move ( alphabet ), std::move ( content ) ); } void CyclicString::compose(std::deque<sax::Token>& out) const { - out.emplace_back(CyclicString::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(CyclicString::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); StringToXMLComposer::compose(out, getAlphabet()); StringToXMLComposer::compose(out, m_Data); - out.emplace_back(CyclicString::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(CyclicString::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } } /* namespace string */ @@ -138,6 +136,6 @@ auto cyclicStringParserRegister = xmlApi<string::String>::ParserRegister<string: auto cyclicStringParserRegister2 = xmlApi<alib::Object>::ParserRegister<string::CyclicString>(); auto CyclicStringFromEpsilon = castApi::CastRegister<string::CyclicString, string::Epsilon>(); -auto CyclicStringCastBinder = castApi::CastPoolStringBinder<string::CyclicString>(string::CyclicString::XML_TAG_NAME); +auto CyclicStringCastBinder = castApi::CastPoolStringBinder<string::CyclicString>(string::CyclicString::getXmlTagName()); } /* namespace alib */ diff --git a/alib2data/src/string/CyclicString.h b/alib2data/src/string/CyclicString.h index 05762ea3c9..2dc7b101b2 100644 --- a/alib2data/src/string/CyclicString.h +++ b/alib2data/src/string/CyclicString.h @@ -70,7 +70,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "CyclicString"; + + return xmlTagName; + } static CyclicString parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/string/Epsilon.cpp b/alib2data/src/string/Epsilon.cpp index 344a63b877..6c88ae1802 100644 --- a/alib2data/src/string/Epsilon.cpp +++ b/alib2data/src/string/Epsilon.cpp @@ -53,21 +53,19 @@ Epsilon::operator std::string() const { Epsilon Epsilon::EPSILON = Epsilon(); -const std::string Epsilon::XML_TAG_NAME = "Epsilon"; - std::vector<alphabet::Symbol> Epsilon::content; Epsilon Epsilon::parse(std::deque<sax::Token>::iterator& input) { - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, Epsilon::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, Epsilon::getXmlTagName()); std::set<alphabet::Symbol> alphabet = StringFromXMLParser::parseAlphabet(input); - sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, Epsilon::XML_TAG_NAME); + sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, Epsilon::getXmlTagName()); return Epsilon(alphabet); } void Epsilon::compose(std::deque<sax::Token>& out) const { - out.emplace_back(Epsilon::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT); + out.emplace_back(Epsilon::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); StringToXMLComposer::compose(out, getAlphabet()); - out.emplace_back(Epsilon::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT); + out.emplace_back(Epsilon::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } } /* namespace string */ diff --git a/alib2data/src/string/Epsilon.h b/alib2data/src/string/Epsilon.h index f193cafe0d..b173a22a01 100644 --- a/alib2data/src/string/Epsilon.h +++ b/alib2data/src/string/Epsilon.h @@ -64,7 +64,11 @@ public: static Epsilon EPSILON; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "Epsilon"; + + return xmlTagName; + } static Epsilon parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/string/LinearString.cpp b/alib2data/src/string/LinearString.cpp index 89228ef427..785d32b2ae 100644 --- a/alib2data/src/string/LinearString.cpp +++ b/alib2data/src/string/LinearString.cpp @@ -126,22 +126,20 @@ LinearString::operator std::string ( ) const { return std::move ( ss ).str ( ); } -const std::string LinearString::XML_TAG_NAME = "LinearString"; - LinearString LinearString::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, LinearString::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, LinearString::getXmlTagName() ); std::set < alphabet::Symbol > alphabet = StringFromXMLParser::parseAlphabet ( input ); std::vector < alphabet::Symbol > content = StringFromXMLParser::parseContent ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, LinearString::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, LinearString::getXmlTagName() ); return LinearString ( alphabet, content ); } void LinearString::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( LinearString::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( LinearString::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); StringToXMLComposer::compose ( out, getAlphabet() ); StringToXMLComposer::compose ( out, m_Data ); - out.emplace_back ( LinearString::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( LinearString::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace string */ @@ -176,6 +174,6 @@ auto LinearStringFromPrefixRankedPattern = castApi::CastRegister < string::Linea auto LinearStringFromPrefixRankedBarTree = castApi::CastRegister < string::LinearString, tree::PrefixRankedBarTree > ( ); auto LinearStringFromPrefixRankedBarPattern = castApi::CastRegister < string::LinearString, tree::PrefixRankedBarPattern > ( ); auto LinearStringFromPrefixBarTree = castApi::CastRegister < string::LinearString, tree::PrefixBarTree > ( ); -auto LinearStringCastBinder = castApi::CastPoolStringBinder < string::LinearString > ( string::LinearString::XML_TAG_NAME ); +auto LinearStringCastBinder = castApi::CastPoolStringBinder < string::LinearString > ( string::LinearString::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/string/LinearString.h b/alib2data/src/string/LinearString.h index 392cefe238..e3d4cdfb0b 100644 --- a/alib2data/src/string/LinearString.h +++ b/alib2data/src/string/LinearString.h @@ -90,7 +90,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "LinearString"; + + return xmlTagName; + } static LinearString parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/string/LinearStringTerminatingSymbol.cpp b/alib2data/src/string/LinearStringTerminatingSymbol.cpp index 02dcb883ef..498803f88a 100644 --- a/alib2data/src/string/LinearStringTerminatingSymbol.cpp +++ b/alib2data/src/string/LinearStringTerminatingSymbol.cpp @@ -98,24 +98,22 @@ LinearStringTerminatingSymbol::operator std::string ( ) const { return std::move ( ss ).str ( ); } -const std::string LinearStringTerminatingSymbol::XML_TAG_NAME = "LinearStringTerminatingSymbol"; - LinearStringTerminatingSymbol LinearStringTerminatingSymbol::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, LinearStringTerminatingSymbol::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, LinearStringTerminatingSymbol::getXmlTagName() ); std::set < alphabet::Symbol > alphabet = StringFromXMLParser::parseAlphabet ( input ); alphabet::Symbol terminatingSymbol = alib::xmlApi < alphabet::Symbol >::parse ( input ); std::vector < alphabet::Symbol > content = StringFromXMLParser::parseContent ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, LinearStringTerminatingSymbol::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, LinearStringTerminatingSymbol::getXmlTagName() ); return LinearStringTerminatingSymbol ( alphabet, terminatingSymbol, content ); } void LinearStringTerminatingSymbol::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( LinearStringTerminatingSymbol::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( LinearStringTerminatingSymbol::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); StringToXMLComposer::compose ( out, getAlphabet() ); alib::xmlApi < alphabet::Symbol >::compose ( out, getTerminatingSymbol ( ) ); StringToXMLComposer::compose ( out, m_Data ); - out.emplace_back ( LinearStringTerminatingSymbol::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( LinearStringTerminatingSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace string */ diff --git a/alib2data/src/string/LinearStringTerminatingSymbol.h b/alib2data/src/string/LinearStringTerminatingSymbol.h index bf9eab9b15..b7d087f251 100644 --- a/alib2data/src/string/LinearStringTerminatingSymbol.h +++ b/alib2data/src/string/LinearStringTerminatingSymbol.h @@ -79,7 +79,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "LinearStringTerminatingSymbol"; + + return xmlTagName; + } static LinearStringTerminatingSymbol parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/string/String.cpp b/alib2data/src/string/String.cpp index a33cfa3541..75d0515826 100644 --- a/alib2data/src/string/String.cpp +++ b/alib2data/src/string/String.cpp @@ -13,8 +13,6 @@ namespace string { -const std::string String::XML_TAG_NAME_REF = "StringRef"; - const std::set < alphabet::Symbol > & String::getAlphabet ( ) const { return this->getData ( ).getAlphabet ( ); } diff --git a/alib2data/src/string/String.h b/alib2data/src/string/String.h index e5be2f597c..fa3645e1d6 100644 --- a/alib2data/src/string/String.h +++ b/alib2data/src/string/String.h @@ -25,7 +25,11 @@ public: const std::set < alphabet::Symbol > & getAlphabet ( ) const; void extendAlphabet ( const std::set < alphabet::Symbol > & symbols ); - const static std::string XML_TAG_NAME_REF; + static const std::string & getXmlTagRefName() { + static std::string xmlTagName = "StringRef"; + + return xmlTagName; + } }; string::String stringFrom ( const alphabet::Symbol & symbol ); diff --git a/alib2data/src/tree/RankedTreeWrapper.cpp b/alib2data/src/tree/RankedTreeWrapper.cpp index ece8d8afdb..e64fb3dfca 100644 --- a/alib2data/src/tree/RankedTreeWrapper.cpp +++ b/alib2data/src/tree/RankedTreeWrapper.cpp @@ -18,8 +18,6 @@ void RankedTreeWrapper::extendAlphabet ( const std::set < alphabet::RankedSymbol this->getData ( ).extendAlphabet ( symbols ); } -const std::string RankedTreeWrapper::XML_TAG_NAME_REF = "RankedTreeWrapperRef"; - } /* namespace tree */ namespace alib { diff --git a/alib2data/src/tree/RankedTreeWrapper.h b/alib2data/src/tree/RankedTreeWrapper.h index 4c15c79bda..cd4a9e2e97 100644 --- a/alib2data/src/tree/RankedTreeWrapper.h +++ b/alib2data/src/tree/RankedTreeWrapper.h @@ -23,7 +23,11 @@ public: const std::set < alphabet::RankedSymbol > & getAlphabet ( ) const; void extendAlphabet ( const std::set < alphabet::RankedSymbol > & symbols ); - const static std::string XML_TAG_NAME_REF; + static const std::string & getXmlTagRefName() { + static std::string xmlTagName = "RankedTreeWrapperRef"; + + return xmlTagName; + } }; } /* namespace tree */ diff --git a/alib2data/src/tree/Tree.cpp b/alib2data/src/tree/Tree.cpp index 0fa5c04964..c04c11839d 100644 --- a/alib2data/src/tree/Tree.cpp +++ b/alib2data/src/tree/Tree.cpp @@ -8,12 +8,6 @@ #include "Tree.h" #include <XmlApi.hpp> -namespace tree { - -const std::string Tree::XML_TAG_NAME_REF = "TreeRef"; - -} /* namespace tree */ - namespace alib { auto TreeDeleter = xmlApi < tree::Tree >::InputContextDeleter ( ); diff --git a/alib2data/src/tree/Tree.h b/alib2data/src/tree/Tree.h index ccfa179ee5..9c7b43f7ff 100644 --- a/alib2data/src/tree/Tree.h +++ b/alib2data/src/tree/Tree.h @@ -20,7 +20,11 @@ class Tree : public alib::WrapperBase < TreeBase > { using alib::WrapperBase < TreeBase >::WrapperBase; public: - const static std::string XML_TAG_NAME_REF; + static const std::string & getXmlTagRefName() { + static std::string xmlTagName = "TreeRef"; + + return xmlTagName; + } }; } /* namespace tree */ diff --git a/alib2data/src/tree/UnrankedTreeWrapper.cpp b/alib2data/src/tree/UnrankedTreeWrapper.cpp index d1612b97fa..1e343f0f12 100644 --- a/alib2data/src/tree/UnrankedTreeWrapper.cpp +++ b/alib2data/src/tree/UnrankedTreeWrapper.cpp @@ -18,8 +18,6 @@ void UnrankedTreeWrapper::extendAlphabet ( const std::set < alphabet::Symbol > & this->getData ( ).extendAlphabet ( symbols ); } -const std::string UnrankedTreeWrapper::XML_TAG_NAME_REF = "UnrankedTreeWrapperRef"; - } /* namespace tree */ namespace alib { diff --git a/alib2data/src/tree/UnrankedTreeWrapper.h b/alib2data/src/tree/UnrankedTreeWrapper.h index 6e6489bdc4..9b585b4e17 100644 --- a/alib2data/src/tree/UnrankedTreeWrapper.h +++ b/alib2data/src/tree/UnrankedTreeWrapper.h @@ -23,7 +23,11 @@ public: const std::set < alphabet::Symbol > & getAlphabet ( ) const; void extendAlphabet ( const std::set < alphabet::Symbol > & symbols ); - const static std::string XML_TAG_NAME_REF; + static const std::string & getXmlTagRefName() { + static std::string xmlTagName = "UnrankedTreeWrapperRef"; + + return xmlTagName; + } }; } /* namespace tree */ diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp index 443bd4cd13..d47f287ed4 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp @@ -150,28 +150,26 @@ PrefixRankedBarPattern::operator std::string ( ) const { return std::move ( ss ).str ( ); } -const std::string PrefixRankedBarPattern::XML_TAG_NAME = "PrefixRankedBarPattern"; - PrefixRankedBarPattern PrefixRankedBarPattern::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedBarPattern::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedBarPattern::getXmlTagName() ); std::set < alphabet::RankedSymbol > bars = TreeFromXMLParser::parseBars ( input ); alphabet::RankedSymbol variablesBarSymbol = TreeFromXMLParser::parseRankedVariablesBar ( input ); alphabet::RankedSymbol subtreeWildcardSymbol = TreeFromXMLParser::parseSubtreeWildcardRankedSymbol ( input ); std::set < alphabet::RankedSymbol > rankedAlphabet = TreeFromXMLParser::parseRankedAlphabet ( input ); std::vector < alphabet::RankedSymbol > data = TreeFromXMLParser::parseRankedContent ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedBarPattern::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedBarPattern::getXmlTagName() ); return PrefixRankedBarPattern ( std::move ( bars ), std::move ( variablesBarSymbol ), std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( data ) ); } void PrefixRankedBarPattern::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( PrefixRankedBarPattern::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( PrefixRankedBarPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); TreeToXMLComposer::composeBars ( out, getBars() ); TreeToXMLComposer::composeVariablesBar ( out, getVariablesBar() ); TreeToXMLComposer::composeSubtreeWildcard ( out, getSubtreeWildcard() ); TreeToXMLComposer::composeAlphabet ( out, getAlphabet() ); TreeToXMLComposer::composeContent ( out, m_Data ); - out.emplace_back ( PrefixRankedBarPattern::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( PrefixRankedBarPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace tree */ @@ -246,6 +244,6 @@ auto prefixRankedBarPatternParserRegister3 = xmlApi < alib::Object >::ParserRegi auto PrefixRankedBarPatternFromRankedPattern = castApi::CastRegister < tree::PrefixRankedBarPattern, tree::RankedPattern > ( ); auto PrefixRankedBarPatternFromRankedTree = castApi::CastRegister < tree::PrefixRankedBarPattern, tree::PrefixRankedBarTree > ( ); -auto PrefixRankedBarPatternCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedBarPattern > ( tree::PrefixRankedBarPattern::XML_TAG_NAME ); +auto PrefixRankedBarPatternCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedBarPattern > ( tree::PrefixRankedBarPattern::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h index 9aeaf0a5e9..b110139b0e 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h +++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h @@ -91,7 +91,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "PrefixRankedBarPattern"; + + return xmlTagName; + } static PrefixRankedBarPattern parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp index 5f159cd3a1..f430304b38 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp @@ -134,24 +134,22 @@ PrefixRankedBarTree::operator std::string ( ) const { return std::move ( ss ).str ( ); } -const std::string PrefixRankedBarTree::XML_TAG_NAME = "PrefixRankedBarTree"; - PrefixRankedBarTree PrefixRankedBarTree::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedBarTree::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedBarTree::getXmlTagName() ); std::set < alphabet::RankedSymbol > bars = TreeFromXMLParser::parseBars ( input ); std::set < alphabet::RankedSymbol > rankedAlphabet = TreeFromXMLParser::parseRankedAlphabet ( input ); std::vector < alphabet::RankedSymbol > data = TreeFromXMLParser::parseRankedContent ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedBarTree::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedBarTree::getXmlTagName() ); return PrefixRankedBarTree ( std::move ( bars ), std::move ( rankedAlphabet ), std::move ( data ) ); } void PrefixRankedBarTree::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( PrefixRankedBarTree::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( PrefixRankedBarTree::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); TreeToXMLComposer::composeBars ( out, getBars() ); TreeToXMLComposer::composeAlphabet ( out, getAlphabet() ); TreeToXMLComposer::composeContent ( out, m_Data ); - out.emplace_back ( PrefixRankedBarTree::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( PrefixRankedBarTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace tree */ @@ -201,6 +199,6 @@ auto prefixRankedBarTreeParserRegister2 = xmlApi < tree::RankedTreeWrapper >::Pa auto prefixRankedBarTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarTree > (); auto PrefixRankedBarTreeFromRankedTree = castApi::CastRegister < tree::PrefixRankedBarTree, tree::RankedTree > ( ); -auto PrefixRankedBarTreeCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedBarTree > ( tree::PrefixRankedBarTree::XML_TAG_NAME ); +auto PrefixRankedBarTreeCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedBarTree > ( tree::PrefixRankedBarTree::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/ranked/PrefixRankedBarTree.h index 5f47cee80e..e098af96a0 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h +++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h @@ -79,7 +79,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "PrefixRankedBarTree"; + + return xmlTagName; + } static PrefixRankedBarTree parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp index 2394bd862c..6b4895ff8e 100644 --- a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp @@ -127,24 +127,22 @@ PrefixRankedPattern::operator std::string ( ) const { return std::move ( ss ).str ( ); } -const std::string PrefixRankedPattern::XML_TAG_NAME = "PrefixRankedPattern"; - PrefixRankedPattern PrefixRankedPattern::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedPattern::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedPattern::getXmlTagName() ); alphabet::RankedSymbol subtreeWildcardSymbol = TreeFromXMLParser::parseSubtreeWildcardRankedSymbol ( input ); std::set < alphabet::RankedSymbol > rankedAlphabet = TreeFromXMLParser::parseRankedAlphabet ( input ); std::vector < alphabet::RankedSymbol > data = TreeFromXMLParser::parseRankedContent ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedPattern::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedPattern::getXmlTagName() ); return PrefixRankedPattern ( std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( data ) ); } void PrefixRankedPattern::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( PrefixRankedPattern::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( PrefixRankedPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); TreeToXMLComposer::composeSubtreeWildcard ( out, getSubtreeWildcard() ); TreeToXMLComposer::composeAlphabet ( out, getAlphabet() ); TreeToXMLComposer::composeContent ( out, m_Data ); - out.emplace_back ( PrefixRankedPattern::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( PrefixRankedPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace tree */ @@ -189,6 +187,6 @@ auto prefixRankedPatternParserRegister2 = xmlApi < tree::RankedTreeWrapper >::Pa auto prefixRankedPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedPattern > (); auto PrefixRankedPatternFromRankedPattern = castApi::CastRegister < tree::PrefixRankedPattern, tree::RankedPattern > ( ); -auto PrefixRankedPatternCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedPattern > ( tree::PrefixRankedPattern::XML_TAG_NAME ); +auto PrefixRankedPatternCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedPattern > ( tree::PrefixRankedPattern::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.h b/alib2data/src/tree/ranked/PrefixRankedPattern.h index ca8d7b3317..8f9c185889 100644 --- a/alib2data/src/tree/ranked/PrefixRankedPattern.h +++ b/alib2data/src/tree/ranked/PrefixRankedPattern.h @@ -80,7 +80,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "PrefixRankedPattern"; + + return xmlTagName; + } static PrefixRankedPattern parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.cpp b/alib2data/src/tree/ranked/PrefixRankedTree.cpp index 4df9d7fd6b..9ce420f232 100644 --- a/alib2data/src/tree/ranked/PrefixRankedTree.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedTree.cpp @@ -117,22 +117,20 @@ PrefixRankedTree::operator std::string ( ) const { return std::move ( ss ).str ( ); } -const std::string PrefixRankedTree::XML_TAG_NAME = "PrefixRankedTree"; - PrefixRankedTree PrefixRankedTree::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedTree::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedTree::getXmlTagName() ); std::set < alphabet::RankedSymbol > rankedAlphabet = TreeFromXMLParser::parseRankedAlphabet ( input ); std::vector < alphabet::RankedSymbol > data = TreeFromXMLParser::parseRankedContent ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedTree::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedTree::getXmlTagName() ); return PrefixRankedTree ( std::move ( rankedAlphabet ), std::move ( data ) ); } void PrefixRankedTree::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( PrefixRankedTree::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( PrefixRankedTree::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); TreeToXMLComposer::composeAlphabet ( out, getAlphabet() ); TreeToXMLComposer::composeContent ( out, m_Data ); - out.emplace_back ( PrefixRankedTree::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( PrefixRankedTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace tree */ @@ -164,6 +162,6 @@ auto prefixRankedTreeParserRegister2 = xmlApi < tree::RankedTreeWrapper >::Parse auto prefixRankedTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedTree > (); auto PrefixRankedTreeFromRankedTree = castApi::CastRegister < tree::PrefixRankedTree, tree::RankedTree > ( ); -auto PrefixRankedTreeCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedTree > ( tree::PrefixRankedTree::XML_TAG_NAME ); +auto PrefixRankedTreeCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedTree > ( tree::PrefixRankedTree::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.h b/alib2data/src/tree/ranked/PrefixRankedTree.h index 1090d5205c..52e8a829a3 100644 --- a/alib2data/src/tree/ranked/PrefixRankedTree.h +++ b/alib2data/src/tree/ranked/PrefixRankedTree.h @@ -73,7 +73,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "PrefixRankedTree"; + + return xmlTagName; + } static PrefixRankedTree parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp b/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp index 47e2dbc57d..9ae77324a9 100644 --- a/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp +++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp @@ -110,27 +110,25 @@ RankedNonlinearPattern::operator std::string ( ) const { return ss.str ( ); } -const std::string RankedNonlinearPattern::XML_TAG_NAME = "RankedNonlinearPattern"; - RankedNonlinearPattern RankedNonlinearPattern::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, RankedNonlinearPattern::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, RankedNonlinearPattern::getXmlTagName() ); alphabet::RankedSymbol subtreeWildcardSymbol = TreeFromXMLParser::parseSubtreeWildcardRankedSymbol ( input ); std::set < alphabet::RankedSymbol > nonlinearVariables = TreeFromXMLParser::parseRankedNonlinearVariables ( input ); std::set < alphabet::RankedSymbol > rankedAlphabet = TreeFromXMLParser::parseRankedAlphabet ( input ); RankedNode root = alib::xmlApi < RankedNode >::parse ( input ); RankedNonlinearPattern tree ( std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( root ) ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RankedNonlinearPattern::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RankedNonlinearPattern::getXmlTagName() ); return tree; } void RankedNonlinearPattern::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( RankedNonlinearPattern::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( RankedNonlinearPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); TreeToXMLComposer::composeSubtreeWildcard ( out, getSubtreeWildcard() ); TreeToXMLComposer::composeNonlinearVariables ( out, getNonlinearVariables() ); TreeToXMLComposer::composeAlphabet ( out, getAlphabet() ); alib::xmlApi < RankedNode >::compose ( out, getRoot() ); - out.emplace_back ( RankedNonlinearPattern::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( RankedNonlinearPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace tree */ diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/ranked/RankedNonlinearPattern.h index 922bf2f89d..f52d02ce10 100644 --- a/alib2data/src/tree/ranked/RankedNonlinearPattern.h +++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.h @@ -106,7 +106,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "RankedNonlinearPattern"; + + return xmlTagName; + } static RankedNonlinearPattern parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/tree/ranked/RankedPattern.cpp b/alib2data/src/tree/ranked/RankedPattern.cpp index bb46e7534d..1d7d77d952 100644 --- a/alib2data/src/tree/ranked/RankedPattern.cpp +++ b/alib2data/src/tree/ranked/RankedPattern.cpp @@ -109,25 +109,23 @@ RankedPattern::operator std::string ( ) const { return ss.str ( ); } -const std::string RankedPattern::XML_TAG_NAME = "RankedPattern"; - RankedPattern RankedPattern::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, RankedPattern::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, RankedPattern::getXmlTagName() ); alphabet::RankedSymbol subtreeWildcardSymbol = TreeFromXMLParser::parseSubtreeWildcardRankedSymbol ( input ); std::set < alphabet::RankedSymbol > rankedAlphabet = TreeFromXMLParser::parseRankedAlphabet ( input ); RankedNode root = alib::xmlApi < RankedNode >::parse ( input ); RankedPattern tree ( std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( root ) ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RankedPattern::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RankedPattern::getXmlTagName() ); return tree; } void RankedPattern::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( RankedPattern::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( RankedPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); TreeToXMLComposer::composeSubtreeWildcard ( out, getSubtreeWildcard() ); TreeToXMLComposer::composeAlphabet ( out, getAlphabet() ); alib::xmlApi < RankedNode >::compose ( out, getRoot() ); - out.emplace_back ( RankedPattern::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( RankedPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace tree */ @@ -168,6 +166,6 @@ auto rankedPatternParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRe auto rankedPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::RankedPattern > (); auto RankedPatternFromUnrankedPattern = castApi::CastRegister < tree::RankedPattern, tree::UnrankedPattern > ( ); -auto RankedPatternCastBinder = castApi::CastPoolStringBinder < tree::RankedPattern > ( tree::RankedPattern::XML_TAG_NAME ); +auto RankedPatternCastBinder = castApi::CastPoolStringBinder < tree::RankedPattern > ( tree::RankedPattern::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/tree/ranked/RankedPattern.h b/alib2data/src/tree/ranked/RankedPattern.h index 6588504793..edcfa94ba6 100644 --- a/alib2data/src/tree/ranked/RankedPattern.h +++ b/alib2data/src/tree/ranked/RankedPattern.h @@ -101,7 +101,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "RankedPattern"; + + return xmlTagName; + } static RankedPattern parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/tree/ranked/RankedTree.cpp b/alib2data/src/tree/ranked/RankedTree.cpp index 2242b76399..3f3dcf9d90 100644 --- a/alib2data/src/tree/ranked/RankedTree.cpp +++ b/alib2data/src/tree/ranked/RankedTree.cpp @@ -108,23 +108,21 @@ RankedTree::operator std::string ( ) const { return ss.str ( ); } -const std::string RankedTree::XML_TAG_NAME = "RankedTree"; - RankedTree RankedTree::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, RankedTree::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, RankedTree::getXmlTagName() ); std::set < alphabet::RankedSymbol > rankedAlphabet = TreeFromXMLParser::parseRankedAlphabet ( input ); RankedNode root = alib::xmlApi < RankedNode >::parse ( input ); RankedTree tree ( std::move ( rankedAlphabet ), std::move ( root ) ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RankedTree::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RankedTree::getXmlTagName() ); return tree; } void RankedTree::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( RankedTree::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( RankedTree::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); TreeToXMLComposer::composeAlphabet ( out, getAlphabet ( ) ); alib::xmlApi < RankedNode >::compose ( out, * tree ); - out.emplace_back ( RankedTree::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( RankedTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace tree */ @@ -154,6 +152,6 @@ auto rankedTreeParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegis auto rankedTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::RankedTree > (); auto RankedTreeFromUnrankedTree = castApi::CastRegister < tree::RankedTree, tree::UnrankedTree > ( ); -auto RankedTreeCastBinder = castApi::CastPoolStringBinder < tree::RankedTree > ( tree::RankedTree::XML_TAG_NAME ); +auto RankedTreeCastBinder = castApi::CastPoolStringBinder < tree::RankedTree > ( tree::RankedTree::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/tree/ranked/RankedTree.h b/alib2data/src/tree/ranked/RankedTree.h index c7612b84b8..6b3b0f0f59 100644 --- a/alib2data/src/tree/ranked/RankedTree.h +++ b/alib2data/src/tree/ranked/RankedTree.h @@ -96,7 +96,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "RankedTree"; + + return xmlTagName; + } static RankedTree parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/tree/unranked/PrefixBarTree.cpp b/alib2data/src/tree/unranked/PrefixBarTree.cpp index 3165342c2c..cdd2578b15 100644 --- a/alib2data/src/tree/unranked/PrefixBarTree.cpp +++ b/alib2data/src/tree/unranked/PrefixBarTree.cpp @@ -126,24 +126,22 @@ PrefixBarTree::operator std::string ( ) const { return std::move ( ss ).str ( ); } -const std::string PrefixBarTree::XML_TAG_NAME = "PrefixBarTree"; - PrefixBarTree PrefixBarTree::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixBarTree::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixBarTree::getXmlTagName() ); alphabet::Symbol bar = TreeFromXMLParser::parseBar ( input ); std::set < alphabet::Symbol > unrankedAlphabet = TreeFromXMLParser::parseUnrankedAlphabet ( input ); std::vector < alphabet::Symbol > data = TreeFromXMLParser::parseUnrankedContent ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixBarTree::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixBarTree::getXmlTagName() ); return PrefixBarTree ( std::move ( bar ), std::move ( unrankedAlphabet ), std::move ( data ) ); } void PrefixBarTree::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( PrefixBarTree::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( PrefixBarTree::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); TreeToXMLComposer::composeBar ( out, getBar ( ) ); TreeToXMLComposer::composeAlphabet ( out, getAlphabet ( ) ); TreeToXMLComposer::composeContent ( out, m_Data ); - out.emplace_back ( PrefixBarTree::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( PrefixBarTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace tree */ @@ -184,6 +182,6 @@ auto prefixBarTreeParserRegister2 = xmlApi < tree::UnrankedTreeWrapper >::Parser auto prefixBarTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixBarTree > ( ); auto PrefixBarTreeFromUnrankedTree = castApi::CastRegister < tree::PrefixBarTree, tree::UnrankedTree > ( ); -auto PrefixBarTreeCastBinder = castApi::CastPoolStringBinder < tree::PrefixBarTree > ( tree::PrefixBarTree::XML_TAG_NAME ); +auto PrefixBarTreeCastBinder = castApi::CastPoolStringBinder < tree::PrefixBarTree > ( tree::PrefixBarTree::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/tree/unranked/PrefixBarTree.h b/alib2data/src/tree/unranked/PrefixBarTree.h index b0c45eb06e..4d696fd774 100644 --- a/alib2data/src/tree/unranked/PrefixBarTree.h +++ b/alib2data/src/tree/unranked/PrefixBarTree.h @@ -79,7 +79,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "PrefixBarTree"; + + return xmlTagName; + } static PrefixBarTree parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp index 5bb1120de0..9a573fe3d0 100644 --- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp +++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp @@ -110,27 +110,25 @@ UnrankedNonlinearPattern::operator std::string ( ) const { return ss.str ( ); } -const std::string UnrankedNonlinearPattern::XML_TAG_NAME = "UnrankedNonlinearPattern"; - UnrankedNonlinearPattern UnrankedNonlinearPattern::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, UnrankedNonlinearPattern::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, UnrankedNonlinearPattern::getXmlTagName() ); alphabet::Symbol subtreeWildcardSymbol = TreeFromXMLParser::parseSubtreeWildcardSymbol ( input ); std::set < alphabet::Symbol > nonlinearVariables = TreeFromXMLParser::parseUnrankedNonlinearVariables ( input ); std::set < alphabet::Symbol > rankedAlphabet = TreeFromXMLParser::parseUnrankedAlphabet ( input ); UnrankedNode root = alib::xmlApi < UnrankedNode >::parse ( input ); UnrankedNonlinearPattern tree ( std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( root ) ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, UnrankedNonlinearPattern::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, UnrankedNonlinearPattern::getXmlTagName() ); return tree; } void UnrankedNonlinearPattern::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( UnrankedNonlinearPattern::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( UnrankedNonlinearPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); TreeToXMLComposer::composeSubtreeWildcard ( out, getSubtreeWildcard ( ) ); TreeToXMLComposer::composeNonlinearVariables ( out, getNonlinearVariables ( ) ); TreeToXMLComposer::composeAlphabet ( out, getAlphabet ( ) ); alib::xmlApi < UnrankedNode >::compose ( out, * pattern ); - out.emplace_back ( UnrankedNonlinearPattern::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( UnrankedNonlinearPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace tree */ diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h index f896e933cc..40db0cd44a 100644 --- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h +++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h @@ -112,7 +112,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "UnrankedNonlinearPattern"; + + return xmlTagName; + } static UnrankedNonlinearPattern parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/tree/unranked/UnrankedPattern.cpp b/alib2data/src/tree/unranked/UnrankedPattern.cpp index b0151f7877..c60e28a252 100644 --- a/alib2data/src/tree/unranked/UnrankedPattern.cpp +++ b/alib2data/src/tree/unranked/UnrankedPattern.cpp @@ -110,25 +110,23 @@ UnrankedPattern::operator std::string ( ) const { return ss.str ( ); } -const std::string UnrankedPattern::XML_TAG_NAME = "UnrankedPattern"; - UnrankedPattern UnrankedPattern::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, UnrankedPattern::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, UnrankedPattern::getXmlTagName() ); alphabet::Symbol subtreeWildcardSymbol = TreeFromXMLParser::parseSubtreeWildcardSymbol ( input ); std::set < alphabet::Symbol > rankedAlphabet = TreeFromXMLParser::parseUnrankedAlphabet ( input ); UnrankedNode root = alib::xmlApi < UnrankedNode >::parse ( input ); UnrankedPattern tree ( std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( root ) ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, UnrankedPattern::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, UnrankedPattern::getXmlTagName() ); return tree; } void UnrankedPattern::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( UnrankedPattern::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( UnrankedPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); TreeToXMLComposer::composeSubtreeWildcard ( out, getSubtreeWildcard ( ) ); TreeToXMLComposer::composeAlphabet ( out, getAlphabet ( ) ); alib::xmlApi < UnrankedNode >::compose ( out, * pattern ); - out.emplace_back ( UnrankedPattern::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( UnrankedPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace tree */ @@ -169,6 +167,6 @@ auto unrankedPatternParserRegister2 = xmlApi < tree::UnrankedTreeWrapper >::Pars auto unrankedPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::UnrankedPattern > ( ); auto UnrankedPatternFromRankedPattern = castApi::CastRegister < tree::UnrankedPattern, tree::RankedPattern > ( ); -auto UnrankedPatternCastBinder = castApi::CastPoolStringBinder < tree::UnrankedPattern > ( tree::UnrankedPattern::XML_TAG_NAME ); +auto UnrankedPatternCastBinder = castApi::CastPoolStringBinder < tree::UnrankedPattern > ( tree::UnrankedPattern::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/tree/unranked/UnrankedPattern.h b/alib2data/src/tree/unranked/UnrankedPattern.h index a817d626b0..b691ae6ea3 100644 --- a/alib2data/src/tree/unranked/UnrankedPattern.h +++ b/alib2data/src/tree/unranked/UnrankedPattern.h @@ -103,7 +103,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "UnrankedPattern"; + + return xmlTagName; + } static UnrankedPattern parse ( std::deque < sax::Token >::iterator & input ); diff --git a/alib2data/src/tree/unranked/UnrankedTree.cpp b/alib2data/src/tree/unranked/UnrankedTree.cpp index dbbba96be6..7d44e61bed 100644 --- a/alib2data/src/tree/unranked/UnrankedTree.cpp +++ b/alib2data/src/tree/unranked/UnrankedTree.cpp @@ -109,23 +109,21 @@ UnrankedTree::operator std::string ( ) const { return ss.str ( ); } -const std::string UnrankedTree::XML_TAG_NAME = "UnrankedTree"; - UnrankedTree UnrankedTree::parse ( std::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, UnrankedTree::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, UnrankedTree::getXmlTagName() ); std::set < alphabet::Symbol > rankedAlphabet = TreeFromXMLParser::parseUnrankedAlphabet ( input ); UnrankedNode root = alib::xmlApi < UnrankedNode >::parse ( input ); UnrankedTree tree ( std::move ( rankedAlphabet ), std::move ( root ) ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, UnrankedTree::XML_TAG_NAME ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, UnrankedTree::getXmlTagName() ); return tree; } void UnrankedTree::compose ( std::deque < sax::Token > & out ) const { - out.emplace_back ( UnrankedTree::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT ); + out.emplace_back ( UnrankedTree::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); TreeToXMLComposer::composeAlphabet ( out, getAlphabet ( ) ); alib::xmlApi < UnrankedNode >::compose ( out, * tree ); - out.emplace_back ( UnrankedTree::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT ); + out.emplace_back ( UnrankedTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } } /* namespace tree */ @@ -155,6 +153,6 @@ auto unrankedTreeParserRegister2 = xmlApi < tree::UnrankedTreeWrapper >::ParserR auto unrankedTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::UnrankedTree > ( ); auto UnrankedTreeFromRankedTree = castApi::CastRegister < tree::UnrankedTree, tree::RankedTree > ( ); -auto UnrankedTreeCastBinder = castApi::CastPoolStringBinder < tree::UnrankedTree > ( tree::UnrankedTree::XML_TAG_NAME ); +auto UnrankedTreeCastBinder = castApi::CastPoolStringBinder < tree::UnrankedTree > ( tree::UnrankedTree::getXmlTagName() ); } /* namespace alib */ diff --git a/alib2data/src/tree/unranked/UnrankedTree.h b/alib2data/src/tree/unranked/UnrankedTree.h index 90201ee177..1c1f2dabdf 100644 --- a/alib2data/src/tree/unranked/UnrankedTree.h +++ b/alib2data/src/tree/unranked/UnrankedTree.h @@ -100,7 +100,11 @@ public: virtual explicit operator std::string ( ) const; - const static std::string XML_TAG_NAME; + static const std::string & getXmlTagName() { + static std::string xmlTagName = "UnrankedTree"; + + return xmlTagName; + } static UnrankedTree parse ( std::deque < sax::Token >::iterator & input ); -- GitLab