diff --git a/alib2common/src/XmlApi.hpp b/alib2common/src/XmlApi.hpp index 977af5d9e0ee33b8e4042e0ce1676e8f63530340..83f5950a85841da1880ff71c6453b5e7695efced 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 82bd8dd3d9555e39757967c98a6ec8211aa27d79..70d188b9c67649c12bba863fc7cc63d7ac9e55af 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 0f697f0f721e6ad5ac496bc1bb319974cde19a4d..122a6315ccb23a6004d27b1b22121a71775bd3dd 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 9d56805989526473e217c121c9efb7f0fe6b1b54..895fbc381453283e5db399b0d242f10f986aed86 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 3d803b0ba965a4544bb8f382caba73d1768ddc87..cc0930c2c0cd26d9c4445be8f5e12fcdcd698b72 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 b3b7a31e0c1d75682f21355cf58df2bfe1a3da0c..b249a3cdf3635e542985762d149b9eaedf7574a7 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 0bed0e556583c1b2384551b646ff40533adfa184..e8fcc8fae7b9175b542203c7de1726530d9b9517 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 7eb612a33203910da3e3549b2da0ed03b1653901..36630a4049f9880616fb76fcbb7c5e24ae218eb7 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 350ad3a8b998018ebd5d2342b1e92651ec7b80e6..684ecd1cc02fc5d636249f79ea0fe2649b633c3e 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 8383d3813812b3aacfd8ea1935433295e25ca89c..a8762856001ed4aeeb92c003007b6d52fdc9efa0 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 45eb16caae2061d8ac755025329c985be17ab652..102eec43e8a06048ed2ce3578d29a1c38ea1f60f 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 a1545fd1ae869b9de64e0a759296f8e4180576dc..e62a367cbbea718b9e78c144de8ee3c746813369 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 ecf06365474a07db3d2331de2429157971718c3b..a745d7e3669907d2669bb4fe951a38f83d407fce 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 792c80185ae0c0b59926fe86f1eacc38f26ff555..dd856cfe4ff0db5ed4eaf24aaad6112eeecafc34 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 377eb2d36e3de85f46b89f08a04c9d254d1f12cc..428628553cfc181aa3d356b9b01ac8937d043c4d 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 5cefece0e327524b14501dd0765767ba534d9082..0de76fa06ca800b56e72a8ad9a28605f9583f18a 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 8c026215590c855de49a89c8b8507dd7b8ce89f7..a3dda5d2a37de41f1eed400bf47a933f29e4a6d9 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 f58bea6d8c8d94a33ab07d59fd0000258e1d3bcf..e40117a955d0364ed7e2aa3a39e874e57731642d 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 6feb621778d1cae7fccb83e5923601030789af44..f5bcbf0f9abcd0c25b6f5c1d506ef9a2116ad985 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 3e3275049b7c62a3f13b37d369501fb19684651a..3d92f352c930141e0cbaa6265a8fbb1114ba4662 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 9c0666d690ff96585d005fd87dd92d43fdc1e0a8..7065e3ddaee9b84710dc24809d695e7894bcfd9f 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 6a627cf28af926f995c34c0f30a69d061f42e7a4..3d39010959f4659b37c754baa74ecea73511606f 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 db050efbcf04f3468f57e38e51f79636b87f069a..4b1d2b99c12d597d3dabbf86e54f7fd6ecf19cc6 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 77ce1b695e9bbb6d578e5635a328f9acd9c3ad8b..39b5a8b338432ab46dca75002ce213b23de4dec6 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 946a6d2c20e7dfb035ba0b2dedb81879fc027ee9..fd80b3302cc54304b7ff4b60cd5dafbd78797d21 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 886350a10796308b628a40855c48c6fa3799d79b..4bc03b76b15f56ede8636e4089b584bc6b4f7a75 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 43881aaeaaee9589c3251a68cf40b7faa3e909c0..50b0fe07218b23ecad81198cba9d4ed6fe3ad7d3 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 850f15f51f4a75b69318f8a800df25ee478c21da..099add0767626fac6dbc379cfc539e58423008e6 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 a247d64da3ea2f2d82e4982074e104c6b487c354..9d35125a04c9dfd9091e06b1d1813d5c10dfc2a1 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 ecfcfb6c4b9d36f7debb230f81ef08a770fc4feb..50787d9f56ffe5622691f30e2d8e996732c6d29c 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 38bcdc502a708caf1ad3a6038f2d6070e0e28f61..1fcf170a1a9ecce457cd8978e99fdb90c647d104 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 8a08b27443a11ad90cca5dbeb6231de6fc810665..360413bafe7195d85170e0f50fcdbac18ffec845 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 7006d540e4f673f99e44e272e366ea631aeb82e6..4d0f59546d104f055ee163e3921865edd9bc2223 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 22fd597449219faeca66dd0ead7ad5ea2a189da0..509935f50b7b4cc0108fa8c845ba2be729a76b1a 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 e24f4f8306d370ae2d5dab9925e8b83fe47690f6..00856cb3d1a25f477e1176ed963940a41aa9aad0 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 357ea9f76ab5cf9fc72751ee36e00049ab57aa63..420fc3f02d87ddafcc51f146c34f6ae01e31cdb9 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 bf91251e5c7c476f4ed92d9e0ea29f7d008d2344..55c0603e75a1d2856c71aab46bbca71f22c637de 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 49d3c7765fab37ea76bd655b3bcabb4bd304e5cc..e0eedaf96a29c1d3e69f29c7494883da0cce5468 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 ea33c4a1f8a965a9030339355bb1e287f67094ae..1bdc96afb90041d3b7bd629d2d4a92f706bfb6ba 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 eec791c23896f350f59f0e8685a51468293acf96..55873abc4fe9185d601e8bb7a9e9e358e57ad3e7 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 7e44337a2ba1f3f94b702f351f0aa98ddd6687c5..e3a5b356c5037bc304ffd72925741bc09752301f 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 778d4128827ddd3512a602de441a592a9a12da3d..1f9f5c85d4f93fe2401f4168e3d4eadce14f949e 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 86ac789ac9b819a490a11d9018905714893a29c5..209a9e7e83ecb8d9a700a4e3a4b2a28a56924ef2 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 f0cd5dd1b3a9b76ed38741ff944397d9afa88484..b6336f904a50bb1f4f74b73990f07ec090b0f88a 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 4417b6b799fb67c8bdefffdf973da590f51f0ec1..c24c86d9caef978dffe060557e69c4b788f5ca55 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 7918f5231cb8e2bc13ad9667210855d3c447c293..aa5fd2db152f2cb54743e96e2b2ce9898f337d57 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 f97d175c83458094e8d0bff7a11d3e725f1010d4..b40a32f4508a7de145124e986ccc7f4059aa53e4 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 f64446db63a0b88af5eee05f5d025cc83574384d..701ff3016f0bd8967fca472e18aa90889890c32b 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 70cd5d44cb741698dbc3197c9ed1b6070098fe0d..a4390c741cf2aceafb1b34134b648d4cafd7ff8a 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 ce555fa728d0968b332c6fc8da8dbd91cf684983..198bd56153d03e40265f9a1f43403291401cb00f 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 ff754482da2b8097fc731f46eb01e2824cd1e0c3..bdd1fc294c5dc6d3db889bc95eaf7617af1aaa6b 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 6305ad81e878c714a17953195d931b2a13476972..d17a041651283bd4bd4400eca339725024623d8d 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 f85fa6c4a3a4bb156dbfba8378ff9a2522a01ccb..6335bc29cb08b102b97bdcc16cd6da5eaf414b5f 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 0244bcd9b8b0d20b6fcfe28cbda0f897ebec1918..6a870fe53f4761fe1fd38362d714bc8a6575e25f 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 35fde87e145b915d080fc7092b8028d78d877247..8bf17b533f94ffa8e983f5d2ae2ded1ee7730b65 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 6986c8cbea3afbfbf0b05afd45f726c54725e9c8..82fdedf5cfafbe8f0bbcb50ccc8c3e4a7b9c6e17 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 85851ee07e4499f203dc324c0271a281e1a866c0..b9622b4501b09abdf97d7919cc509cdb43779754 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 241fd8e6dfb8b550819e94004f9d920536fffd46..0f36e9f6dc740e3f0da095762c0dcd022df37518 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 62956f07270c089a7e9449919786e681bfceacf4..d2ee8a708903da0fae70b24015f1be9e7393475d 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 866c9c57b9ddc38507bdea1ef49b92114d447f98..f7698552cb5c341d84805ca42da9fabf53dd0e1f 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 74c01326cf567c60e5df215eb69c6c54098c51ff..bc10518e1154644cf49c1980a51d5db51c6537be 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 ddac5583e4891e9f1e454d6b7f3dcff7bbb2e462..7ef3543015f41e276b760a210e36fa6fae39c907 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 251419111acc1a7d089d42f206ee9b0d770d497c..d24f0aa52bcad831b6087089665e56ad2c35d6f6 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 106841e74357c4c77404549fa034bdd159d930c4..e08b5053136fedb5a6762ec3a47066410c38adf8 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 c7bccf49e136abc52bb0001ed9b3925f46ea67e3..c95d5b2b506e6bff1b91b27e3a9b259907f03f12 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 181c92ec8166e8d61d4cd49ca818fb1576b515e8..6bf2395ec6d84bf752eb998eef0fc7d2f10d2278 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 1826114c4851e8c68ab05eb1f9358196aaedb3f7..4dc2e75ce0a5d368d542bd27b4a14e2b6c09f1b8 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 3b51759bd3775c118a7cca10b671947aef897a0d..58ad4a44ef2dc6559a5b9ea68bd6e88990d567ad 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 9dcef9e6922343ee2b429360dda1309d563bdd1c..c126dff616790d177fc33c17c5dfd3cf45d771af 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 209f122840603c6dbc267fa833e721f6e1aec7e1..3113c5bd6d29d1020b361c968356e66a5ae57b95 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 3c0237a621f76eec0db2743a6bc6b66a38ab78ab..35f85831287a30615cb1adfaa8f2fc4b327d993f 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 911d8edfaecfea4666cab4e451eae2bd67449720..ce461570ef392765f717f39586569c0a8115c560 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 f715de18cfdcf9829f4a49670bd3bc6dc330e2bf..9f313cfca7805f5542c634711e0d05fdd4b1056c 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 93a6989ee816d395af2c96f5fac2a65975be05fe..484e7b81e88d7e22a6db5891e66ce4dfd56b6081 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 e3c906c37afbdb5f1a6357e0684e139c6b082dbe..8b736aeff0a1c31f1b836674d85c0845a1103c3b 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 daedf9ea4dd5123deda0d94a4dee87956c595004..d52d7046a5dca4186380f312e135068a196e0dcb 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 fae130f5601098c7f57e66e7245842befecca5a2..2fd9ae681adc080874bafc78ecdcafe9007f0492 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 c0ea30534abebe4fc2f317d94bf9be6c627405bc..f9fc60f8ea7e90eea146b605d8e56854034c0ee0 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 4a736262967403d4779a8484d2a4c2dc6c949bb8..0f1f76be0d70c83d1e97f1cc5b8b4f8bfcf8984a 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 6a2f320adf6db7fb101517a6f87ea2f7ab808413..18ed78e59262189d7e6633470d96136ec0171be9 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 d22daeaea847332c5e734a1792a81125d3c00822..833e3863f195c866a41fc29831cd629f3cabfd8e 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 cf3aa8d06803a78f94a6301c3fde9790fe9c6bb8..b6db2e2c82ac39f0a992bf128cb947bebb1ea3bf 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 ba2582dbc88a8d81d2ad433ce63748248b05edf5..ba9dd5e93954cabcdaee8177a1877c576271f8e3 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 7beb376796315e64afd709360cbf01af874d9220..01f88d81048030d2c73e49a9ddf77a5fa21c6cda 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 9d4819cc51064a2ab42046701a8687ef46950807..f95accf3e2f21a2f932801967d722f2ebda979fe 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 b508a919b1c975ced9c07f961309b40abdfd39ff..39959a6b90cff885fefbf7093ce9a7f9a48791dc 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 bd0628142637d6371485a98e4b781ae3b0476765..d5e52679c916ff2c49b2110dace4f8dd861ed626 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 a1e249a72691f167c2ccc1264213f7babb142692..179f7dc3c60ddddfbba13fc189e2953567243d32 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 d12fecdcc6c0a8c8068407897292e028d9e4795b..7b1a929fc91976a42cc1fe02742bebe45c485156 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 9bf5cd8aff77146b09335b88968a2bd8d30bd8e5..0f1ac45d8ba0193d6837bd110a5b270147d6f23e 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 e129ca1920bdf669bb85d9b7d63536ce81a5473e..c42cb694561082fa56026cc1896b64c8c47df6cf 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 4669d118a20787663137ef4ba8f47068f70d4249..0000000000000000000000000000000000000000 --- 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 aa9e887b36f376fcd3f9b5eb99a900d238945780..9ccc54aa7d3c8d8d021d5513ec14205195fece88 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 8253e946f9266e2e1dc0b7f7230df0d654e61ca0..6908341f8904cd93e91b8225f0541256147732f6 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 be3aabb71526d30ff3a865fb5dc3e7e7d49b7c5c..0f5b2bd37b6424fe7b656e916399f4c4ac9ba4a1 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 88eb5455cad300d6b7f6af4038aff2fac7b6cd4a..a89836b6a8a66b5c5811a08485d8056aad190da9 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 c2baf0d6ddd9501b92de517dab19983bb66b1295..0fd7cb2924e4d931643f6c4867a752ca0145003d 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 aa7b5671e2e4c5e0ac088aa4bcc0a592366fe587..e76339e1b8e0ccffbb48e0999a91acc92de967ad 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 64ca8f4201b117f4676a34bbedf77aef3a70aba3..eee5fb1451c2039529ce74387e89259b87945b4e 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 97184eb1b9abbe697831f3979e99c5f9126193c5..98517f6b0158949cebc563237c204571570f5b1a 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 d0c40054e7bdacc20129a18f5fcdac018beb17ed..2e3621797563086aa6839c401235f99d51844193 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 98821bd949f7942dde68c8aacb2726dc1bef95a4..1bf480c63478853f40982444a11bca65d564166b 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 1494e3045bbd9f952a3d21f7a98ef26ef74075a1..7d521171ed533f1c4082ca272815598de89568d2 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 81cae9483a844e53df2c7022811345dbbbb77224..d5d5e06ce339721f6511233a96421c052e796774 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 d23a676b43acfbe8036dd7f3aef38ef8689b0aac..9520c98746bbd15e86d85cdc22275b3cc31709ee 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 68f125175cafd19816eb31a12ba9503fcc0b3fd3..30e18c58ad19854f525c9d8c9435b201e8adcaef 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 ed1a87eeb31c843dd7572c769c03e6a8898e51c6..d2c69a3169dae43a80d979d75c97cca52abc06ce 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 ed30d3fc6137909402c7e2c2805f883cd187da78..1634953fdd4d769acda971c1540891874bcdf02b 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 d7b750540a4376b7ef86d991ac348c5210bdc22a..c02115c4236622673dfab43b7558c76840eefa70 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 4f37b12ecbddaaba8ae67953c951d834b8d1e3d6..e138eb3e492eaeb343dcfdcc94e5a613d6560e3c 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 8b5c0bd0b4df623959982c7ff48f23ac41447423..ad68385b4df46c888f7ca94cd4eb7bfeaa8400e4 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 ae6e7f893d08e86ba708b49f1d5319029409826a..7f0c24f42fb4860c710f197c34270e31439f04ab 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 9d57dad219b5f7ae510c338096fc409fbf2fdb75..5b11f3599cfc2ae5091a6c8264b2a81c89aa21da 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 87b82ce698ca5c4a460eb5e284a9406f6bddd09f..db5931182522bd3e62d5356321bf2838deaec4c6 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 eb704840f6c652802abe7c38201817a96e505e70..a8307dfe7bd0dc25d332af186c7ceb4c87c44e34 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 59504f775cfa9da01f4f9c6ef25ca8ec734930ab..3ce8a3043208604dfcc1dbc926a01919a105e2e1 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 40627770e340a6701d235e16bb6f02c893d7bd2a..e758a27d4425270ef3b4befcdd5d20a5845b44e4 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 691f6c1b352970007d2983161a9220ddf325117e..5c34244a697f282d445a8982a3192f53acefac33 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 719cf53f6c483dab22c1d43633898397af16e98e..1b8d85ba74676f2dbca8006a56c84bfb0a2719c5 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 b42e55ff75c6a918934a23abcc787e226d64f129..269fdda994f2db8128f6e875bbd1c3c17d7b74d3 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 fc966c3c4cc0ab51d579fe09de0a81dfa25b812a..380024ebef18c319f589f21ffdd57bda76f5691b 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 bb96c38947471388093c5d21d4fe062ef2540e3f..da6290017f7d732510cff69777c7d17f20f44d20 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 d01c68a3492d8fdcf3e756bf90f0637768db7f71..756c90c80ba2d55a5220260d7c92034b95d875bf 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 fe8f67ea9d6592b5129259304a21ee0f7a3fd542..2affcd42d61f270576a60410f0f39308a2a8c9c0 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 2657de838144170d3f0223ddb98c54bf39860bd7..bf4a8143975d22b7688cadbfeaa572a7dcd2e6ec 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 7cc1c6aec7890abd1682ad6ab3eece51f96b745a..2b9a5cf74b90b6c79e007ae79f6d2c42af35c176 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 4616245d4c7ab0b6e2d0f8a38c1a8d58d4801afc..9a9eb94bedbaea8069eb9f6cdafbe26f06c0c4f6 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 eabc403da6ee907e75e4255ec2e8757558a46a68..d6223a33241467133dae1f6450dec77afceb9e1a 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 c665d665fe18970d0522dd93cdcdd95727094370..a0863770584ecf4e5198e310a2692d33ca0a4e2f 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 9fefb9640657cc9c5cc841e951f97c89af8f722c..a114f38a025148c5071b7f8eaa7a940cdc9928ef 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 130c858dc6bb25482d0cbb37686bbab3ea39ae02..d8b433117fa6a1ff304e5fcb207ec048d36cf0ce 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 a33a25f5b191da40c6bc3d5804426391783800f3..bbc7a48e146a4df67157e58ce2a74f980abcfabb 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 a43df8103b36504b4d9c33ddbe56f7e2a90f587e..fcaf65cf743f3632aab382cfdd51713f8bc1c1ad 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 11859b97f79ea11c08dc32db218fae8674d953c1..d3f280390e9d8b19738efcfbc7fa7ff7f912b312 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 98a93aa092b8c889d3e9860d14b6563ff079cd69..fdddc3148d7ee9221863abec2cc055a6e9ed0f74 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 e4266c1e0ba78ba7b2953d9fda8a3712028c6e99..3f90d46a7db85509e49f5869154f4dfd469fce1b 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 71adfad12fb5e1b917a196384da60ec4eec07f30..71c09bb97483de4a2aad4cea5aab2da6d3dd8ae2 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 1fcd0ecbff1bd62b36137bf87fae415826611f4f..f3411da16fd0524fd73b043e1257cab97f3ec8ff 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 778bd684a7b712c98e2c473b5bb8a2e79985c668..aa449eb63e3b1edea06651618fb0b64a510a91aa 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 eac1ad7d3e4dc3d98a443905bdab5d105f052ee4..dfbd55e1d65c5e1fcf7fd6c7ff4bc0585fe6bea7 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 46807fb29c2cd8743cdeda0d9007bd0b6229f26a..914ed0b4d34d2e0d8c9222252a540708ce696bc9 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 2bb99b472a5ec20c55474efa020fd66bbfde11dc..ee4b48723e4a91ec5e2cfbe99b7f88a89a1b30c2 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 5de1d9f69ba8e405256985c5998cf24c954cb0a1..55b4c280eda8b6865b73022a809901fda19a85d5 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 91d5ab33f7c01991cff4d066e7d40a795472c47e..74af98ea34edc3eed90e9b7e3ec1204070dd4b29 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 b651095791718e849f2e62ee549cf66e0aacb173..083027555a8cf167bd5e0d502a7eb6669a53cf3e 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 60ffa15fa9cfa5ec074822a8b4ada3689e447c2e..da5df918d40201867760559396bf533e32bf7dc3 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 cfb0193f0683cddf8ce579b30243fa95e9070c05..ce6e0c7626c5a2d4e0755912d7d097f3431de262 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 1bf1f5042c7c04f78a06517d3ddbb6c4529ed03b..c611c607f988618736ee461d54e4c9f58fac2a49 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 b3536159f8c843c4aba960dc96c939e5799558e6..dba76b321f49d4cc16d7c9d793984d033e49448d 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 6d181397b41f57b3b82ea62b341fe339ef720be4..cdd22a49f419bfc04f802e7ca2625eae4f56190f 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 32ea7a89bdb70bd79a04239f8c4548be3f35a4ab..273c65c303c2d67a1bde90eeab2aba3b55d13ed9 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 5b54a89ee5c6f95f06f536d676adba4591002122..e4541ad332c8d0409414c67ba3df81bedaad3019 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 275587993bad36339c2b10ff60b956918a179887..98b7aaf6a18848d8e981e48cdebbf20a40f186e5 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 a719044a500fa98b416f6fdf782123da0cc7d601..48671e63d122d7cf0da371ec3692d8d94bdd6a21 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 22e8f01448093bec143f94e5a5d7b493b2babd76..f1c3437d96f248c59e24a41e56579b40a7cdf3ed 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 f05217c3c5f7f172d9663cff0f999ef49347be1a..28eab1853fb5e7f08217ab14d603a1040d5765fd 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 472fbc17ecac99ca921f8b68e32dee5743e67b07..5cdeb1c7c0d0c7413a174de607f5ede2a2428fe7 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 7438d059b4cdda027d0fd621ce71dab864f41955..3d0f625db8b492b8a2ec52e218a83c4f56a2ceb8 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 714cb74c58d86005673d03ba7282f25ab14aef77..da62ed9b6bfcb29677de2f3d624f5ce42204b50b 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 b0b2ac222b7991d6ca37bd855a8ecf9747fd6610..bcecf9f7ed7a9d0c23319c2c388be1c9498cde5d 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 4215ab9f73d193a270ec0b9fbb3d10bcea6f8c2d..33afdc04a33bac9395586d0e3c6bec01789397a1 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 69b51f0634d2fd86237c26234511f8ce0d15217c..5915179fcbfb94b8ed37e4b9222e932ac36f0f2c 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 f0c913689034c2740af4aad23904abc94191737a..936cb7e4449bd72ba83bcd03dd084e8fee1e6b38 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 d5cc8ed8810ce45be383f67bbe71d806387380b1..62e2ea6e64f8600d70a8911cadfaa8f6742a5eb5 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 b35bae9c71e4549ae7f224673771c97cb2ae209d..22116f0449932a1334d0e05813cbc8c33d74e77b 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 fd9235d0df2d1570be7f2fe9d6005b180cd6aade..9ffd82aad53b39bdb5c3336e609a40553c97496b 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 fbf24fd56269d07be765751e9e76f533e8a64314..323d30d8b38d5d888187296056b2eb116d9a6799 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 b383d5a71fa4f2c06deb580c38491da0e64843be..c446de7381c628fb3503200bfba9911def881fa1 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 dbb07c0dc0ff9992110a5e976335abc1d1f71ded..e71c5d3b28fc2dec6717213817e542e42b59b599 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 793e87a12475eb0ad302da954c9f7c110daf9fb8..8f3c61d797e18c477c65b06a4223766779b4ce7c 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 05e27fda83511cb117aca17aa177c84fd1677896..bc18ae77f5441657045fd8b20b3deb927c7f0fc2 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 e4a653d894bd6133ec68fcb746cc77e59125b703..c179d79cd9eadf0606019bbf97f5788d7046da08 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 71071653e829254a29d0d86fc0c53e13f4240f4b..a37f7745056fc8fdd9e266a5ed1b1a0202c9723b 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 fc33cfcab08ef0ab5ab67880dea56cd90b02cadb..1a287cfdcc438b670d8c2441fc9a62dfb3c804df 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 496885f271f3efdedbd1b2d378ad093feec222d4..64679c8ba1d84bc410c23a034424c0e6e66373be 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 d2c66bb31f1939f2ea6aa0e085e17f2351c425df..8595280f97c88c6da9a1f60b035c3661033d4a2a 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 db7257695bdf762f1296eebe18bf5894f1f3ee3f..34b278604c292d4e9e475b5f5b459d4dbe11d1e8 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 8ac557cf6644b21df8ea5b2c27b79f24b98c8ddb..86fad7b7dabe9868a6eaa6b31d4793c90270b2cf 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 41bb2cc4cc083e8ea6808d6ad46474fadf0e8ee0..f1a0bb98459839966f49fd2b8098e3917007ae2a 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 342a775c4cc079b6fd2d5e6585216248b9b9c20e..3b863e2d0ea2f504b44e37c4697ed4b59ec1c413 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 7c701718756338314b2dbeb14fd2bbc61e5856d1..c40c2519dc2a9203f50c12f0740f5d608ca5ef50 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 05762ea3c92f4f349fb2e55521bb636f3d4c3589..2dc7b101b2b327f48aa426a73a226ca1ea5f9c34 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 344a63b87778be2cec83f47e55717168a646c336..6c88ae18026594e7c351e4165f04a22d55b74131 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 f193cafe0d18a38eb6741c33703bc0089b1d12e7..b173a22a01ab496719ff42600722d07c4e6cb9af 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 89228ef427d4358820823a562e819ba1a17a6b25..785d32b2ae292931352c1a233277dd27cd123a3f 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 392cefe2388349fe63f33f94206af6c5774e1aca..e3d4cdfb0be5e85f6414547006b50234ad9b9556 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 02dcb883ef742029780b00ccc0df22d22384826b..498803f88a35293814a50cadf22cd030b70a37f7 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 bf9eab9b1583448e49b719630b082020d84556d3..b7d087f251b911dd657d5286fc8a72fa198b1c9f 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 a33cfa3541fec8b101bca559ac3dfa6f31449b2e..75d05158266da3c10304e57f2f18652e9ccbab22 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 e5be2f597c093541d71a4e9b55f99c50c9e5605e..fa3645e1d6290cafc138e44d18d632a781b59cfe 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 ece8d8afdbac6f4c402c74ce756465d18e7b11cf..e64fb3dfca9073c3ef6b51417e3c5c0617e5b2fb 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 4c15c79bdac591ac0b001931d34c2d4db145375e..cd4a9e2e971ffbadf34009dc833a863ea950e67d 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 0fa5c04964f66d15ebb478033f8e227face5e70c..c04c11839de86366d9627d4365102a3cdc0f7cdf 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 ccfa179ee5512b763dbcd58b24aacb9ce96a3ec0..9c7b43f7ff541c09654a8821ea653f64aa03cf64 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 d1612b97fa7abd92ea1eeff8a66f004e92927120..1e343f0f1267e81e1df45fa6be4d366b9232df48 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 6e6489bdc4e2853184e376bd5edb1bca9bac89b0..9b585b4e174fa464e1e7a623007f1ea057dea144 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 443bd4cd139bc06fb01c410bf3691224953efb16..d47f287ed41ddef7d3e5d7d0b903dbe5ccdf7d28 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 9aeaf0a5e9bb6b9800187b86d73ecf964e4d47be..b110139b0eedc2ed661d8f0b853796c43c8c70ba 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 5f159cd3a1f2a65c764f6ad7fa45bf6ba9e8d04d..f430304b38c84b084634752f8523a56bbcc1f15d 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 5f47cee80e7b46eaf2bd46e6294be24c6d07cc16..e098af96a0080191fd43890329ee6d02a9f2f524 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 2394bd862c7100efdc3a2726562375b33676fe00..6b4895ff8e4c97110f1e5c5a849d70cf9ef530af 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 ca8d7b331792a2fb0cab1613afea858247dacf14..8f9c18588993ec96ed73c7f6291325e74e376cca 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 4df9d7fd6b15a9c1b8c69f59d2fa0512d9d85d9b..9ce420f2327e90f6d1542824bea78dce56aa113f 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 1090d5205c85f990c72a019795f4e8baaec43d89..52e8a829a379d29526dd43e24ab4dc356dd6bb3c 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 47e2dbc57d69d504d1eb5a509ac4e7d8fb031d65..9ae77324a9c33c9e9a8608da56915d9d3a242aa9 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 922bf2f89dd5a32734daed73116b9dc8e2583fbb..f52d02ce1089f78e47f0c40673b572c23d2f4875 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 bb46e7534d4ccf440dec84584a383b83b29855ae..1d7d77d9528467331472f9c7e044f82672845af8 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 65885047932cba94b44d1d99db0a6f1a85306591..edcfa94ba6686b172f3ba498d52464a8f2119197 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 2242b763998c63c0d20864ada767372cefd01adc..3f3dcf9d90edf5226301496aa9a3e189c3c2de9f 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 c7612b84b82b4d6f0a953ce31e4adc41166e3b71..6b3b0f0f59be6bf41186a84de89e22bf72e45eba 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 3165342c2ce73415fef4ca5afc9b40d9517b3536..cdd2578b151a2ea1dec6b1baf4aaa145bdc0c1de 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 b0c45eb06e13a1ab95b44865c1bda415a2789243..4d696fd774b91a2c4f4859a985c7c6cc6b367401 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 5bb1120de0d980608980b3d8a6601863e3316869..9a573fe3d0b5a80e6bce92e7f3daf410fbffe501 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 f896e933cc7188f881e7a525f1e504709a695a43..40db0cd44a3c5ca8864c7a8b50e35f87908828ba 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 b0151f7877a3a70765963da7243594553871683f..c60e28a252388385646691bf1d6d7fa2a0482622 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 a817d626b05a4374306550daa0d3e3fab50e4d07..b691ae6ea32dd8a507868b670fdf5833380defe5 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 dbbba96be63d24780e4b02ceaf9f65815224ae09..7d44e61bed5c054603aac284b6308ea031b1b79a 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 90201ee1772198ebeeb06149122921c876cefca0..1c1f2dabdf9d35ca7a01abca9a2d371fb69e827c 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 );