diff --git a/alib2algo/src/tree/generate/RandomTreeFactory.cpp b/alib2algo/src/tree/generate/RandomTreeFactory.cpp index 4501479837ea21adac79fe4421b6b1a6d81068b4..45d109c3c447fc1348fcbe97e4449907fc1b8d2e 100644 --- a/alib2algo/src/tree/generate/RandomTreeFactory.cpp +++ b/alib2algo/src/tree/generate/RandomTreeFactory.cpp @@ -26,6 +26,8 @@ #include <registration/AlgoRegistration.hpp> +#include <global/GlobalData.h> + namespace tree { namespace generate { diff --git a/alib2data/src/tree/TreeBase.h b/alib2data/src/tree/TreeBase.h index 6431792ad85d8eff0b5fa70f2097f7b18e1fb6de..ccdedd35cb1a72d674e291b082b711b0fdb1a90a 100644 --- a/alib2data/src/tree/TreeBase.h +++ b/alib2data/src/tree/TreeBase.h @@ -10,8 +10,6 @@ #include <object/ObjectBase.h> -#include <core/xmlApi.hpp> - namespace tree { /** @@ -25,28 +23,4 @@ public: } /* namespace tree */ -namespace core { - -template < typename Type > -struct xmlApi < Type, typename std::enable_if < std::is_base_of < tree::TreeBase, Type >::value >::type > { - static Type parse ( ext::deque < sax::Token >::iterator & input ) { - return Type::parse ( input ); - } - - static bool first ( const ext::deque < sax::Token >::const_iterator & input ) { - return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName() ); - } - - static std::string xmlTagName ( ) { - return Type::getXmlTagName(); - } - - static void compose ( ext::deque < sax::Token > & output, const Type & data ) { - Type::compose ( output, data ); - } - -}; - -} /* namespace core */ - #endif /* TREE_BASE_H_ */ diff --git a/alib2data/src/tree/ranked/PostfixRankedTree.cpp b/alib2data/src/tree/ranked/PostfixRankedTree.cpp index 5b5ee74ffec97d2a9fbf5c72332ff84de3317798..b02ff6bf6a061348ba4bdb7dbbb16b6d1e70c4c3 100644 --- a/alib2data/src/tree/ranked/PostfixRankedTree.cpp +++ b/alib2data/src/tree/ranked/PostfixRankedTree.cpp @@ -10,7 +10,6 @@ #include <object/Object.h> #include <registration/ValuePrinterRegistration.hpp> -#include <registration/XmlRegistration.hpp> #include <registration/CastRegistration.hpp> #include <registration/ComponentRegistration.hpp> @@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::PostfixRankedTr static auto valuePrinter = registration::ValuePrinterRegister < tree::PostfixRankedTree < > > ( ); -static auto xmlWrite = registration::XmlWriterRegister < tree::PostfixRankedTree < > > ( ); -static auto xmlRead = registration::XmlReaderRegister < tree::PostfixRankedTree < > > ( ); - -static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PostfixRankedTree < > > ( ); -static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PostfixRankedTree < > > ( ); - static auto PostfixRankedTreeFromRankedTree = registration::CastRegister < tree::PostfixRankedTree < >, tree::RankedTree < > > ( ); static auto LinearStringFromPostfixRankedTree = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PostfixRankedTree < > > ( ); diff --git a/alib2data/src/tree/ranked/PostfixRankedTree.h b/alib2data/src/tree/ranked/PostfixRankedTree.h index c56dbad68742ea82066466f6db61d2b2c2972dae..1dc8e04963f11691bec85908c58edd6469bd1659 100644 --- a/alib2data/src/tree/ranked/PostfixRankedTree.h +++ b/alib2data/src/tree/ranked/PostfixRankedTree.h @@ -32,16 +32,12 @@ #include <alib/deque> #include <core/components.hpp> -#include <sax/FromXMLParserHelper.h> #include <object/UniqueObject.h> #include <common/ranked_symbol.hpp> -#include <alphabet/xml/RankedSymbol.h> #include "../TreeFeatures.h" #include "../TreeException.h" #include "../TreeBase.h" -#include "../common/TreeFromXMLParser.h" -#include "../common/TreeToXMLComposer.h" #include "../common/TreeAuxiliary.h" #include <tree/common/TreeNormalize.h> @@ -195,36 +191,6 @@ public: */ virtual explicit operator std::string ( ) const override; - /** - * \brief The XML tag name of class. - * - * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. - * - * \returns string representing the XML tag name of the class - */ - static const std::string & getXmlTagName ( ) { - static std::string xmlTagName = "PostfixRankedTree"; - - return xmlTagName; - } - - /** - * Parsing from a sequence of xml tokens helper. - * - * \params input the iterator to sequence of xml tokens to parse from - * - * \returns the new instance of the tree - */ - static PostfixRankedTree parse ( ext::deque < sax::Token >::iterator & input ); - - /** - * Composing to a sequence of xml tokens helper. - * - * \param out the sink for new xml tokens representing the tree - * \param tree the tree to compose - */ - static void compose ( ext::deque < sax::Token > & out, const PostfixRankedTree & tree ); - /** * @copydoc object::ObjectBase::inc() */ @@ -342,24 +308,6 @@ PostfixRankedTree < SymbolType, RankType >::operator std::string ( ) const { return std::move ( ss ).str ( ); } -template < class SymbolType, class RankType > -PostfixRankedTree < SymbolType, RankType > PostfixRankedTree < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PostfixRankedTree::getXmlTagName ( ) ); - ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::vector < common::ranked_symbol < SymbolType, RankType > > data = TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PostfixRankedTree::getXmlTagName ( ) ); - - return PostfixRankedTree < SymbolType, RankType > ( std::move ( rankedAlphabet ), std::move ( data ) ); -} - -template < class SymbolType, class RankType > -void PostfixRankedTree < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const PostfixRankedTree & tree ) { - out.emplace_back ( PostfixRankedTree::getXmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); - TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet ( ) ); - TreeToXMLComposer::composeContent ( out, tree.m_Data ); - out.emplace_back ( PostfixRankedTree::getXmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); -} - template < class SymbolType, class RankType > object::ObjectBase * PostfixRankedTree < SymbolType, RankType >::inc ( ) && { return new object::UniqueObject ( object::Object ( std::move ( * this ) ), primitive::Integer ( 0 ) ); diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp index 6103320e72042b2c3fd2646fa71614731f7f01e6..9b371889115b37a2486d531975b19ea49cbdf19e 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp @@ -10,7 +10,6 @@ #include <object/Object.h> #include <registration/ValuePrinterRegistration.hpp> -#include <registration/XmlRegistration.hpp> #include <registration/CastRegistration.hpp> #include <registration/ComponentRegistration.hpp> @@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::PrefixRankedBar static auto valuePrinter = registration::ValuePrinterRegister < tree::PrefixRankedBarNonlinearPattern < > > ( ); -static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedBarNonlinearPattern < > > ( ); -static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedBarNonlinearPattern < > > ( ); - -static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedBarNonlinearPattern < > > ( ); -static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedBarNonlinearPattern < > > ( ); - static auto PrefixRankedBarNonlinearPatternFromRankedTree = registration::CastRegister < tree::PrefixRankedBarNonlinearPattern < >, tree::RankedTree < > > ( ); static auto PrefixRankedBarNonlinearPatternFromRankedPattern = registration::CastRegister < tree::PrefixRankedBarNonlinearPattern < >, tree::RankedPattern < > > ( ); static auto PrefixRankedBarNonlinearPatternFromRankedNonlinearPattern = registration::CastRegister < tree::PrefixRankedBarNonlinearPattern < >, tree::RankedNonlinearPattern < > > ( ); diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h index 7aeb633d54247e211c64af5840b1b7938c5f1efd..fbe4ea5311f55f32df0b26920fb50cb51ef074b8 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h +++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h @@ -31,17 +31,13 @@ #include <alib/algorithm> #include <alib/deque> -#include <sax/FromXMLParserHelper.h> #include <core/components.hpp> #include <object/UniqueObject.h> #include <common/ranked_symbol.hpp> -#include <alphabet/xml/RankedSymbol.h> #include "../TreeFeatures.h" #include "../TreeException.h" #include "../TreeBase.h" -#include "../common/TreeFromXMLParser.h" -#include "../common/TreeToXMLComposer.h" #include "../common/TreeAuxiliary.h" #include <tree/common/TreeNormalize.h> @@ -363,36 +359,6 @@ public: */ virtual explicit operator std::string ( ) const override; - /** - * \brief The XML tag name of class. - * - * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. - * - * \returns string representing the XML tag name of the class - */ - static const std::string & getXmlTagName ( ) { - static std::string xmlTagName = "PrefixRankedBarNonlinearPattern"; - - return xmlTagName; - } - - /** - * Parsing from a sequence of xml tokens helper. - * - * \params input the iterator to sequence of xml tokens to parse from - * - * \returns the new instance of the pattern - */ - static PrefixRankedBarNonlinearPattern parse ( ext::deque < sax::Token >::iterator & input ); - - /** - * Composing to a sequence of xml tokens helper. - * - * \param out the sink for new xml tokens representing the pattern - * \param pattern the pattern to compose - */ - static void compose ( ext::deque < sax::Token > & out, const PrefixRankedBarNonlinearPattern & pattern ); - /** * @copydoc object::ObjectBase::inc() */ @@ -564,32 +530,6 @@ PrefixRankedBarNonlinearPattern < SymbolType, RankType >::operator std::string ( return std::move ( ss ).str ( ); } -template < class SymbolType, class RankType > -PrefixRankedBarNonlinearPattern < SymbolType, RankType > PrefixRankedBarNonlinearPattern < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedBarNonlinearPattern::getXmlTagName ( ) ); - ext::set < common::ranked_symbol < SymbolType, RankType > > bars = TreeFromXMLParser::parseBars < common::ranked_symbol < SymbolType, RankType > > ( input ); - common::ranked_symbol < SymbolType, RankType > variablesBarSymbol = TreeFromXMLParser::parseVariablesBar < common::ranked_symbol < SymbolType, RankType > > ( input ); - common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables = TreeFromXMLParser::parseNonlinearVariables < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::vector < common::ranked_symbol < SymbolType, RankType > > data = TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedBarNonlinearPattern::getXmlTagName ( ) ); - - return PrefixRankedBarNonlinearPattern < SymbolType, RankType > ( std::move ( bars ), std::move ( variablesBarSymbol ), std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( data ) ); -} - -template < class SymbolType, class RankType > -void PrefixRankedBarNonlinearPattern < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const PrefixRankedBarNonlinearPattern & pattern ) { - out.emplace_back ( PrefixRankedBarNonlinearPattern::getXmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); - TreeToXMLComposer::composeBars ( out, pattern.getBars ( ) ); - TreeToXMLComposer::composeVariablesBar ( out, pattern.getVariablesBar ( ) ); - TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard ( ) ); - TreeToXMLComposer::composeNonlinearVariables ( out, pattern.getNonlinearVariables ( ) ); - TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet ( ) ); - TreeToXMLComposer::composeContent ( out, pattern.m_Data ); - out.emplace_back ( PrefixRankedBarNonlinearPattern::getXmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); -} - template < class SymbolType, class RankType > object::ObjectBase* PrefixRankedBarNonlinearPattern < SymbolType, RankType >::inc() && { return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0)); diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp index fe72f8c47371e69d3380a639c7e7aec470e24e6b..aef03991fd28a2c95cfb5e58ffeffebb2bd15c2f 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp @@ -10,7 +10,6 @@ #include <object/Object.h> #include <registration/ValuePrinterRegistration.hpp> -#include <registration/XmlRegistration.hpp> #include <registration/CastRegistration.hpp> #include <registration/ComponentRegistration.hpp> @@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::PrefixRankedBar static auto valuePrinter = registration::ValuePrinterRegister < tree::PrefixRankedBarPattern < > > ( ); -static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedBarPattern < > > ( ); -static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedBarPattern < > > ( ); - -static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedBarPattern < > > ( ); -static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedBarPattern < > > ( ); - static auto PrefixRankedBarPatternFromRankedPattern = registration::CastRegister < tree::PrefixRankedBarPattern < >, tree::RankedPattern < > > ( ); static auto PrefixRankedBarPatternFromPrefixRankedBarTree = registration::CastRegister < tree::PrefixRankedBarPattern < >, tree::PrefixRankedBarTree < > > ( ); diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h index 27435ceb7845fe14abf05f42039e7bad981dad76..342800c38c7347306c70e5032c6d9b63c20ebf60 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h +++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h @@ -32,16 +32,12 @@ #include <alib/deque> #include <core/components.hpp> -#include <sax/FromXMLParserHelper.h> #include <object/UniqueObject.h> #include <common/ranked_symbol.hpp> -#include <alphabet/xml/RankedSymbol.h> #include "../TreeFeatures.h" #include "../TreeException.h" #include "../TreeBase.h" -#include "../common/TreeFromXMLParser.h" -#include "../common/TreeToXMLComposer.h" #include "../common/TreeAuxiliary.h" #include <tree/common/TreeNormalize.h> @@ -292,36 +288,6 @@ public: */ virtual explicit operator std::string ( ) const override; - /** - * \brief The XML tag name of class. - * - * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. - * - * \returns string representing the XML tag name of the class - */ - static const std::string & getXmlTagName() { - static std::string xmlTagName = "PrefixRankedBarPattern"; - - return xmlTagName; - } - - /** - * Parsing from a sequence of xml tokens helper. - * - * \params input the iterator to sequence of xml tokens to parse from - * - * \returns the new instance of the pattern - */ - static PrefixRankedBarPattern parse ( ext::deque < sax::Token >::iterator & input ); - - /** - * Composing to a sequence of xml tokens helper. - * - * \param out the sink for new xml tokens representing the pattern - * \param pattern the pattern to compose - */ - static void compose ( ext::deque < sax::Token > & out, const PrefixRankedBarPattern & pattern ); - /** * @copydoc object::ObjectBase::inc() */ @@ -462,30 +428,6 @@ PrefixRankedBarPattern < SymbolType, RankType >::operator std::string ( ) const return std::move ( ss ).str ( ); } -template < class SymbolType, class RankType > -PrefixRankedBarPattern < SymbolType, RankType > PrefixRankedBarPattern < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedBarPattern::getXmlTagName() ); - ext::set < common::ranked_symbol < SymbolType, RankType > > bars = TreeFromXMLParser::parseBars < common::ranked_symbol < SymbolType, RankType > > ( input ); - common::ranked_symbol < SymbolType, RankType > variablesBarSymbol = TreeFromXMLParser::parseVariablesBar < common::ranked_symbol < SymbolType, RankType > > ( input ); - common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::vector < common::ranked_symbol < SymbolType, RankType > > data = TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedBarPattern::getXmlTagName() ); - - return PrefixRankedBarPattern < SymbolType, RankType > ( std::move ( bars ), std::move ( variablesBarSymbol ), std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( data ) ); -} - -template < class SymbolType, class RankType > -void PrefixRankedBarPattern < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const PrefixRankedBarPattern & pattern ) { - out.emplace_back ( PrefixRankedBarPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); - TreeToXMLComposer::composeBars ( out, pattern.getBars() ); - TreeToXMLComposer::composeVariablesBar ( out, pattern.getVariablesBar() ); - TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard() ); - TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet() ); - TreeToXMLComposer::composeContent ( out, pattern.m_Data ); - out.emplace_back ( PrefixRankedBarPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); -} - template < class SymbolType, class RankType > object::ObjectBase* PrefixRankedBarPattern < SymbolType, RankType >::inc() && { return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0)); diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp index 9d416167ab74e4516385a7525266300db9a1ecc2..ce1d344b2452ffcdb07b5478c8a87170756cdd1f 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp @@ -10,7 +10,6 @@ #include <object/Object.h> #include <registration/ValuePrinterRegistration.hpp> -#include <registration/XmlRegistration.hpp> #include <registration/CastRegistration.hpp> #include <registration/ComponentRegistration.hpp> @@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::PrefixRankedBar static auto valuePrinter = registration::ValuePrinterRegister < tree::PrefixRankedBarTree < > > ( ); -static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedBarTree < > > ( ); -static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedBarTree < > > ( ); - -static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedBarTree < > > ( ); -static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedBarTree < > > ( ); - static auto PrefixRankedBarTreeFromRankedTree = registration::CastRegister < tree::PrefixRankedBarTree < >, tree::RankedTree < > > ( ); static auto LinearStringFromPrefixRankedBarTree = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PrefixRankedBarTree < > > ( ); diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/ranked/PrefixRankedBarTree.h index 8d62a3ba300fb822963139f074bf225d4bc5d487..8273f36475784b9e9eb11c792633a7c2a5f973fe 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h +++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h @@ -32,16 +32,12 @@ #include <alib/deque> #include <core/components.hpp> -#include <sax/FromXMLParserHelper.h> #include <object/UniqueObject.h> #include <common/ranked_symbol.hpp> -#include <alphabet/xml/RankedSymbol.h> #include "../TreeFeatures.h" #include "../TreeException.h" #include "../TreeBase.h" -#include "../common/TreeFromXMLParser.h" -#include "../common/TreeToXMLComposer.h" #include "../common/TreeAuxiliary.h" #include <tree/common/TreeNormalize.h> @@ -238,36 +234,6 @@ public: */ virtual explicit operator std::string ( ) const override; - /** - * \brief The XML tag name of class. - * - * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. - * - * \returns string representing the XML tag name of the class - */ - static const std::string & getXmlTagName() { - static std::string xmlTagName = "PrefixRankedBarTree"; - - return xmlTagName; - } - - /** - * Parsing from a sequence of xml tokens helper. - * - * \params input the iterator to sequence of xml tokens to parse from - * - * \returns the new instance of the tree - */ - static PrefixRankedBarTree parse ( ext::deque < sax::Token >::iterator & input ); - - /** - * Composing to a sequence of xml tokens helper. - * - * \param out the sink for new xml tokens representing the tree - * \param tree the tree to compose - */ - static void compose ( ext::deque < sax::Token > & out, const PrefixRankedBarTree & tree ); - /** * @copydoc object::ObjectBase::inc() */ @@ -398,26 +364,6 @@ PrefixRankedBarTree < SymbolType, RankType >::operator std::string ( ) const { return std::move ( ss ).str ( ); } -template < class SymbolType, class RankType > -PrefixRankedBarTree < SymbolType, RankType > PrefixRankedBarTree < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedBarTree::getXmlTagName() ); - ext::set < common::ranked_symbol < SymbolType, RankType > > bars = TreeFromXMLParser::parseBars < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::vector < common::ranked_symbol < SymbolType, RankType > > data = TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedBarTree::getXmlTagName() ); - - return PrefixRankedBarTree < SymbolType, RankType > ( std::move ( bars ), std::move ( rankedAlphabet ), std::move ( data ) ); -} - -template < class SymbolType, class RankType > -void PrefixRankedBarTree < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const PrefixRankedBarTree & tree ) { - out.emplace_back ( PrefixRankedBarTree::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); - TreeToXMLComposer::composeBars ( out, tree.getBars() ); - TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet() ); - TreeToXMLComposer::composeContent ( out, tree.m_Data ); - out.emplace_back ( PrefixRankedBarTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); -} - template < class SymbolType, class RankType > object::ObjectBase* PrefixRankedBarTree < SymbolType, RankType >::inc() && { return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0)); diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp index 4d0edd86a63562acc664d07a6316a056011a8a15..8041e5203a92eee7a6f0416b6cdbfb115e5bb40d 100644 --- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp @@ -10,7 +10,6 @@ #include <object/Object.h> #include <registration/ValuePrinterRegistration.hpp> -#include <registration/XmlRegistration.hpp> #include <registration/CastRegistration.hpp> #include <registration/ComponentRegistration.hpp> @@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::PrefixRankedNon static auto valuePrinter = registration::ValuePrinterRegister < tree::PrefixRankedNonlinearPattern < > > ( ); -static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedNonlinearPattern < > > ( ); -static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedNonlinearPattern < > > ( ); - -static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedNonlinearPattern < > > ( ); -static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedNonlinearPattern < > > ( ); - static auto PrefixRankedNonlinearPatternFromRankedTree = registration::CastRegister < tree::PrefixRankedNonlinearPattern < >, tree::RankedTree < > > ( ); static auto PrefixRankedNonlinearPatternFromRankedPattern = registration::CastRegister < tree::PrefixRankedNonlinearPattern < >, tree::RankedPattern < > > ( ); static auto PrefixRankedNonlinearPatternFromRankedNonlinearPattern = registration::CastRegister < tree::PrefixRankedNonlinearPattern < >, tree::RankedNonlinearPattern < > > ( ); diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h index abe6c55f9ed0c8eee0fda187cd7a73abfd4f495a..c9fc012a9a8d898f970d2d7db6354eab7404705e 100644 --- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h +++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h @@ -32,16 +32,12 @@ #include <alib/deque> #include <core/components.hpp> -#include <sax/FromXMLParserHelper.h> #include <object/UniqueObject.h> #include <common/ranked_symbol.hpp> -#include <alphabet/xml/RankedSymbol.h> #include "../TreeFeatures.h" #include "../TreeException.h" #include "../TreeBase.h" -#include "../common/TreeFromXMLParser.h" -#include "../common/TreeToXMLComposer.h" #include "../common/TreeAuxiliary.h" #include <tree/common/TreeNormalize.h> @@ -277,36 +273,6 @@ public: */ virtual explicit operator std::string ( ) const override; - /** - * \brief The XML tag name of class. - * - * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. - * - * \returns string representing the XML tag name of the class - */ - static const std::string & getXmlTagName ( ) { - static std::string xmlTagName = "PrefixRankedNonlinearPattern"; - - return xmlTagName; - } - - /** - * Parsing from a sequence of xml tokens helper. - * - * \params input the iterator to sequence of xml tokens to parse from - * - * \returns the new instance of the pattern - */ - static PrefixRankedNonlinearPattern parse ( ext::deque < sax::Token >::iterator & input ); - - /** - * Composing to a sequence of xml tokens helper. - * - * \param out the sink for new xml tokens representing the pattern - * \param pattern the pattern to compose - */ - static void compose ( ext::deque < sax::Token > & out, const PrefixRankedNonlinearPattern & pattern ); - /** * @copydoc object::ObjectBase::inc() */ @@ -448,28 +414,6 @@ PrefixRankedNonlinearPattern < SymbolType, RankType >::operator std::string ( ) return std::move ( ss ).str ( ); } -template < class SymbolType, class RankType > -PrefixRankedNonlinearPattern < SymbolType, RankType > PrefixRankedNonlinearPattern < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedNonlinearPattern::getXmlTagName ( ) ); - common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables = TreeFromXMLParser::parseNonlinearVariables < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::vector < common::ranked_symbol < SymbolType, RankType > > data = TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedNonlinearPattern::getXmlTagName ( ) ); - - return PrefixRankedNonlinearPattern < SymbolType, RankType > ( std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( data ) ); -} - -template < class SymbolType, class RankType > -void PrefixRankedNonlinearPattern < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const PrefixRankedNonlinearPattern & pattern ) { - out.emplace_back ( PrefixRankedNonlinearPattern::getXmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); - TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard ( ) ); - TreeToXMLComposer::composeNonlinearVariables ( out, pattern.getNonlinearVariables ( ) ); - TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet ( ) ); - TreeToXMLComposer::composeContent ( out, pattern.m_Data ); - out.emplace_back ( PrefixRankedNonlinearPattern::getXmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); -} - template < class SymbolType, class RankType > object::ObjectBase* PrefixRankedNonlinearPattern < SymbolType, RankType >::inc() && { return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0)); diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp index fc190f77e1a958720d7b85fcaa22fc4e1faefa48..4628b46a558b22fb85f773f6442017a63b4984f2 100644 --- a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp @@ -10,7 +10,6 @@ #include <object/Object.h> #include <registration/ValuePrinterRegistration.hpp> -#include <registration/XmlRegistration.hpp> #include <registration/CastRegistration.hpp> #include <registration/ComponentRegistration.hpp> @@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::PrefixRankedPat static auto valuePrinter = registration::ValuePrinterRegister < tree::PrefixRankedPattern < > > ( ); -static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedPattern < > > ( ); -static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedPattern < > > ( ); - -static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedPattern < > > ( ); -static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedPattern < > > ( ); - static auto PrefixRankedPatternFromRankedPattern = registration::CastRegister < tree::PrefixRankedPattern < >, tree::RankedPattern < > > ( ); static auto PrefixRankedPatternFromPrefixRankedTree = registration::CastRegister < tree::PrefixRankedPattern < >, tree::PrefixRankedTree < > > ( ); diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.h b/alib2data/src/tree/ranked/PrefixRankedPattern.h index cbcae7842acae5c321f46415616c1df875ad5e45..4336b3c93a457598bf2b6094f9a0f788c7a9f873 100644 --- a/alib2data/src/tree/ranked/PrefixRankedPattern.h +++ b/alib2data/src/tree/ranked/PrefixRankedPattern.h @@ -32,16 +32,12 @@ #include <alib/deque> #include <core/components.hpp> -#include <sax/FromXMLParserHelper.h> #include <object/UniqueObject.h> #include <common/ranked_symbol.hpp> -#include <alphabet/xml/RankedSymbol.h> #include "../TreeFeatures.h" #include "../TreeException.h" #include "../TreeBase.h" -#include "../common/TreeFromXMLParser.h" -#include "../common/TreeToXMLComposer.h" #include "../common/TreeAuxiliary.h" #include <tree/common/TreeNormalize.h> @@ -226,36 +222,6 @@ public: */ virtual explicit operator std::string ( ) const override; - /** - * \brief The XML tag name of class. - * - * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. - * - * \returns string representing the XML tag name of the class - */ - static const std::string & getXmlTagName() { - static std::string xmlTagName = "PrefixRankedPattern"; - - return xmlTagName; - } - - /** - * Parsing from a sequence of xml tokens helper. - * - * \params input the iterator to sequence of xml tokens to parse from - * - * \returns the new instance of the pattern - */ - static PrefixRankedPattern parse ( ext::deque < sax::Token >::iterator & input ); - - /** - * Composing to a sequence of xml tokens helper. - * - * \param out the sink for new xml tokens representing the pattern - * \param pattern the pattern to compose - */ - static void compose ( ext::deque < sax::Token > & out, const PrefixRankedPattern & pattern ); - /** * @copydoc object::ObjectBase::inc() */ @@ -378,26 +344,6 @@ PrefixRankedPattern < SymbolType, RankType >::operator std::string ( ) const { return std::move ( ss ).str ( ); } -template < class SymbolType, class RankType > -PrefixRankedPattern < SymbolType, RankType > PrefixRankedPattern < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedPattern::getXmlTagName() ); - common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::vector < common::ranked_symbol < SymbolType, RankType > > data = TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedPattern::getXmlTagName() ); - - return PrefixRankedPattern < SymbolType, RankType > ( std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( data ) ); -} - -template < class SymbolType, class RankType > -void PrefixRankedPattern < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const PrefixRankedPattern & pattern ) { - out.emplace_back ( PrefixRankedPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); - TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard() ); - TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet() ); - TreeToXMLComposer::composeContent ( out, pattern.m_Data ); - out.emplace_back ( PrefixRankedPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); -} - template < class SymbolType, class RankType > object::ObjectBase* PrefixRankedPattern < SymbolType, RankType >::inc() && { return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0)); diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.cpp b/alib2data/src/tree/ranked/PrefixRankedTree.cpp index c4e805b4be6f90a922afb23a943af8346fedccb1..1ec0466b74069143bc767b3b7be9e421ccfe6bf8 100644 --- a/alib2data/src/tree/ranked/PrefixRankedTree.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedTree.cpp @@ -10,7 +10,6 @@ #include <object/Object.h> #include <registration/ValuePrinterRegistration.hpp> -#include <registration/XmlRegistration.hpp> #include <registration/CastRegistration.hpp> #include <registration/ComponentRegistration.hpp> @@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::PrefixRankedTre static auto valuePrinter = registration::ValuePrinterRegister < tree::PrefixRankedTree < > > ( ); -static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedTree < > > ( ); -static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedTree < > > ( ); - -static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedTree < > > ( ); -static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedTree < > > ( ); - static auto PrefixRankedTreeFromRankedTree = registration::CastRegister < tree::PrefixRankedTree < >, tree::RankedTree < > > ( ); static auto PrefixRankedTreeFromPostfixRankedTree = registration::CastRegister < tree::PrefixRankedTree < >, tree::PostfixRankedTree < > > ( ); diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.h b/alib2data/src/tree/ranked/PrefixRankedTree.h index 86ef80109f3677501b8ad03af78729e80f2b899c..a53b6604697d7c61cffc5b70afab374753d23a84 100644 --- a/alib2data/src/tree/ranked/PrefixRankedTree.h +++ b/alib2data/src/tree/ranked/PrefixRankedTree.h @@ -32,16 +32,12 @@ #include <alib/deque> #include <core/components.hpp> -#include <sax/FromXMLParserHelper.h> #include <object/UniqueObject.h> #include <common/ranked_symbol.hpp> -#include <alphabet/xml/RankedSymbol.h> #include "../TreeFeatures.h" #include "../TreeException.h" #include "../TreeBase.h" -#include "../common/TreeFromXMLParser.h" -#include "../common/TreeToXMLComposer.h" #include <tree/common/TreeNormalize.h> #include <core/normalize.hpp> @@ -201,36 +197,6 @@ public: */ virtual explicit operator std::string ( ) const override; - /** - * \brief The XML tag name of class. - * - * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. - * - * \returns string representing the XML tag name of the class - */ - static const std::string & getXmlTagName() { - static std::string xmlTagName = "PrefixRankedTree"; - - return xmlTagName; - } - - /** - * Parsing from a sequence of xml tokens helper. - * - * \params input the iterator to sequence of xml tokens to parse from - * - * \returns the new instance of the tree - */ - static PrefixRankedTree parse ( ext::deque < sax::Token >::iterator & input ); - - /** - * Composing to a sequence of xml tokens helper. - * - * \param out the sink for new xml tokens representing the tree - * \param tree the tree to compose - */ - static void compose ( ext::deque < sax::Token > & out, const PrefixRankedTree & tree ); - /** * @copydoc object::ObjectBase::inc() */ @@ -352,24 +318,6 @@ PrefixRankedTree < SymbolType, RankType >::operator std::string ( ) const { return std::move ( ss ).str ( ); } -template < class SymbolType, class RankType > -PrefixRankedTree < SymbolType, RankType > PrefixRankedTree < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixRankedTree::getXmlTagName() ); - ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::vector < common::ranked_symbol < SymbolType, RankType > > data = TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixRankedTree::getXmlTagName() ); - - return PrefixRankedTree < SymbolType, RankType > ( std::move ( rankedAlphabet ), std::move ( data ) ); -} - -template < class SymbolType, class RankType > -void PrefixRankedTree < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const PrefixRankedTree & tree ) { - out.emplace_back ( PrefixRankedTree::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); - TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet() ); - TreeToXMLComposer::composeContent ( out, tree.m_Data ); - out.emplace_back ( PrefixRankedTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); -} - template < class SymbolType, class RankType > object::ObjectBase* PrefixRankedTree < SymbolType, RankType >::inc() && { return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0)); diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp b/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp index 60dced13adf7e4cc7fb960a6d1d7f9f7492f7cb8..3c3be98adda7706cdcfc7c356a6c685d59148a5c 100644 --- a/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp +++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp @@ -10,7 +10,6 @@ #include <object/Object.h> #include <registration/ValuePrinterRegistration.hpp> -#include <registration/XmlRegistration.hpp> #include <registration/CastRegistration.hpp> #include <registration/ComponentRegistration.hpp> @@ -20,10 +19,4 @@ static auto components = registration::ComponentRegister < tree::RankedNonlinear static auto valuePrinter = registration::ValuePrinterRegister < tree::RankedNonlinearPattern < > > ( ); -static auto xmlWrite = registration::XmlWriterRegister < tree::RankedNonlinearPattern < > > ( ); -static auto xmlRead = registration::XmlReaderRegister < tree::RankedNonlinearPattern < > > ( ); - -static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::RankedNonlinearPattern < > > ( ); -static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::RankedNonlinearPattern < > > ( ); - } /* namespace */ diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/ranked/RankedNonlinearPattern.h index d096f7aa2a34cb5f163849caf68b15a81d2180f2..85e7b80cbf424c8079890551705301b6d3e3291a 100644 --- a/alib2data/src/tree/ranked/RankedNonlinearPattern.h +++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.h @@ -32,16 +32,12 @@ #include <sstream> #include <core/components.hpp> -#include <sax/FromXMLParserHelper.h> #include <object/UniqueObject.h> #include <common/ranked_symbol.hpp> -#include <alphabet/xml/RankedSymbol.h> #include "../TreeFeatures.h" #include "../TreeException.h" #include "../TreeBase.h" -#include "../common/TreeFromXMLParser.h" -#include "../common/TreeToXMLComposer.h" #include "../common/TreeAuxiliary.h" #include <tree/common/TreeNormalize.h> @@ -251,36 +247,6 @@ public: */ virtual explicit operator std::string ( ) const override; - /** - * \brief The XML tag name of class. - * - * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. - * - * \returns string representing the XML tag name of the class - */ - static const std::string & getXmlTagName() { - static std::string xmlTagName = "RankedNonlinearPattern"; - - return xmlTagName; - } - - /** - * Parsing from a sequence of xml tokens helper. - * - * \params input the iterator to sequence of xml tokens to parse from - * - * \returns the new instance of the pattern - */ - static RankedNonlinearPattern parse ( ext::deque < sax::Token >::iterator & input ); - - /** - * Composing to a sequence of xml tokens helper. - * - * \param out the sink for new xml tokens representing the pattern - * \param pattern the pattern to compose - */ - static void compose ( ext::deque < sax::Token > & out, const RankedNonlinearPattern & pattern ); - /** * @copydoc object::ObjectBase::inc() */ @@ -392,29 +358,6 @@ RankedNonlinearPattern < SymbolType, RankType >::operator std::string ( ) const return ss.str ( ); } -template < class SymbolType, class RankType > -RankedNonlinearPattern < SymbolType, RankType > RankedNonlinearPattern < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, RankedNonlinearPattern::getXmlTagName() ); - common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables = TreeFromXMLParser::parseNonlinearVariables < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::tree < common::ranked_symbol < SymbolType, RankType > > root = TreeFromXMLParser::parseTreeContent < common::ranked_symbol < SymbolType, RankType > > ( input ); - RankedNonlinearPattern < SymbolType, RankType > tree ( std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( root ) ); - - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RankedNonlinearPattern::getXmlTagName() ); - return tree; -} - -template < class SymbolType, class RankType > -void RankedNonlinearPattern < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const RankedNonlinearPattern & pattern ) { - out.emplace_back ( RankedNonlinearPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); - TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard() ); - TreeToXMLComposer::composeNonlinearVariables ( out, pattern.getNonlinearVariables() ); - TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet() ); - TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) ); - out.emplace_back ( RankedNonlinearPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); -} - template < class SymbolType, class RankType > object::ObjectBase* RankedNonlinearPattern < SymbolType, RankType >::inc() && { return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0)); diff --git a/alib2data/src/tree/ranked/RankedPattern.cpp b/alib2data/src/tree/ranked/RankedPattern.cpp index 7dd5aa02845862cda5d8e822ec94b478ec71f0b8..e51075d3fd07c89364b6e0f727a664a9492917b4 100644 --- a/alib2data/src/tree/ranked/RankedPattern.cpp +++ b/alib2data/src/tree/ranked/RankedPattern.cpp @@ -10,7 +10,6 @@ #include <object/Object.h> #include <registration/ValuePrinterRegistration.hpp> -#include <registration/XmlRegistration.hpp> #include <registration/CastRegistration.hpp> #include <registration/ComponentRegistration.hpp> @@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::RankedPattern < static auto valuePrinter = registration::ValuePrinterRegister < tree::RankedPattern < > > ( ); -static auto xmlWrite = registration::XmlWriterRegister < tree::RankedPattern < > > ( ); -static auto xmlRead = registration::XmlReaderRegister < tree::RankedPattern < > > ( ); - -static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::RankedPattern < > > ( ); -static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::RankedPattern < > > ( ); - static auto RankedPatternFromUnrankedPattern = registration::CastRegister < tree::RankedPattern < >, tree::UnrankedPattern < > > ( ); } /* namespace */ diff --git a/alib2data/src/tree/ranked/RankedPattern.h b/alib2data/src/tree/ranked/RankedPattern.h index 7c82483342e12d6f89c93e9bf052274423225361..20cf26a31466f1ab072f37f4770e4a887c75fb4d 100644 --- a/alib2data/src/tree/ranked/RankedPattern.h +++ b/alib2data/src/tree/ranked/RankedPattern.h @@ -32,16 +32,12 @@ #include <sstream> #include <core/components.hpp> -#include <sax/FromXMLParserHelper.h> #include <object/UniqueObject.h> #include <common/ranked_symbol.hpp> -#include <alphabet/xml/RankedSymbol.h> #include "../TreeFeatures.h" #include "../TreeException.h" #include "../TreeBase.h" -#include "../common/TreeFromXMLParser.h" -#include "../common/TreeToXMLComposer.h" #include "../common/TreeAuxiliary.h" #include <tree/common/TreeNormalize.h> @@ -221,36 +217,6 @@ public: */ virtual explicit operator std::string ( ) const override; - /** - * \brief The XML tag name of class. - * - * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. - * - * \returns string representing the XML tag name of the class - */ - static const std::string & getXmlTagName() { - static std::string xmlTagName = "RankedPattern"; - - return xmlTagName; - } - - /** - * Parsing from a sequence of xml tokens helper. - * - * \params input the iterator to sequence of xml tokens to parse from - * - * \returns the new instance of the pattern - */ - static RankedPattern parse ( ext::deque < sax::Token >::iterator & input ); - - /** - * Composing to a sequence of xml tokens helper. - * - * \param out the sink for new xml tokens representing the pattern - * \param pattern the pattern to compose - */ - static void compose ( ext::deque < sax::Token > & out, const RankedPattern & pattern ); - /** * @copydoc object::ObjectBase::inc() */ @@ -358,27 +324,6 @@ RankedPattern < SymbolType, RankType >::operator std::string ( ) const { return ss.str ( ); } -template < class SymbolType, class RankType > -RankedPattern < SymbolType, RankType > RankedPattern < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, RankedPattern::getXmlTagName() ); - common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::tree < common::ranked_symbol < SymbolType, RankType > > root = TreeFromXMLParser::parseTreeContent < common::ranked_symbol < SymbolType, RankType > > ( input ); - RankedPattern < SymbolType, RankType > tree ( std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( root ) ); - - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RankedPattern::getXmlTagName() ); - return tree; -} - -template < class SymbolType, class RankType > -void RankedPattern < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const RankedPattern & pattern ) { - out.emplace_back ( RankedPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); - TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard() ); - TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet() ); - TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) ); - out.emplace_back ( RankedPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); -} - template < class SymbolType, class RankType > object::ObjectBase* RankedPattern < SymbolType, RankType >::inc() && { return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0)); diff --git a/alib2data/src/tree/ranked/RankedTree.cpp b/alib2data/src/tree/ranked/RankedTree.cpp index 9b015b2920fd9cb7056fd89955a2739d3ddaadad..0d48b48f161a222d73895368bbee3474a71fbf00 100644 --- a/alib2data/src/tree/ranked/RankedTree.cpp +++ b/alib2data/src/tree/ranked/RankedTree.cpp @@ -10,7 +10,6 @@ #include <object/Object.h> #include <registration/ValuePrinterRegistration.hpp> -#include <registration/XmlRegistration.hpp> #include <registration/CastRegistration.hpp> #include <registration/ComponentRegistration.hpp> @@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::RankedTree < > static auto valuePrinter = registration::ValuePrinterRegister < tree::RankedTree < > > ( ); -static auto xmlWrite = registration::XmlWriterRegister < tree::RankedTree < > > ( ); -static auto xmlRead = registration::XmlReaderRegister < tree::RankedTree < > > ( ); - -static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::RankedTree < > > ( ); -static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::RankedTree < > > ( ); - static auto RankedTreeFromUnrankedTree = registration::CastRegister < tree::RankedTree < >, tree::UnrankedTree < > > ( ); static auto RankedTreeFromPostfixRankedTree = registration::CastRegister < tree::RankedTree < >, tree::PostfixRankedTree < > > ( ); diff --git a/alib2data/src/tree/ranked/RankedTree.h b/alib2data/src/tree/ranked/RankedTree.h index 960f7b331ca89672303527a54a7d22c8582ce683..f9a09bc1c39a7b43965735c16d2fb4d9c9c428dc 100644 --- a/alib2data/src/tree/ranked/RankedTree.h +++ b/alib2data/src/tree/ranked/RankedTree.h @@ -32,16 +32,12 @@ #include <sstream> #include <core/components.hpp> -#include <sax/FromXMLParserHelper.h> #include <object/UniqueObject.h> #include <common/ranked_symbol.hpp> -#include <alphabet/xml/RankedSymbol.h> #include "../TreeFeatures.h" #include "../TreeBase.h" #include "../TreeException.h" -#include "../common/TreeFromXMLParser.h" -#include "../common/TreeToXMLComposer.h" #include "../common/TreeAuxiliary.h" #include <tree/common/TreeNormalize.h> @@ -207,36 +203,6 @@ public: */ virtual explicit operator std::string ( ) const override; - /** - * \brief The XML tag name of class. - * - * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. - * - * \returns string representing the XML tag name of the class - */ - static const std::string & getXmlTagName() { - static std::string xmlTagName = "RankedTree"; - - return xmlTagName; - } - - /** - * Parsing from a sequence of xml tokens helper. - * - * \params input the iterator to sequence of xml tokens to parse from - * - * \returns the new instance of the tree - */ - static RankedTree parse ( ext::deque < sax::Token >::iterator & input ); - - /** - * Composing to a sequence of xml tokens helper. - * - * \param out the sink for new xml tokens representing the tree - * \param tree the tree to compose - */ - static void compose ( ext::deque < sax::Token > & out, const RankedTree & tree ); - /** * @copydoc object::ObjectBase::inc() */ @@ -349,25 +315,6 @@ RankedTree < SymbolType, RankType >::operator std::string ( ) const { return ss.str ( ); } -template < class SymbolType, class RankType > -RankedTree < SymbolType, RankType > RankedTree < SymbolType, RankType >::parse ( ext::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, RankedTree::getXmlTagName() ); - ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); - ext::tree < common::ranked_symbol < SymbolType, RankType > > root = TreeFromXMLParser::parseTreeContent < common::ranked_symbol < SymbolType, RankType > > ( input ); - RankedTree < SymbolType, RankType > tree ( std::move ( rankedAlphabet ), std::move ( root ) ); - - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RankedTree::getXmlTagName() ); - return tree; -} - -template < class SymbolType, class RankType > -void RankedTree < SymbolType, RankType >::compose ( ext::deque < sax::Token > & out, const RankedTree & tree ) { - out.emplace_back ( RankedTree::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); - TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet ( ) ); - TreeToXMLComposer::composeContent ( out, tree.getContent ( ) ); - out.emplace_back ( RankedTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); -} - template < class SymbolType, class RankType > object::ObjectBase* RankedTree < SymbolType, RankType >::inc() && { return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0)); diff --git a/alib2data/src/tree/unranked/PrefixBarTree.cpp b/alib2data/src/tree/unranked/PrefixBarTree.cpp index 19b1c14024f93ce5b38e2112f4721e3b8fa70786..69a0f8f66852804f79d6360f5cb2f0872c033e3e 100644 --- a/alib2data/src/tree/unranked/PrefixBarTree.cpp +++ b/alib2data/src/tree/unranked/PrefixBarTree.cpp @@ -10,7 +10,6 @@ #include <object/Object.h> #include <registration/ValuePrinterRegistration.hpp> -#include <registration/XmlRegistration.hpp> #include <registration/CastRegistration.hpp> #include <registration/ComponentRegistration.hpp> @@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::PrefixBarTree < static auto valuePrinter = registration::ValuePrinterRegister < tree::PrefixBarTree < > > ( ); -static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixBarTree < > > ( ); -static auto xmlRead = registration::XmlReaderRegister < tree::PrefixBarTree < > > ( ); - -static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixBarTree < > > ( ); -static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixBarTree < > > ( ); - static auto PrefixBarTreeFromUnrankedTree = registration::CastRegister < tree::PrefixBarTree < >, tree::UnrankedTree < > > ( ); static auto LinearStringFromPrefixBarTree = registration::CastRegister < string::LinearString < >, tree::PrefixBarTree < > > ( ); diff --git a/alib2data/src/tree/unranked/PrefixBarTree.h b/alib2data/src/tree/unranked/PrefixBarTree.h index 036981d71f7adf139457040dc4b66f5b9e35e2e8..f1c803cb028b2c60c8f4b721f90f67ceff8860ad 100644 --- a/alib2data/src/tree/unranked/PrefixBarTree.h +++ b/alib2data/src/tree/unranked/PrefixBarTree.h @@ -31,15 +31,12 @@ #include <alib/vector> #include <alib/tree> -#include <sax/FromXMLParserHelper.h> #include <core/components.hpp> #include <object/UniqueObject.h> #include "../TreeFeatures.h" #include "../TreeBase.h" #include "../TreeException.h" -#include "../common/TreeFromXMLParser.h" -#include "../common/TreeToXMLComposer.h" #include "../common/TreeAuxiliary.h" #include <tree/common/TreeNormalize.h> @@ -226,36 +223,6 @@ public: */ virtual explicit operator std::string ( ) const override; - /** - * \brief The XML tag name of class. - * - * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. - * - * \returns string representing the XML tag name of the class - */ - static const std::string & getXmlTagName() { - static std::string xmlTagName = "PrefixBarTree"; - - return xmlTagName; - } - - /** - * Parsing from a sequence of xml tokens helper. - * - * \params input the iterator to sequence of xml tokens to parse from - * - * \returns the new instance of the tree - */ - static PrefixBarTree parse ( ext::deque < sax::Token >::iterator & input ); - - /** - * Composing to a sequence of xml tokens helper. - * - * \param out the sink for new xml tokens representing the tree - * \param tree the tree to compose - */ - static void compose ( ext::deque < sax::Token > & out, const PrefixBarTree & tree ); - /** * @copydoc object::ObjectBase::inc() */ @@ -379,26 +346,6 @@ PrefixBarTree < SymbolType >::operator std::string ( ) const { return std::move ( ss ).str ( ); } -template < class SymbolType > -PrefixBarTree < SymbolType > PrefixBarTree < SymbolType >::parse ( ext::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, PrefixBarTree::getXmlTagName() ); - SymbolType bar = TreeFromXMLParser::parseBar < SymbolType > ( input ); - ext::set < SymbolType > unrankedAlphabet = TreeFromXMLParser::parseAlphabet < SymbolType > ( input ); - ext::vector < SymbolType > data = TreeFromXMLParser::parseLinearContent < SymbolType > ( input ); - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, PrefixBarTree::getXmlTagName() ); - - return PrefixBarTree < SymbolType > ( std::move ( bar ), std::move ( unrankedAlphabet ), std::move ( data ) ); -} - -template < class SymbolType > -void PrefixBarTree < SymbolType >::compose ( ext::deque < sax::Token > & out, const PrefixBarTree & tree ) { - out.emplace_back ( PrefixBarTree::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); - TreeToXMLComposer::composeBar ( out, tree.getBar ( ) ); - TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet ( ) ); - TreeToXMLComposer::composeContent ( out, tree.m_Data ); - out.emplace_back ( PrefixBarTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); -} - template < class SymbolType > object::ObjectBase* PrefixBarTree < SymbolType >::inc() && { return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0)); diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp index 0c70d87e93a52ac96823583e4cba073d46cb22b6..d33e21caff0882883e9356c8d2599695917c4626 100644 --- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp +++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp @@ -10,7 +10,6 @@ #include <object/Object.h> #include <registration/ValuePrinterRegistration.hpp> -#include <registration/XmlRegistration.hpp> #include <registration/CastRegistration.hpp> #include <registration/ComponentRegistration.hpp> @@ -20,10 +19,4 @@ static auto components = registration::ComponentRegister < tree::UnrankedNonline static auto valuePrinter = registration::ValuePrinterRegister < tree::UnrankedNonlinearPattern < > > ( ); -static auto xmlWrite = registration::XmlWriterRegister < tree::UnrankedNonlinearPattern < > > ( ); -static auto xmlRead = registration::XmlReaderRegister < tree::UnrankedNonlinearPattern < > > ( ); - -static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::UnrankedNonlinearPattern < > > ( ); -static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::UnrankedNonlinearPattern < > > ( ); - } /* namespace */ diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h index ae8d1f2ccf7385bb65eed99db93fc43950b9f9f9..7321f6db9b7cb706d28c140d2da82f5ce13c89d7 100644 --- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h +++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h @@ -32,14 +32,11 @@ #include <sstream> #include <core/components.hpp> -#include <sax/FromXMLParserHelper.h> #include <object/UniqueObject.h> #include "../TreeFeatures.h" #include "../TreeException.h" #include "../TreeBase.h" -#include "../common/TreeFromXMLParser.h" -#include "../common/TreeToXMLComposer.h" #include "../common/TreeAuxiliary.h" #include <tree/common/TreeNormalize.h> @@ -240,36 +237,6 @@ public: */ virtual explicit operator std::string ( ) const override; - /** - * \brief The XML tag name of class. - * - * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. - * - * \returns string representing the XML tag name of the class - */ - static const std::string & getXmlTagName() { - static std::string xmlTagName = "UnrankedNonlinearPattern"; - - return xmlTagName; - } - - /** - * Parsing from a sequence of xml tokens helper. - * - * \params input the iterator to sequence of xml tokens to parse from - * - * \returns the new instance of the pattern - */ - static UnrankedNonlinearPattern parse ( ext::deque < sax::Token >::iterator & input ); - - /** - * Composing to a sequence of xml tokens helper. - * - * \param out the sink for new xml tokens representing the pattern - * \param pattern the pattern to compose - */ - static void compose ( ext::deque < sax::Token > & out, const UnrankedNonlinearPattern & pattern ); - /** * @copydoc object::ObjectBase::inc() */ @@ -371,29 +338,6 @@ UnrankedNonlinearPattern < SymbolType >::operator std::string ( ) const { return ss.str ( ); } -template < class SymbolType > -UnrankedNonlinearPattern < SymbolType > UnrankedNonlinearPattern < SymbolType >::parse ( ext::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, UnrankedNonlinearPattern::getXmlTagName() ); - SymbolType subtreeWildcardSymbol = TreeFromXMLParser::parseWildcardSymbol < SymbolType > ( input ); - ext::set < SymbolType > nonlinearVariables = TreeFromXMLParser::parseNonlinearVariables < SymbolType > ( input ); - ext::set < SymbolType > rankedAlphabet = TreeFromXMLParser::parseAlphabet < SymbolType > ( input ); - ext::tree < SymbolType > root = TreeFromXMLParser::parseTreeContent < SymbolType > ( input ); - UnrankedNonlinearPattern < SymbolType > tree ( std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( root ) ); - - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, UnrankedNonlinearPattern::getXmlTagName() ); - return tree; -} - -template < class SymbolType > -void UnrankedNonlinearPattern < SymbolType >::compose ( ext::deque < sax::Token > & out, const UnrankedNonlinearPattern & pattern ) { - out.emplace_back ( UnrankedNonlinearPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); - TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard ( ) ); - TreeToXMLComposer::composeNonlinearVariables ( out, pattern.getNonlinearVariables ( ) ); - TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet ( ) ); - TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) ); - out.emplace_back ( UnrankedNonlinearPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); -} - template < class SymbolType > object::ObjectBase* UnrankedNonlinearPattern < SymbolType >::inc() && { return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0)); diff --git a/alib2data/src/tree/unranked/UnrankedPattern.cpp b/alib2data/src/tree/unranked/UnrankedPattern.cpp index 2ef1e6d7ed261cf4d373af329d5109671d1b5b3f..66d60543ee4dee5f624e171cbf8adb1d0b686190 100644 --- a/alib2data/src/tree/unranked/UnrankedPattern.cpp +++ b/alib2data/src/tree/unranked/UnrankedPattern.cpp @@ -10,7 +10,6 @@ #include <object/Object.h> #include <registration/ValuePrinterRegistration.hpp> -#include <registration/XmlRegistration.hpp> #include <registration/CastRegistration.hpp> #include <registration/ComponentRegistration.hpp> @@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::UnrankedPattern static auto valuePrinter = registration::ValuePrinterRegister < tree::UnrankedPattern < > > ( ); -static auto xmlWrite = registration::XmlWriterRegister < tree::UnrankedPattern < > > ( ); -static auto xmlRead = registration::XmlReaderRegister < tree::UnrankedPattern < > > ( ); - -static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::UnrankedPattern < > > ( ); -static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::UnrankedPattern < > > ( ); - static auto UnrankedPatternFromRankedPattern = registration::CastRegister < tree::UnrankedPattern < >, tree::RankedPattern < > > ( ); } /* namespace */ diff --git a/alib2data/src/tree/unranked/UnrankedPattern.h b/alib2data/src/tree/unranked/UnrankedPattern.h index 4c2d9fa98be65e5ee34f9c7f9a8923a2a66e5a17..1fd8290864c8eb23e2ee24a831aa1de30c4dfe50 100644 --- a/alib2data/src/tree/unranked/UnrankedPattern.h +++ b/alib2data/src/tree/unranked/UnrankedPattern.h @@ -32,14 +32,11 @@ #include <sstream> #include <core/components.hpp> -#include <sax/FromXMLParserHelper.h> #include <object/UniqueObject.h> #include "../TreeFeatures.h" #include "../TreeException.h" #include "../TreeBase.h" -#include "../common/TreeFromXMLParser.h" -#include "../common/TreeToXMLComposer.h" #include "../common/TreeAuxiliary.h" #include <tree/common/TreeNormalize.h> @@ -211,36 +208,6 @@ public: */ virtual explicit operator std::string ( ) const override; - /** - * \brief The XML tag name of class. - * - * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. - * - * \returns string representing the XML tag name of the class - */ - static const std::string & getXmlTagName() { - static std::string xmlTagName = "UnrankedPattern"; - - return xmlTagName; - } - - /** - * Parsing from a sequence of xml tokens helper. - * - * \params input the iterator to sequence of xml tokens to parse from - * - * \returns the new instance of the pattern - */ - static UnrankedPattern parse ( ext::deque < sax::Token >::iterator & input ); - - /** - * Composing to a sequence of xml tokens helper. - * - * \param out the sink for new xml tokens representing the pattern - * \param pattern the pattern to compose - */ - static void compose ( ext::deque < sax::Token > & out, const UnrankedPattern & pattern ); - /** * @copydoc object::ObjectBase::inc() */ @@ -338,27 +305,6 @@ UnrankedPattern < SymbolType >::operator std::string ( ) const { return ss.str ( ); } -template < class SymbolType > -UnrankedPattern < SymbolType > UnrankedPattern < SymbolType >::parse ( ext::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, UnrankedPattern::getXmlTagName() ); - SymbolType subtreeWildcardSymbol = TreeFromXMLParser::parseWildcardSymbol < SymbolType > ( input ); - ext::set < SymbolType > rankedAlphabet = TreeFromXMLParser::parseAlphabet < SymbolType > ( input ); - ext::tree < SymbolType > root = TreeFromXMLParser::parseTreeContent < SymbolType > ( input ); - UnrankedPattern < SymbolType > tree ( std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( root ) ); - - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, UnrankedPattern::getXmlTagName() ); - return tree; -} - -template < class SymbolType > -void UnrankedPattern < SymbolType >::compose ( ext::deque < sax::Token > & out, const UnrankedPattern & pattern ) { - out.emplace_back ( UnrankedPattern::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); - TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard ( ) ); - TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet ( ) ); - TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) ); - out.emplace_back ( UnrankedPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); -} - template < class SymbolType > object::ObjectBase* UnrankedPattern < SymbolType >::inc() && { return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0)); diff --git a/alib2data/src/tree/unranked/UnrankedTree.cpp b/alib2data/src/tree/unranked/UnrankedTree.cpp index c54d0ffad9da3f36adc118ebe698069a70f31cdf..360bd4f3b07a50c8399dc7fbb6df2e2f15490f1a 100644 --- a/alib2data/src/tree/unranked/UnrankedTree.cpp +++ b/alib2data/src/tree/unranked/UnrankedTree.cpp @@ -10,7 +10,6 @@ #include <object/Object.h> #include <registration/ValuePrinterRegistration.hpp> -#include <registration/XmlRegistration.hpp> #include <registration/CastRegistration.hpp> #include <registration/ComponentRegistration.hpp> @@ -20,12 +19,6 @@ static auto components = registration::ComponentRegister < tree::UnrankedTree < static auto valuePrinter = registration::ValuePrinterRegister < tree::UnrankedTree < > > ( ); -static auto xmlWrite = registration::XmlWriterRegister < tree::UnrankedTree < > > ( ); -static auto xmlRead = registration::XmlReaderRegister < tree::UnrankedTree < > > ( ); - -static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::UnrankedTree < > > ( ); -static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::UnrankedTree < > > ( ); - static auto UnrankedTreeFromRankedTree = registration::CastRegister < tree::UnrankedTree < >, tree::RankedTree < > > ( ); } /* namespace */ diff --git a/alib2data/src/tree/unranked/UnrankedTree.h b/alib2data/src/tree/unranked/UnrankedTree.h index 3aef8ffa361cc4aa5c628bb5e2279c8ec47d6e52..35c77d48d6e526d915d3bb394b54ff12b7203ba3 100644 --- a/alib2data/src/tree/unranked/UnrankedTree.h +++ b/alib2data/src/tree/unranked/UnrankedTree.h @@ -31,15 +31,12 @@ #include <alib/algorithm> #include <sstream> -#include <sax/FromXMLParserHelper.h> #include <core/components.hpp> #include <object/UniqueObject.h> #include "../TreeFeatures.h" #include "../TreeBase.h" #include "../TreeException.h" -#include "../common/TreeFromXMLParser.h" -#include "../common/TreeToXMLComposer.h" #include "../common/TreeAuxiliary.h" #include <tree/common/TreeNormalize.h> @@ -189,36 +186,6 @@ public: */ virtual explicit operator std::string ( ) const override; - /** - * \brief The XML tag name of class. - * - * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. - * - * \returns string representing the XML tag name of the class - */ - static const std::string & getXmlTagName() { - static std::string xmlTagName = "UnrankedTree"; - - return xmlTagName; - } - - /** - * Parsing from a sequence of xml tokens helper. - * - * \params input the iterator to sequence of xml tokens to parse from - * - * \returns the new instance of the pattern - */ - static UnrankedTree parse ( ext::deque < sax::Token >::iterator & input ); - - /** - * Composing to a sequence of xml tokens helper. - * - * \param out the sink for new xml tokens representing the pattern - * \param pattern the pattern to compose - */ - static void compose ( ext::deque < sax::Token > & out, const UnrankedTree & tree ); - /** * @copydoc object::ObjectBase::inc() */ @@ -316,25 +283,6 @@ UnrankedTree < SymbolType >::operator std::string ( ) const { return ss.str ( ); } -template < class SymbolType > -UnrankedTree < SymbolType > UnrankedTree < SymbolType >::parse ( ext::deque < sax::Token >::iterator & input ) { - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, UnrankedTree::getXmlTagName() ); - ext::set < SymbolType > rankedAlphabet = TreeFromXMLParser::parseAlphabet < SymbolType > ( input ); - ext::tree < SymbolType > root = TreeFromXMLParser::parseTreeContent < SymbolType > ( input ); - UnrankedTree < SymbolType > tree ( std::move ( rankedAlphabet ), std::move ( root ) ); - - sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, UnrankedTree::getXmlTagName() ); - return tree; -} - -template < class SymbolType > -void UnrankedTree < SymbolType >::compose ( ext::deque < sax::Token > & out, const UnrankedTree & tree ) { - out.emplace_back ( UnrankedTree::getXmlTagName(), sax::Token::TokenType::START_ELEMENT ); - TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet ( ) ); - TreeToXMLComposer::composeContent ( out, tree.getContent ( ) ); - out.emplace_back ( UnrankedTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); -} - template < class SymbolType > object::ObjectBase* UnrankedTree < SymbolType >::inc() && { return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0)); diff --git a/alib2data/src/tree/common/TreeFromXMLParser.h b/alib2data/src/tree/xml/common/TreeFromXMLParser.h similarity index 100% rename from alib2data/src/tree/common/TreeFromXMLParser.h rename to alib2data/src/tree/xml/common/TreeFromXMLParser.h diff --git a/alib2data/src/tree/common/TreeToXMLComposer.h b/alib2data/src/tree/xml/common/TreeToXMLComposer.h similarity index 100% rename from alib2data/src/tree/common/TreeToXMLComposer.h rename to alib2data/src/tree/xml/common/TreeToXMLComposer.h diff --git a/alib2data/src/tree/xml/ranked/PostfixRankedTree.cpp b/alib2data/src/tree/xml/ranked/PostfixRankedTree.cpp new file mode 100644 index 0000000000000000000000000000000000000000..36f09c7a282108c9cbb2711c675660f85c3d2682 --- /dev/null +++ b/alib2data/src/tree/xml/ranked/PostfixRankedTree.cpp @@ -0,0 +1,22 @@ +/* + * PostfixRankedTree.cpp + * + * Created on: May 4, 2017 + * Author: Aleksandr Shatrovskii + */ + +#include "PostfixRankedTree.h" +#include <tree/Tree.h> +#include <object/Object.h> + +#include <registration/XmlRegistration.hpp> + +namespace { + +static auto xmlWrite = registration::XmlWriterRegister < tree::PostfixRankedTree < > > ( ); +static auto xmlRead = registration::XmlReaderRegister < tree::PostfixRankedTree < > > ( ); + +static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PostfixRankedTree < > > ( ); +static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PostfixRankedTree < > > ( ); + +} /* namespace */ diff --git a/alib2data/src/tree/xml/ranked/PostfixRankedTree.h b/alib2data/src/tree/xml/ranked/PostfixRankedTree.h new file mode 100644 index 0000000000000000000000000000000000000000..a3cded10b4a0ddb90e56668bad96dda0a0710dc5 --- /dev/null +++ b/alib2data/src/tree/xml/ranked/PostfixRankedTree.h @@ -0,0 +1,88 @@ +/* + * PostfixRankedTree.h + * + * This file is part of Algorithms library toolkit. + * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz) + + * Algorithms library toolkit is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * Algorithms library toolkit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with Algorithms library toolkit. If not, see <http://www.gnu.org/licenses/>. + * + * Created on: May 4, 2017 + * Author: Aleksandr Shatrovskii + */ + +#ifndef _XML_POSTFIX_RANKED_TREE_H_ +#define _XML_POSTFIX_RANKED_TREE_H_ + +#include <tree/ranked/PostfixRankedTree.h> +#include <sax/FromXMLParserHelper.h> +#include <alphabet/xml/RankedSymbol.h> +#include "../common/TreeFromXMLParser.h" +#include "../common/TreeToXMLComposer.h" + +namespace core { + +template < class SymbolType, class RankType > +struct xmlApi < tree::PostfixRankedTree < SymbolType, RankType > > { + /** + * \brief The XML tag name of class. + * + * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. + * + * \returns string representing the XML tag name of the class + */ + static const std::string & xmlTagName ( ) { + static std::string xmlTagName = "PostfixRankedTree"; + + return xmlTagName; + } + + /** + * Parsing from a sequence of xml tokens helper. + * + * \params input the iterator to sequence of xml tokens to parse from + * + * \returns the new instance of the tree + */ + static tree::PostfixRankedTree < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input ); + + /** + * Composing to a sequence of xml tokens helper. + * + * \param out the sink for new xml tokens representing the tree + * \param tree the tree to compose + */ + static void compose ( ext::deque < sax::Token > & out, const tree::PostfixRankedTree < SymbolType, RankType > & tree ); +}; + +template < class SymbolType, class RankType > +tree::PostfixRankedTree < SymbolType, RankType > xmlApi < tree::PostfixRankedTree < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) { + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) ); + ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::vector < common::ranked_symbol < SymbolType, RankType > > data = tree::TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) ); + + return tree::PostfixRankedTree < SymbolType, RankType > ( std::move ( rankedAlphabet ), std::move ( data ) ); +} + +template < class SymbolType, class RankType > +void xmlApi < tree::PostfixRankedTree < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::PostfixRankedTree < SymbolType, RankType > & tree ) { + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); + tree::TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet ( ) ); + tree::TreeToXMLComposer::composeContent ( out, tree.getContent ( ) ); + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); +} + +} /* namespace core */ + +#endif /* _XML_POSTFIX_RANKED_TREE_H_ */ diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedBarNonlinearPattern.cpp b/alib2data/src/tree/xml/ranked/PrefixRankedBarNonlinearPattern.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5c0c40ae297b1cc7e51ee3142978b4741e941e3d --- /dev/null +++ b/alib2data/src/tree/xml/ranked/PrefixRankedBarNonlinearPattern.cpp @@ -0,0 +1,22 @@ +/* + * PrefixRankedBarNonlinearPattern.cpp + * + * Created on: Jul 20, 2016 + * Author: Jan Travnicek + */ + +#include "PrefixRankedBarNonlinearPattern.h" +#include <tree/Tree.h> +#include <object/Object.h> + +#include <registration/XmlRegistration.hpp> + +namespace { + +static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedBarNonlinearPattern < > > ( ); +static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedBarNonlinearPattern < > > ( ); + +static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedBarNonlinearPattern < > > ( ); +static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedBarNonlinearPattern < > > ( ); + +} /* namespace */ diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/xml/ranked/PrefixRankedBarNonlinearPattern.h new file mode 100644 index 0000000000000000000000000000000000000000..bd5bcdf5c162e578b1c9a6b3be7bf2f36c13ff19 --- /dev/null +++ b/alib2data/src/tree/xml/ranked/PrefixRankedBarNonlinearPattern.h @@ -0,0 +1,96 @@ +/* + * PrefixRankedBarNonlinearPattern.h + * + * This file is part of Algorithms library toolkit. + * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz) + + * Algorithms library toolkit is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * Algorithms library toolkit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with Algorithms library toolkit. If not, see <http://www.gnu.org/licenses/>. + * + * Created on: Jul 20, 2016 + * Author: Jan Travnicek + */ + +#ifndef _XML_PREFIX_RANKED_BAR_NONLINEAR_PATTERN_H_ +#define _XML_PREFIX_RANKED_BAR_NONLINEAR_PATTERN_H_ + +#include <tree/ranked/PrefixRankedBarNonlinearPattern.h> +#include <sax/FromXMLParserHelper.h> +#include <alphabet/xml/RankedSymbol.h> +#include "../common/TreeFromXMLParser.h" +#include "../common/TreeToXMLComposer.h" + +namespace core { + +template < class SymbolType, class RankType > +struct xmlApi < tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > > { + /** + * \brief The XML tag name of class. + * + * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. + * + * \returns string representing the XML tag name of the class + */ + static const std::string & xmlTagName ( ) { + static std::string xmlTagName = "PrefixRankedBarNonlinearPattern"; + + return xmlTagName; + } + + /** + * Parsing from a sequence of xml tokens helper. + * + * \params input the iterator to sequence of xml tokens to parse from + * + * \returns the new instance of the pattern + */ + static tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input ); + + /** + * Composing to a sequence of xml tokens helper. + * + * \param out the sink for new xml tokens representing the pattern + * \param pattern the pattern to compose + */ + static void compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > & pattern ); +}; + +template < class SymbolType, class RankType > +tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > xmlApi < tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) { + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) ); + ext::set < common::ranked_symbol < SymbolType, RankType > > bars = tree::TreeFromXMLParser::parseBars < common::ranked_symbol < SymbolType, RankType > > ( input ); + common::ranked_symbol < SymbolType, RankType > variablesBarSymbol = tree::TreeFromXMLParser::parseVariablesBar < common::ranked_symbol < SymbolType, RankType > > ( input ); + common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = tree::TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables = tree::TreeFromXMLParser::parseNonlinearVariables < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::vector < common::ranked_symbol < SymbolType, RankType > > data = tree::TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) ); + + return tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > ( std::move ( bars ), std::move ( variablesBarSymbol ), std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( data ) ); +} + +template < class SymbolType, class RankType > +void xmlApi < tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > & pattern ) { + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); + tree::TreeToXMLComposer::composeBars ( out, pattern.getBars ( ) ); + tree::TreeToXMLComposer::composeVariablesBar ( out, pattern.getVariablesBar ( ) ); + tree::TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard ( ) ); + tree::TreeToXMLComposer::composeNonlinearVariables ( out, pattern.getNonlinearVariables ( ) ); + tree::TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet ( ) ); + tree::TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) ); + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); +} + +} /* namespace core */ + +#endif /* _XML_PREFIX_RANKED_BAR_NONLINEAR_PATTERN_H_ */ diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedBarPattern.cpp b/alib2data/src/tree/xml/ranked/PrefixRankedBarPattern.cpp new file mode 100644 index 0000000000000000000000000000000000000000..360776d1fa2e67703a627d15b5c2c93aaf36a12b --- /dev/null +++ b/alib2data/src/tree/xml/ranked/PrefixRankedBarPattern.cpp @@ -0,0 +1,22 @@ +/* + * PrefixRankedBarPattern.cpp + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#include "PrefixRankedBarPattern.h" +#include <tree/Tree.h> +#include <object/Object.h> + +#include <registration/XmlRegistration.hpp> + +namespace { + +static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedBarPattern < > > ( ); +static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedBarPattern < > > ( ); + +static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedBarPattern < > > ( ); +static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedBarPattern < > > ( ); + +} /* namespace */ diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/xml/ranked/PrefixRankedBarPattern.h new file mode 100644 index 0000000000000000000000000000000000000000..5fd5ccaae63123dcbfb198080a5fb791aa5b17c7 --- /dev/null +++ b/alib2data/src/tree/xml/ranked/PrefixRankedBarPattern.h @@ -0,0 +1,94 @@ +/* + * PrefixRankedBarPattern.h + * + * This file is part of Algorithms library toolkit. + * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz) + + * Algorithms library toolkit is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * Algorithms library toolkit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with Algorithms library toolkit. If not, see <http://www.gnu.org/licenses/>. + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#ifndef _XML_PREFIX_RANKED_BAR_PATTERN_H_ +#define _XML_PREFIX_RANKED_BAR_PATTERN_H_ + +#include <tree/ranked/PrefixRankedBarPattern.h> +#include <sax/FromXMLParserHelper.h> +#include <alphabet/xml/RankedSymbol.h> +#include "../common/TreeFromXMLParser.h" +#include "../common/TreeToXMLComposer.h" + +namespace core { + +template < class SymbolType, class RankType > +struct xmlApi < tree::PrefixRankedBarPattern < SymbolType, RankType > > { + /** + * \brief The XML tag name of class. + * + * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. + * + * \returns string representing the XML tag name of the class + */ + static const std::string & xmlTagName() { + static std::string xmlTagName = "PrefixRankedBarPattern"; + + return xmlTagName; + } + + /** + * Parsing from a sequence of xml tokens helper. + * + * \params input the iterator to sequence of xml tokens to parse from + * + * \returns the new instance of the pattern + */ + static tree::PrefixRankedBarPattern < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input ); + + /** + * Composing to a sequence of xml tokens helper. + * + * \param out the sink for new xml tokens representing the pattern + * \param pattern the pattern to compose + */ + static void compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedBarPattern < SymbolType, RankType > & pattern ); +}; + +template < class SymbolType, class RankType > +tree::PrefixRankedBarPattern < SymbolType, RankType > xmlApi < tree::PrefixRankedBarPattern < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) { + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) ); + ext::set < common::ranked_symbol < SymbolType, RankType > > bars = tree::TreeFromXMLParser::parseBars < common::ranked_symbol < SymbolType, RankType > > ( input ); + common::ranked_symbol < SymbolType, RankType > variablesBarSymbol = tree::TreeFromXMLParser::parseVariablesBar < common::ranked_symbol < SymbolType, RankType > > ( input ); + common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = tree::TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::vector < common::ranked_symbol < SymbolType, RankType > > data = tree::TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) ); + + return tree::PrefixRankedBarPattern < SymbolType, RankType > ( std::move ( bars ), std::move ( variablesBarSymbol ), std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( data ) ); +} + +template < class SymbolType, class RankType > +void xmlApi < tree::PrefixRankedBarPattern < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedBarPattern < SymbolType, RankType > & pattern ) { + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); + tree::TreeToXMLComposer::composeBars ( out, pattern.getBars() ); + tree::TreeToXMLComposer::composeVariablesBar ( out, pattern.getVariablesBar() ); + tree::TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard() ); + tree::TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet() ); + tree::TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) ); + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); +} + +} /* namespace core */ + +#endif /* _XML_PREFIX_RANKED_BAR_PATTERN_H_ */ diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedBarTree.cpp b/alib2data/src/tree/xml/ranked/PrefixRankedBarTree.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9b575999754f4083b1f7c0e33917bbf27f4868b5 --- /dev/null +++ b/alib2data/src/tree/xml/ranked/PrefixRankedBarTree.cpp @@ -0,0 +1,22 @@ +/* + * PrefixRankedBarTree.cpp + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#include "PrefixRankedBarTree.h" +#include <tree/Tree.h> +#include <object/Object.h> + +#include <registration/XmlRegistration.hpp> + +namespace { + +static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedBarTree < > > ( ); +static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedBarTree < > > ( ); + +static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedBarTree < > > ( ); +static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedBarTree < > > ( ); + +} /* namespace */ diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/xml/ranked/PrefixRankedBarTree.h new file mode 100644 index 0000000000000000000000000000000000000000..1a0372983b13bc91c337aef19af9eec79bf9d48b --- /dev/null +++ b/alib2data/src/tree/xml/ranked/PrefixRankedBarTree.h @@ -0,0 +1,90 @@ +/* + * PrefixRankedBarTree.h + * + * This file is part of Algorithms library toolkit. + * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz) + + * Algorithms library toolkit is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * Algorithms library toolkit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with Algorithms library toolkit. If not, see <http://www.gnu.org/licenses/>. + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#ifndef _XML_PREFIX_RANKED_BAR_TREE_H_ +#define _XML_PREFIX_RANKED_BAR_TREE_H_ + +#include <tree/ranked/PrefixRankedBarTree.h> +#include <sax/FromXMLParserHelper.h> +#include <alphabet/xml/RankedSymbol.h> +#include "../common/TreeFromXMLParser.h" +#include "../common/TreeToXMLComposer.h" + +namespace core { + +template < class SymbolType, class RankType > +struct xmlApi < tree::PrefixRankedBarTree < SymbolType, RankType > > { + /** + * \brief The XML tag name of class. + * + * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. + * + * \returns string representing the XML tag name of the class + */ + static const std::string & xmlTagName() { + static std::string xmlTagName = "PrefixRankedBarTree"; + + return xmlTagName; + } + + /** + * Parsing from a sequence of xml tokens helper. + * + * \params input the iterator to sequence of xml tokens to parse from + * + * \returns the new instance of the tree + */ + static tree::PrefixRankedBarTree < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input ); + + /** + * Composing to a sequence of xml tokens helper. + * + * \param out the sink for new xml tokens representing the tree + * \param tree the tree to compose + */ + static void compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedBarTree < SymbolType, RankType > & tree ); +}; + +template < class SymbolType, class RankType > +tree::PrefixRankedBarTree < SymbolType, RankType > xmlApi < tree::PrefixRankedBarTree < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) { + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) ); + ext::set < common::ranked_symbol < SymbolType, RankType > > bars = tree::TreeFromXMLParser::parseBars < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::vector < common::ranked_symbol < SymbolType, RankType > > data = tree::TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) ); + + return tree::PrefixRankedBarTree < SymbolType, RankType > ( std::move ( bars ), std::move ( rankedAlphabet ), std::move ( data ) ); +} + +template < class SymbolType, class RankType > +void xmlApi < tree::PrefixRankedBarTree < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedBarTree < SymbolType, RankType > & tree ) { + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); + tree::TreeToXMLComposer::composeBars ( out, tree.getBars() ); + tree::TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet() ); + tree::TreeToXMLComposer::composeContent ( out, tree.getContent ( ) ); + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); +} + +} /* namespace core */ + +#endif /* _XML_PREFIX_RANKED_BAR_TREE_H_ */ diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedNonlinearPattern.cpp b/alib2data/src/tree/xml/ranked/PrefixRankedNonlinearPattern.cpp new file mode 100644 index 0000000000000000000000000000000000000000..cc8d3ea9a04ed83921b6d312df5b264c449bde54 --- /dev/null +++ b/alib2data/src/tree/xml/ranked/PrefixRankedNonlinearPattern.cpp @@ -0,0 +1,22 @@ +/* + * PrefixRankedNonlinearPattern.cpp + * + * Created on: Jul 20, 2016 + * Author: Jan Travnicek + */ + +#include "PrefixRankedNonlinearPattern.h" +#include <tree/Tree.h> +#include <object/Object.h> + +#include <registration/XmlRegistration.hpp> + +namespace { + +static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedNonlinearPattern < > > ( ); +static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedNonlinearPattern < > > ( ); + +static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedNonlinearPattern < > > ( ); +static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedNonlinearPattern < > > ( ); + +} /* namespace */ diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/xml/ranked/PrefixRankedNonlinearPattern.h new file mode 100644 index 0000000000000000000000000000000000000000..8a311ed974ce181c4a779c4d74b2b5b392245360 --- /dev/null +++ b/alib2data/src/tree/xml/ranked/PrefixRankedNonlinearPattern.h @@ -0,0 +1,92 @@ +/* + * PrefixRankedNonlinearPattern.h + * + * This file is part of Algorithms library toolkit. + * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz) + + * Algorithms library toolkit is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * Algorithms library toolkit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with Algorithms library toolkit. If not, see <http://www.gnu.org/licenses/>. + * + * Created on: Jul 20, 2016 + * Author: Jan Travnicek + */ + +#ifndef _XML_PREFIX_RANKED_NONLINEAR_PATTERN_H_ +#define _XML_PREFIX_RANKED_NONLINEAR_PATTERN_H_ + +#include <tree/ranked/PrefixRankedNonlinearPattern.h> +#include <sax/FromXMLParserHelper.h> +#include <alphabet/xml/RankedSymbol.h> +#include "../common/TreeFromXMLParser.h" +#include "../common/TreeToXMLComposer.h" + +namespace core { + +template < class SymbolType, class RankType > +struct xmlApi < tree::PrefixRankedNonlinearPattern < SymbolType, RankType > > { + /** + * \brief The XML tag name of class. + * + * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. + * + * \returns string representing the XML tag name of the class + */ + static const std::string & xmlTagName ( ) { + static std::string xmlTagName = "PrefixRankedNonlinearPattern"; + + return xmlTagName; + } + + /** + * Parsing from a sequence of xml tokens helper. + * + * \params input the iterator to sequence of xml tokens to parse from + * + * \returns the new instance of the pattern + */ + static tree::PrefixRankedNonlinearPattern < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input ); + + /** + * Composing to a sequence of xml tokens helper. + * + * \param out the sink for new xml tokens representing the pattern + * \param pattern the pattern to compose + */ + static void compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedNonlinearPattern < SymbolType, RankType > & pattern ); +}; + +template < class SymbolType, class RankType > +tree::PrefixRankedNonlinearPattern < SymbolType, RankType > xmlApi < tree::PrefixRankedNonlinearPattern < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) { + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) ); + common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = tree::TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables = tree::TreeFromXMLParser::parseNonlinearVariables < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::vector < common::ranked_symbol < SymbolType, RankType > > data = tree::TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) ); + + return tree::PrefixRankedNonlinearPattern < SymbolType, RankType > ( std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( data ) ); +} + +template < class SymbolType, class RankType > +void xmlApi < tree::PrefixRankedNonlinearPattern < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedNonlinearPattern < SymbolType, RankType > & pattern ) { + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); + tree::TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard ( ) ); + tree::TreeToXMLComposer::composeNonlinearVariables ( out, pattern.getNonlinearVariables ( ) ); + tree::TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet ( ) ); + tree::TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) ); + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); +} + +} /* namespace core */ + +#endif /* _XML_PREFIX_RANKED_NONLINEAR_PATTERN_H_ */ diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedPattern.cpp b/alib2data/src/tree/xml/ranked/PrefixRankedPattern.cpp new file mode 100644 index 0000000000000000000000000000000000000000..71b582d100d1395a4a411a899398129049c31f06 --- /dev/null +++ b/alib2data/src/tree/xml/ranked/PrefixRankedPattern.cpp @@ -0,0 +1,22 @@ +/* + * PrefixRankedPattern.cpp + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#include "PrefixRankedPattern.h" +#include <tree/Tree.h> +#include <object/Object.h> + +#include <registration/XmlRegistration.hpp> + +namespace { + +static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedPattern < > > ( ); +static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedPattern < > > ( ); + +static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedPattern < > > ( ); +static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedPattern < > > ( ); + +} /* namespace */ diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedPattern.h b/alib2data/src/tree/xml/ranked/PrefixRankedPattern.h new file mode 100644 index 0000000000000000000000000000000000000000..8e0489c839fae8263ffaa6604ea0231603dcbc48 --- /dev/null +++ b/alib2data/src/tree/xml/ranked/PrefixRankedPattern.h @@ -0,0 +1,90 @@ +/* + * PrefixRankedPattern.h + * + * This file is part of Algorithms library toolkit. + * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz) + + * Algorithms library toolkit is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * Algorithms library toolkit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with Algorithms library toolkit. If not, see <http://www.gnu.org/licenses/>. + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#ifndef _XML_PREFIX_RANKED_PATTERN_H_ +#define _XML_PREFIX_RANKED_PATTERN_H_ + +#include <tree/ranked/PrefixRankedPattern.h> +#include <sax/FromXMLParserHelper.h> +#include <alphabet/xml/RankedSymbol.h> +#include "../common/TreeFromXMLParser.h" +#include "../common/TreeToXMLComposer.h" + +namespace core { + +template < class SymbolType, class RankType > +struct xmlApi < tree::PrefixRankedPattern < SymbolType, RankType > > { + /** + * \brief The XML tag name of class. + * + * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. + * + * \returns string representing the XML tag name of the class + */ + static const std::string & xmlTagName() { + static std::string xmlTagName = "PrefixRankedPattern"; + + return xmlTagName; + } + + /** + * Parsing from a sequence of xml tokens helper. + * + * \params input the iterator to sequence of xml tokens to parse from + * + * \returns the new instance of the pattern + */ + static tree::PrefixRankedPattern < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input ); + + /** + * Composing to a sequence of xml tokens helper. + * + * \param out the sink for new xml tokens representing the pattern + * \param pattern the pattern to compose + */ + static void compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedPattern < SymbolType, RankType > & pattern ); +}; + +template < class SymbolType, class RankType > +tree::PrefixRankedPattern < SymbolType, RankType > xmlApi < tree::PrefixRankedPattern < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) { + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) ); + common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = tree::TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::vector < common::ranked_symbol < SymbolType, RankType > > data = tree::TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) ); + + return tree::PrefixRankedPattern < SymbolType, RankType > ( std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( data ) ); +} + +template < class SymbolType, class RankType > +void xmlApi < tree::PrefixRankedPattern < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedPattern < SymbolType, RankType > & pattern ) { + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); + tree::TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard() ); + tree::TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet() ); + tree::TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) ); + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); +} + +} /* namespace core */ + +#endif /* _XML_PREFIX_RANKED_PATTERN_H_ */ diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedTree.cpp b/alib2data/src/tree/xml/ranked/PrefixRankedTree.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2bed6ee9e58e605e40d7fa7ffe5f7a1742192e58 --- /dev/null +++ b/alib2data/src/tree/xml/ranked/PrefixRankedTree.cpp @@ -0,0 +1,22 @@ +/* + * PrefixRankedTree.cpp + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#include "PrefixRankedTree.h" +#include <tree/Tree.h> +#include <object/Object.h> + +#include <registration/XmlRegistration.hpp> + +namespace { + +static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixRankedTree < > > ( ); +static auto xmlRead = registration::XmlReaderRegister < tree::PrefixRankedTree < > > ( ); + +static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixRankedTree < > > ( ); +static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixRankedTree < > > ( ); + +} /* namespace */ diff --git a/alib2data/src/tree/xml/ranked/PrefixRankedTree.h b/alib2data/src/tree/xml/ranked/PrefixRankedTree.h new file mode 100644 index 0000000000000000000000000000000000000000..1f16cd053c1b14850a3564ca730fa7074aba0469 --- /dev/null +++ b/alib2data/src/tree/xml/ranked/PrefixRankedTree.h @@ -0,0 +1,88 @@ +/* + * PrefixRankedTree.h + * + * This file is part of Algorithms library toolkit. + * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz) + + * Algorithms library toolkit is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * Algorithms library toolkit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with Algorithms library toolkit. If not, see <http://www.gnu.org/licenses/>. + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#ifndef _XML_PREFIX_RANKED_TREE_H_ +#define _XML_PREFIX_RANKED_TREE_H_ + +#include <tree/ranked/PrefixRankedTree.h> +#include <sax/FromXMLParserHelper.h> +#include <alphabet/xml/RankedSymbol.h> +#include "../common/TreeFromXMLParser.h" +#include "../common/TreeToXMLComposer.h" + +namespace core { + +template < class SymbolType, class RankType > +struct xmlApi < tree::PrefixRankedTree < SymbolType, RankType > > { + /** + * \brief The XML tag name of class. + * + * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. + * + * \returns string representing the XML tag name of the class + */ + static const std::string & xmlTagName() { + static std::string xmlTagName = "PrefixRankedTree"; + + return xmlTagName; + } + + /** + * Parsing from a sequence of xml tokens helper. + * + * \params input the iterator to sequence of xml tokens to parse from + * + * \returns the new instance of the tree + */ + static tree::PrefixRankedTree < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input ); + + /** + * Composing to a sequence of xml tokens helper. + * + * \param out the sink for new xml tokens representing the tree + * \param tree the tree to compose + */ + static void compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedTree < SymbolType, RankType > & tree ); +}; + +template < class SymbolType, class RankType > +tree::PrefixRankedTree < SymbolType, RankType > xmlApi < tree::PrefixRankedTree < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) { + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) ); + ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::vector < common::ranked_symbol < SymbolType, RankType > > data = tree::TreeFromXMLParser::parseLinearContent < common::ranked_symbol < SymbolType, RankType > > ( input ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) ); + + return tree::PrefixRankedTree < SymbolType, RankType > ( std::move ( rankedAlphabet ), std::move ( data ) ); +} + +template < class SymbolType, class RankType > +void xmlApi < tree::PrefixRankedTree < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::PrefixRankedTree < SymbolType, RankType > & tree ) { + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); + tree::TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet() ); + tree::TreeToXMLComposer::composeContent ( out, tree.getContent ( ) ); + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); +} + +} /* namespace core */ + +#endif /* _XML_PREFIX_RANKED_TREE_H_ */ diff --git a/alib2data/src/tree/xml/ranked/RankedNonlinearPattern.cpp b/alib2data/src/tree/xml/ranked/RankedNonlinearPattern.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c4d6c5dce9e9f52d6e23b10d15cbecf9be66c0e3 --- /dev/null +++ b/alib2data/src/tree/xml/ranked/RankedNonlinearPattern.cpp @@ -0,0 +1,22 @@ +/* + * RankedNonlinearPattern.cpp + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#include "RankedNonlinearPattern.h" +#include <tree/Tree.h> +#include <object/Object.h> + +#include <registration/XmlRegistration.hpp> + +namespace { + +static auto xmlWrite = registration::XmlWriterRegister < tree::RankedNonlinearPattern < > > ( ); +static auto xmlRead = registration::XmlReaderRegister < tree::RankedNonlinearPattern < > > ( ); + +static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::RankedNonlinearPattern < > > ( ); +static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::RankedNonlinearPattern < > > ( ); + +} /* namespace */ diff --git a/alib2data/src/tree/xml/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/xml/ranked/RankedNonlinearPattern.h new file mode 100644 index 0000000000000000000000000000000000000000..970049092d8c118db54129a54edf888f2342af86 --- /dev/null +++ b/alib2data/src/tree/xml/ranked/RankedNonlinearPattern.h @@ -0,0 +1,93 @@ +/* + * RankedNonlinearPattern.h + * + * This file is part of Algorithms library toolkit. + * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz) + + * Algorithms library toolkit is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * Algorithms library toolkit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with Algorithms library toolkit. If not, see <http://www.gnu.org/licenses/>. + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#ifndef _XML_RANKED_NONLINEAR_PATTERN_H_ +#define _XML_RANKED_NONLINEAR_PATTERN_H_ + +#include <tree/ranked/RankedNonlinearPattern.h> +#include <sax/FromXMLParserHelper.h> +#include <alphabet/xml/RankedSymbol.h> +#include "../common/TreeFromXMLParser.h" +#include "../common/TreeToXMLComposer.h" + +namespace core { + +template < class SymbolType, class RankType > +struct xmlApi < tree::RankedNonlinearPattern < SymbolType, RankType > > { + /** + * \brief The XML tag name of class. + * + * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. + * + * \returns string representing the XML tag name of the class + */ + static const std::string & xmlTagName() { + static std::string xmlTagName = "RankedNonlinearPattern"; + + return xmlTagName; + } + + /** + * Parsing from a sequence of xml tokens helper. + * + * \params input the iterator to sequence of xml tokens to parse from + * + * \returns the new instance of the pattern + */ + static tree::RankedNonlinearPattern < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input ); + + /** + * Composing to a sequence of xml tokens helper. + * + * \param out the sink for new xml tokens representing the pattern + * \param pattern the pattern to compose + */ + static void compose ( ext::deque < sax::Token > & out, const tree::RankedNonlinearPattern < SymbolType, RankType > & pattern ); +}; + +template < class SymbolType, class RankType > +tree::RankedNonlinearPattern < SymbolType, RankType > xmlApi < tree::RankedNonlinearPattern < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) { + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) ); + common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = tree::TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables = tree::TreeFromXMLParser::parseNonlinearVariables < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::tree < common::ranked_symbol < SymbolType, RankType > > root = tree::TreeFromXMLParser::parseTreeContent < common::ranked_symbol < SymbolType, RankType > > ( input ); + tree::RankedNonlinearPattern < SymbolType, RankType > tree ( std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( root ) ); + + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) ); + return tree; +} + +template < class SymbolType, class RankType > +void xmlApi < tree::RankedNonlinearPattern < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::RankedNonlinearPattern < SymbolType, RankType > & pattern ) { + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); + tree::TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard() ); + tree::TreeToXMLComposer::composeNonlinearVariables ( out, pattern.getNonlinearVariables() ); + tree::TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet() ); + tree::TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) ); + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); +} + +} /* namespace core */ + +#endif /* _XML_RANKED_NONLINEAR_PATTERN_H_ */ diff --git a/alib2data/src/tree/xml/ranked/RankedPattern.cpp b/alib2data/src/tree/xml/ranked/RankedPattern.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8817ae3ca4a0f77f2bd379296487ad994da8ee25 --- /dev/null +++ b/alib2data/src/tree/xml/ranked/RankedPattern.cpp @@ -0,0 +1,22 @@ +/* + * RankedPattern.cpp + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#include "RankedPattern.h" +#include <tree/Tree.h> +#include <object/Object.h> + +#include <registration/XmlRegistration.hpp> + +namespace { + +static auto xmlWrite = registration::XmlWriterRegister < tree::RankedPattern < > > ( ); +static auto xmlRead = registration::XmlReaderRegister < tree::RankedPattern < > > ( ); + +static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::RankedPattern < > > ( ); +static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::RankedPattern < > > ( ); + +} /* namespace */ diff --git a/alib2data/src/tree/xml/ranked/RankedPattern.h b/alib2data/src/tree/xml/ranked/RankedPattern.h new file mode 100644 index 0000000000000000000000000000000000000000..2476fb6e298539cbd99778f0f3b7e367fddcb86f --- /dev/null +++ b/alib2data/src/tree/xml/ranked/RankedPattern.h @@ -0,0 +1,91 @@ +/* + * RankedPattern.h + * + * This file is part of Algorithms library toolkit. + * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz) + + * Algorithms library toolkit is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * Algorithms library toolkit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with Algorithms library toolkit. If not, see <http://www.gnu.org/licenses/>. + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#ifndef _XML_RANKED_PATTERN_H_ +#define _XML_RANKED_PATTERN_H_ + +#include <tree/ranked/RankedPattern.h> +#include <sax/FromXMLParserHelper.h> +#include <alphabet/xml/RankedSymbol.h> +#include "../common/TreeFromXMLParser.h" +#include "../common/TreeToXMLComposer.h" + +namespace core { + +template < class SymbolType, class RankType > +struct xmlApi < tree::RankedPattern < SymbolType, RankType > > { + /** + * \brief The XML tag name of class. + * + * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. + * + * \returns string representing the XML tag name of the class + */ + static const std::string & xmlTagName() { + static std::string xmlTagName = "RankedPattern"; + + return xmlTagName; + } + + /** + * Parsing from a sequence of xml tokens helper. + * + * \params input the iterator to sequence of xml tokens to parse from + * + * \returns the new instance of the pattern + */ + static tree::RankedPattern < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input ); + + /** + * Composing to a sequence of xml tokens helper. + * + * \param out the sink for new xml tokens representing the pattern + * \param pattern the pattern to compose + */ + static void compose ( ext::deque < sax::Token > & out, const tree::RankedPattern < SymbolType, RankType > & pattern ); +}; + +template < class SymbolType, class RankType > +tree::RankedPattern < SymbolType, RankType > xmlApi < tree::RankedPattern < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) { + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) ); + common::ranked_symbol < SymbolType, RankType > subtreeWildcardSymbol = tree::TreeFromXMLParser::parseWildcardSymbol < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::tree < common::ranked_symbol < SymbolType, RankType > > root = tree::TreeFromXMLParser::parseTreeContent < common::ranked_symbol < SymbolType, RankType > > ( input ); + tree::RankedPattern < SymbolType, RankType > tree ( std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( root ) ); + + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) ); + return tree; +} + +template < class SymbolType, class RankType > +void xmlApi < tree::RankedPattern < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::RankedPattern < SymbolType, RankType > & pattern ) { + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); + tree::TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard() ); + tree::TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet() ); + tree::TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) ); + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); +} + +} /* namespace core */ + +#endif /* _XML_RANKED_PATTERN_H_ */ diff --git a/alib2data/src/tree/xml/ranked/RankedTree.cpp b/alib2data/src/tree/xml/ranked/RankedTree.cpp new file mode 100644 index 0000000000000000000000000000000000000000..47296deea33058fc405beaa4233a82ebc85cd631 --- /dev/null +++ b/alib2data/src/tree/xml/ranked/RankedTree.cpp @@ -0,0 +1,22 @@ +/* + * RankedTree.cpp + * + * Created on: Nov 23, 2013 + * Author: Stepan Plachy + */ + +#include "RankedTree.h" +#include <tree/Tree.h> +#include <object/Object.h> + +#include <registration/XmlRegistration.hpp> + +namespace { + +static auto xmlWrite = registration::XmlWriterRegister < tree::RankedTree < > > ( ); +static auto xmlRead = registration::XmlReaderRegister < tree::RankedTree < > > ( ); + +static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::RankedTree < > > ( ); +static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::RankedTree < > > ( ); + +} /* namespace */ diff --git a/alib2data/src/tree/xml/ranked/RankedTree.h b/alib2data/src/tree/xml/ranked/RankedTree.h new file mode 100644 index 0000000000000000000000000000000000000000..f99889340f1584f448ac4157149dbad6c1f5de07 --- /dev/null +++ b/alib2data/src/tree/xml/ranked/RankedTree.h @@ -0,0 +1,93 @@ +/* + * RankedTree.h + * + * This file is part of Algorithms library toolkit. + * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz) + + * Algorithms library toolkit is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * Algorithms library toolkit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with Algorithms library toolkit. If not, see <http://www.gnu.org/licenses/>. + * + * Created on: Nov 23, 2013 + * Author: Stepan Plachy + */ + +#ifndef _XML_RANKED_TREE_H_ +#define _XML_RANKED_TREE_H_ + +#include <tree/ranked/RankedTree.h> +#include <sax/FromXMLParserHelper.h> +#include <alphabet/xml/RankedSymbol.h> +#include "../common/TreeFromXMLParser.h" +#include "../common/TreeToXMLComposer.h" + +namespace core { + +template < class SymbolType, class RankType > +struct xmlApi < tree::RankedTree < SymbolType, RankType > > { + /** + * \brief The XML tag name of class. + * + * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. + * + * \returns string representing the XML tag name of the class + */ + static const std::string & xmlTagName() { + static std::string xmlTagName = "RankedTree"; + + return xmlTagName; + } + + static bool first ( const ext::deque < sax::Token >::const_iterator & input ) { + return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) ); + } + + /** + * Parsing from a sequence of xml tokens helper. + * + * \params input the iterator to sequence of xml tokens to parse from + * + * \returns the new instance of the tree + */ + static tree::RankedTree < SymbolType, RankType > parse ( ext::deque < sax::Token >::iterator & input ); + + /** + * Composing to a sequence of xml tokens helper. + * + * \param out the sink for new xml tokens representing the tree + * \param tree the tree to compose + */ + static void compose ( ext::deque < sax::Token > & out, const tree::RankedTree < SymbolType, RankType > & tree ); +}; + +template < class SymbolType, class RankType > +tree::RankedTree < SymbolType, RankType > xmlApi < tree::RankedTree < SymbolType, RankType > >::parse ( ext::deque < sax::Token >::iterator & input ) { + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) ); + ext::set < common::ranked_symbol < SymbolType, RankType > > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < common::ranked_symbol < SymbolType, RankType > > ( input ); + ext::tree < common::ranked_symbol < SymbolType, RankType > > root = tree::TreeFromXMLParser::parseTreeContent < common::ranked_symbol < SymbolType, RankType > > ( input ); + tree::RankedTree < SymbolType, RankType > tree ( std::move ( rankedAlphabet ), std::move ( root ) ); + + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) ); + return tree; +} + +template < class SymbolType, class RankType > +void xmlApi < tree::RankedTree < SymbolType, RankType > >::compose ( ext::deque < sax::Token > & out, const tree::RankedTree < SymbolType, RankType > & tree ) { + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); + tree::TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet ( ) ); + tree::TreeToXMLComposer::composeContent ( out, tree.getContent ( ) ); + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); +} + +} /* namespace core */ + +#endif /* _XML_RANKED_TREE_H_ */ diff --git a/alib2data/src/tree/xml/unranked/PrefixBarTree.cpp b/alib2data/src/tree/xml/unranked/PrefixBarTree.cpp new file mode 100644 index 0000000000000000000000000000000000000000..999f34ee34da73aaefb5d3864de0cdb965a47391 --- /dev/null +++ b/alib2data/src/tree/xml/unranked/PrefixBarTree.cpp @@ -0,0 +1,22 @@ +/* + * PrefixBarTree.cpp + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#include "PrefixBarTree.h" +#include <tree/Tree.h> +#include <object/Object.h> + +#include <registration/XmlRegistration.hpp> + +namespace { + +static auto xmlWrite = registration::XmlWriterRegister < tree::PrefixBarTree < > > ( ); +static auto xmlRead = registration::XmlReaderRegister < tree::PrefixBarTree < > > ( ); + +static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::PrefixBarTree < > > ( ); +static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::PrefixBarTree < > > ( ); + +} /* namespace */ diff --git a/alib2data/src/tree/xml/unranked/PrefixBarTree.h b/alib2data/src/tree/xml/unranked/PrefixBarTree.h new file mode 100644 index 0000000000000000000000000000000000000000..89373bd9676fcbeca747afc50df4a5e54d316aa9 --- /dev/null +++ b/alib2data/src/tree/xml/unranked/PrefixBarTree.h @@ -0,0 +1,89 @@ +/* + * PrefixBarTree.h + * + * This file is part of Algorithms library toolkit. + * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz) + + * Algorithms library toolkit is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * Algorithms library toolkit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with Algorithms library toolkit. If not, see <http://www.gnu.org/licenses/>. + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#ifndef _XML_PREFIX_BAR_TREE_H_ +#define _XML_PREFIX_BAR_TREE_H_ + +#include <tree/unranked/PrefixBarTree.h> +#include <sax/FromXMLParserHelper.h> +#include "../common/TreeFromXMLParser.h" +#include "../common/TreeToXMLComposer.h" + +namespace core { + +template < class SymbolType > +struct xmlApi < tree::PrefixBarTree < SymbolType > > { + /** + * \brief The XML tag name of class. + * + * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. + * + * \returns string representing the XML tag name of the class + */ + static const std::string & xmlTagName() { + static std::string xmlTagName = "PrefixBarTree"; + + return xmlTagName; + } + + /** + * Parsing from a sequence of xml tokens helper. + * + * \params input the iterator to sequence of xml tokens to parse from + * + * \returns the new instance of the tree + */ + static tree::PrefixBarTree < SymbolType > parse ( ext::deque < sax::Token >::iterator & input ); + + /** + * Composing to a sequence of xml tokens helper. + * + * \param out the sink for new xml tokens representing the tree + * \param tree the tree to compose + */ + static void compose ( ext::deque < sax::Token > & out, const tree::PrefixBarTree < SymbolType > & tree ); +}; + +template < class SymbolType > +tree::PrefixBarTree < SymbolType > xmlApi < tree::PrefixBarTree < SymbolType > >::parse ( ext::deque < sax::Token >::iterator & input ) { + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) ); + SymbolType bar = tree::TreeFromXMLParser::parseBar < SymbolType > ( input ); + ext::set < SymbolType > unrankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < SymbolType > ( input ); + ext::vector < SymbolType > data = tree::TreeFromXMLParser::parseLinearContent < SymbolType > ( input ); + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) ); + + return tree::PrefixBarTree < SymbolType > ( std::move ( bar ), std::move ( unrankedAlphabet ), std::move ( data ) ); +} + +template < class SymbolType > +void xmlApi < tree::PrefixBarTree < SymbolType > >::compose ( ext::deque < sax::Token > & out, const tree::PrefixBarTree < SymbolType > & tree ) { + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); + tree::TreeToXMLComposer::composeBar ( out, tree.getBar ( ) ); + tree::TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet ( ) ); + tree::TreeToXMLComposer::composeContent ( out, tree.getContent ( ) ); + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); +} + +} /* namespace core */ + +#endif /* _XML_PREFIX_BAR_TREE_H_ */ diff --git a/alib2data/src/tree/xml/unranked/UnrankedNonlinearPattern.cpp b/alib2data/src/tree/xml/unranked/UnrankedNonlinearPattern.cpp new file mode 100644 index 0000000000000000000000000000000000000000..77de071ad2892569efc088128f93547898446825 --- /dev/null +++ b/alib2data/src/tree/xml/unranked/UnrankedNonlinearPattern.cpp @@ -0,0 +1,22 @@ +/* + * UnrankedNonlinearPattern.cpp + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#include "UnrankedNonlinearPattern.h" +#include <tree/Tree.h> +#include <object/Object.h> + +#include <registration/XmlRegistration.hpp> + +namespace { + +static auto xmlWrite = registration::XmlWriterRegister < tree::UnrankedNonlinearPattern < > > ( ); +static auto xmlRead = registration::XmlReaderRegister < tree::UnrankedNonlinearPattern < > > ( ); + +static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::UnrankedNonlinearPattern < > > ( ); +static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::UnrankedNonlinearPattern < > > ( ); + +} /* namespace */ diff --git a/alib2data/src/tree/xml/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/xml/unranked/UnrankedNonlinearPattern.h new file mode 100644 index 0000000000000000000000000000000000000000..d33c9ea887049e47f5c9df0626c470b057771f3a --- /dev/null +++ b/alib2data/src/tree/xml/unranked/UnrankedNonlinearPattern.h @@ -0,0 +1,92 @@ +/* + * UnrankedNonlinearPattern.h + * + * This file is part of Algorithms library toolkit. + * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz) + + * Algorithms library toolkit is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * Algorithms library toolkit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with Algorithms library toolkit. If not, see <http://www.gnu.org/licenses/>. + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#ifndef _XML_UNRANKED_NONLINEAR_PATTERN_H_ +#define _XML_UNRANKED_NONLINEAR_PATTERN_H_ + +#include <tree/unranked/UnrankedNonlinearPattern.h> +#include <sax/FromXMLParserHelper.h> +#include "../common/TreeFromXMLParser.h" +#include "../common/TreeToXMLComposer.h" + +namespace core { + +template < class SymbolType > +struct xmlApi < tree::UnrankedNonlinearPattern < SymbolType > > { + /** + * \brief The XML tag name of class. + * + * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. + * + * \returns string representing the XML tag name of the class + */ + static const std::string & xmlTagName() { + static std::string xmlTagName = "UnrankedNonlinearPattern"; + + return xmlTagName; + } + + /** + * Parsing from a sequence of xml tokens helper. + * + * \params input the iterator to sequence of xml tokens to parse from + * + * \returns the new instance of the pattern + */ + static tree::UnrankedNonlinearPattern < SymbolType > parse ( ext::deque < sax::Token >::iterator & input ); + + /** + * Composing to a sequence of xml tokens helper. + * + * \param out the sink for new xml tokens representing the pattern + * \param pattern the pattern to compose + */ + static void compose ( ext::deque < sax::Token > & out, const tree::UnrankedNonlinearPattern < SymbolType > & pattern ); +}; + +template < class SymbolType > +tree::UnrankedNonlinearPattern < SymbolType > xmlApi < tree::UnrankedNonlinearPattern < SymbolType > >::parse ( ext::deque < sax::Token >::iterator & input ) { + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) ); + SymbolType subtreeWildcardSymbol = tree::TreeFromXMLParser::parseWildcardSymbol < SymbolType > ( input ); + ext::set < SymbolType > nonlinearVariables = tree::TreeFromXMLParser::parseNonlinearVariables < SymbolType > ( input ); + ext::set < SymbolType > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < SymbolType > ( input ); + ext::tree < SymbolType > root = tree::TreeFromXMLParser::parseTreeContent < SymbolType > ( input ); + tree::UnrankedNonlinearPattern < SymbolType > tree ( std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( root ) ); + + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) ); + return tree; +} + +template < class SymbolType > +void xmlApi < tree::UnrankedNonlinearPattern < SymbolType > >::compose ( ext::deque < sax::Token > & out, const tree::UnrankedNonlinearPattern < SymbolType > & pattern ) { + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); + tree::TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard ( ) ); + tree::TreeToXMLComposer::composeNonlinearVariables ( out, pattern.getNonlinearVariables ( ) ); + tree::TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet ( ) ); + tree::TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) ); + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); +} + +} /* namespace core */ + +#endif /* _XML_UNRANKED_NONLINEAR_PATTERN_H_ */ diff --git a/alib2data/src/tree/xml/unranked/UnrankedPattern.cpp b/alib2data/src/tree/xml/unranked/UnrankedPattern.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f84704cbcdbb005359fadd5483d28c1ae0f88a9a --- /dev/null +++ b/alib2data/src/tree/xml/unranked/UnrankedPattern.cpp @@ -0,0 +1,22 @@ +/* + * UnrankedPattern.cpp + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#include "UnrankedPattern.h" +#include <tree/Tree.h> +#include <object/Object.h> + +#include <registration/XmlRegistration.hpp> + +namespace { + +static auto xmlWrite = registration::XmlWriterRegister < tree::UnrankedPattern < > > ( ); +static auto xmlRead = registration::XmlReaderRegister < tree::UnrankedPattern < > > ( ); + +static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::UnrankedPattern < > > ( ); +static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::UnrankedPattern < > > ( ); + +} /* namespace */ diff --git a/alib2data/src/tree/xml/unranked/UnrankedPattern.h b/alib2data/src/tree/xml/unranked/UnrankedPattern.h new file mode 100644 index 0000000000000000000000000000000000000000..6ed06e27448e9aaf3b12b9bd1197c0d2f35adc9a --- /dev/null +++ b/alib2data/src/tree/xml/unranked/UnrankedPattern.h @@ -0,0 +1,90 @@ +/* + * UnrankedPattern.h + * + * This file is part of Algorithms library toolkit. + * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz) + + * Algorithms library toolkit is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * Algorithms library toolkit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with Algorithms library toolkit. If not, see <http://www.gnu.org/licenses/>. + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ + +#ifndef _XML_UNRANKED_PATTERN_H_ +#define _XML_UNRANKED_PATTERN_H_ + +#include <tree/unranked/UnrankedPattern.h> +#include <sax/FromXMLParserHelper.h> +#include "../common/TreeFromXMLParser.h" +#include "../common/TreeToXMLComposer.h" + +namespace core { + +template < class SymbolType > +struct xmlApi < tree::UnrankedPattern < SymbolType > > { + /** + * \brief The XML tag name of class. + * + * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. + * + * \returns string representing the XML tag name of the class + */ + static const std::string & xmlTagName() { + static std::string xmlTagName = "UnrankedPattern"; + + return xmlTagName; + } + + /** + * Parsing from a sequence of xml tokens helper. + * + * \params input the iterator to sequence of xml tokens to parse from + * + * \returns the new instance of the pattern + */ + static tree::UnrankedPattern < SymbolType > parse ( ext::deque < sax::Token >::iterator & input ); + + /** + * Composing to a sequence of xml tokens helper. + * + * \param out the sink for new xml tokens representing the pattern + * \param pattern the pattern to compose + */ + static void compose ( ext::deque < sax::Token > & out, const tree::UnrankedPattern < SymbolType > & pattern ); +}; + +template < class SymbolType > +tree::UnrankedPattern < SymbolType > xmlApi < tree::UnrankedPattern < SymbolType > >::parse ( ext::deque < sax::Token >::iterator & input ) { + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) ); + SymbolType subtreeWildcardSymbol = tree::TreeFromXMLParser::parseWildcardSymbol < SymbolType > ( input ); + ext::set < SymbolType > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < SymbolType > ( input ); + ext::tree < SymbolType > root = tree::TreeFromXMLParser::parseTreeContent < SymbolType > ( input ); + tree::UnrankedPattern < SymbolType > tree ( std::move ( subtreeWildcardSymbol ), std::move ( rankedAlphabet ), std::move ( root ) ); + + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) ); + return tree; +} + +template < class SymbolType > +void xmlApi < tree::UnrankedPattern < SymbolType > >::compose ( ext::deque < sax::Token > & out, const tree::UnrankedPattern < SymbolType > & pattern ) { + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); + tree::TreeToXMLComposer::composeSubtreeWildcard ( out, pattern.getSubtreeWildcard ( ) ); + tree::TreeToXMLComposer::composeAlphabet ( out, pattern.getAlphabet ( ) ); + tree::TreeToXMLComposer::composeContent ( out, pattern.getContent ( ) ); + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); +} + +} /* namespace core */ + +#endif /* _XML_UNRANKED_PATTERN_H_ */ diff --git a/alib2data/src/tree/xml/unranked/UnrankedTree.cpp b/alib2data/src/tree/xml/unranked/UnrankedTree.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b57cba92a8f936545b4d3e4e1c20a0da427d9612 --- /dev/null +++ b/alib2data/src/tree/xml/unranked/UnrankedTree.cpp @@ -0,0 +1,22 @@ +/* + * UnrankedTree.cpp + * + * Created on: Nov 23, 2013 + * Author: Stepan Plachy + */ + +#include "UnrankedTree.h" +#include <tree/Tree.h> +#include <object/Object.h> + +#include <registration/XmlRegistration.hpp> + +namespace { + +static auto xmlWrite = registration::XmlWriterRegister < tree::UnrankedTree < > > ( ); +static auto xmlRead = registration::XmlReaderRegister < tree::UnrankedTree < > > ( ); + +static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < tree::Tree, tree::UnrankedTree < > > ( ); +static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, tree::UnrankedTree < > > ( ); + +} /* namespace */ diff --git a/alib2data/src/tree/xml/unranked/UnrankedTree.h b/alib2data/src/tree/xml/unranked/UnrankedTree.h new file mode 100644 index 0000000000000000000000000000000000000000..de52ad7738187fc18e01c46abfbf475f4bf19f47 --- /dev/null +++ b/alib2data/src/tree/xml/unranked/UnrankedTree.h @@ -0,0 +1,92 @@ +/* + * UnrankedTree.h + * + * This file is part of Algorithms library toolkit. + * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz) + + * Algorithms library toolkit is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * Algorithms library toolkit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with Algorithms library toolkit. If not, see <http://www.gnu.org/licenses/>. + * + * Created on: Nov 23, 2013 + * Author: Stepan Plachy + */ + +#ifndef _XML_UNRANKED_TREE_H_ +#define _XML_UNRANKED_TREE_H_ + +#include <tree/unranked/UnrankedTree.h> +#include <sax/FromXMLParserHelper.h> +#include "../common/TreeFromXMLParser.h" +#include "../common/TreeToXMLComposer.h" + +namespace core { + +template < class SymbolType > +struct xmlApi < tree::UnrankedTree < SymbolType > > { + /** + * \brief The XML tag name of class. + * + * \details Intentionaly a static member function to be safe in the initialisation before the main function starts. + * + * \returns string representing the XML tag name of the class + */ + static const std::string & xmlTagName() { + static std::string xmlTagName = "UnrankedTree"; + + return xmlTagName; + } + + static bool first ( const ext::deque < sax::Token >::const_iterator & input ) { + return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) ); + } + + /** + * Parsing from a sequence of xml tokens helper. + * + * \params input the iterator to sequence of xml tokens to parse from + * + * \returns the new instance of the pattern + */ + static tree::UnrankedTree < SymbolType > parse ( ext::deque < sax::Token >::iterator & input ); + + /** + * Composing to a sequence of xml tokens helper. + * + * \param out the sink for new xml tokens representing the pattern + * \param pattern the pattern to compose + */ + static void compose ( ext::deque < sax::Token > & out, const tree::UnrankedTree < SymbolType > & tree ); +}; + +template < class SymbolType > +tree::UnrankedTree < SymbolType > xmlApi < tree::UnrankedTree < SymbolType > >::parse ( ext::deque < sax::Token >::iterator & input ) { + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) ); + ext::set < SymbolType > rankedAlphabet = tree::TreeFromXMLParser::parseAlphabet < SymbolType > ( input ); + ext::tree < SymbolType > root = tree::TreeFromXMLParser::parseTreeContent < SymbolType > ( input ); + tree::UnrankedTree < SymbolType > tree ( std::move ( rankedAlphabet ), std::move ( root ) ); + + sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) ); + return tree; +} + +template < class SymbolType > +void xmlApi < tree::UnrankedTree < SymbolType > >::compose ( ext::deque < sax::Token > & out, const tree::UnrankedTree < SymbolType > & tree ) { + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT ); + tree::TreeToXMLComposer::composeAlphabet ( out, tree.getAlphabet ( ) ); + tree::TreeToXMLComposer::composeContent ( out, tree.getContent ( ) ); + out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); +} + +} /* namespace core */ + +#endif /* _XML_UNRANKED_TREE_H_ */ diff --git a/alib2data/test-src/tree/PatternTest.cpp b/alib2data/test-src/tree/PatternTest.cpp index e800aa0adba001bb06cfed9d0da95d79e13b22de..03ff89765eb09569c6be78bfc329a87ad694ef5c 100644 --- a/alib2data/test-src/tree/PatternTest.cpp +++ b/alib2data/test-src/tree/PatternTest.cpp @@ -4,9 +4,13 @@ #include "sax/SaxComposeInterface.h" #include "tree/unranked/UnrankedPattern.h" +#include "tree/xml/unranked/UnrankedPattern.h" #include "tree/ranked/RankedPattern.h" +#include "tree/xml/ranked/RankedPattern.h" #include "tree/ranked/PrefixRankedPattern.h" +#include "tree/xml/ranked/PrefixRankedPattern.h" #include "tree/ranked/PrefixRankedBarPattern.h" +#include "tree/xml/ranked/PrefixRankedBarPattern.h" #include "tree/TreeException.h" diff --git a/alib2data/test-src/tree/TreeTest.cpp b/alib2data/test-src/tree/TreeTest.cpp index f40573c989812a861a2d40254aeb6d00e2529d30..ab6d01abbec44bf6324c15bee1c0359a5d3f0ab4 100644 --- a/alib2data/test-src/tree/TreeTest.cpp +++ b/alib2data/test-src/tree/TreeTest.cpp @@ -4,10 +4,15 @@ #include "sax/SaxComposeInterface.h" #include "tree/ranked/RankedTree.h" +#include "tree/xml/ranked/RankedTree.h" #include "tree/unranked/UnrankedTree.h" +#include "tree/xml/unranked/UnrankedTree.h" #include "tree/ranked/PrefixRankedTree.h" +#include "tree/xml/ranked/PrefixRankedTree.h" #include "tree/ranked/PrefixRankedBarTree.h" +#include "tree/xml/ranked/PrefixRankedBarTree.h" #include "tree/ranked/RankedPattern.h" +#include "tree/xml/ranked/RankedPattern.h" #include "tree/TreeException.h" diff --git a/tniceprint/src/tniceprint.cpp b/tniceprint/src/tniceprint.cpp index 4af9f005ea40b631acbb47902073f6ec75b31032..51f3090c91906330caf640df6393d43c36817b7b 100644 --- a/tniceprint/src/tniceprint.cpp +++ b/tniceprint/src/tniceprint.cpp @@ -14,7 +14,9 @@ #include <factory/XmlDataFactory.hpp> #include <tree/Tree.h> #include <tree/ranked/RankedTree.h> +#include <tree/xml/ranked/RankedTree.h> #include <tree/unranked/UnrankedTree.h> +#include <tree/xml/unranked/UnrankedTree.h> int main(int argc, char** argv) { try {