From f179e7200253a4f07ba95b1fb984e16be9c3629a Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Sun, 20 Sep 2015 21:29:03 +0200 Subject: [PATCH] casting within tree types --- alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp | 10 ++++++++++ alib2data/src/tree/ranked/PrefixRankedBarPattern.h | 1 + alib2data/src/tree/ranked/PrefixRankedBarTree.cpp | 9 +++++++++ alib2data/src/tree/ranked/PrefixRankedBarTree.h | 1 + alib2data/src/tree/ranked/RankedPattern.cpp | 4 ++++ alib2data/src/tree/ranked/RankedTree.cpp | 4 ++++ alib2data/src/tree/unranked/UnrankedPattern.cpp | 4 ++++ alib2data/src/tree/unranked/UnrankedTree.cpp | 4 ++++ 8 files changed, 37 insertions(+) diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp index a689907aed..216e68780b 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp @@ -20,6 +20,10 @@ #include "../Tree.h" #include "../../object/Object.h" #include "../../XmlApi.hpp" +#include "../../CastApi.hpp" + +#include "../../alphabet/BarSymbol.h" +#include "../../alphabet/VariablesBarSymbol.h" namespace tree { @@ -40,6 +44,9 @@ PrefixRankedBarPattern::PrefixRankedBarPattern ( alphabet::Symbol bar, alphabet: alphabet = std::set < alphabet::RankedSymbol > ( m_Data.begin ( ), m_Data.end ( ) ); } +PrefixRankedBarPattern::PrefixRankedBarPattern ( const RankedPattern & tree ) : PrefixRankedBarPattern ( alphabet::Symbol ( alphabet::BarSymbol::BAR ), alphabet::Symbol ( alphabet::VariablesBarSymbol::BAR ), tree ) { +} + void PrefixRankedBarPattern::toPrefixRankedBar ( const RankedNode & node ) { if ( node.getSymbol ( ) == subtreeWildcard ) { m_Data.push_back ( node.getSymbol ( ) ); @@ -197,4 +204,7 @@ namespace alib { xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedBarPattern > prefixRankedBarPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedBarPattern > ( tree::PrefixRankedBarPattern::XML_TAG_NAME, tree::PrefixRankedBarPattern::parse ); xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarPattern > prefixRankedBarPatternParserRegister2 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarPattern > ( tree::PrefixRankedBarPattern::XML_TAG_NAME, tree::PrefixRankedBarPattern::parse ); +auto PrefixRankedBarPatternFromRankedPattern = castApi::CastRegister < tree::PrefixRankedBarPattern, tree::RankedPattern > ( ); +auto PrefixRankedBarPatternCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedBarPattern > ( tree::PrefixRankedBarPattern::XML_TAG_NAME ); + } /* namespace alib */ diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h index 6a5116cace..91d0ed76f5 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h +++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h @@ -34,6 +34,7 @@ public: explicit PrefixRankedBarPattern ( alphabet::Symbol bar, alphabet::Symbol variablesBar, alphabet::RankedSymbol subtreeWildcard, std::set < alphabet::RankedSymbol > alphabet, std::vector < alphabet::RankedSymbol > data ); explicit PrefixRankedBarPattern ( alphabet::Symbol bar, alphabet::Symbol variablesBar, alphabet::RankedSymbol subtreeWildcard, std::vector < alphabet::RankedSymbol > data ); explicit PrefixRankedBarPattern ( alphabet::Symbol bar, alphabet::Symbol variablesBar, const RankedPattern & tree ); + explicit PrefixRankedBarPattern ( const RankedPattern & tree ); void toPrefixRankedBar ( const RankedNode & node ); diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp index 6a69b672ad..e66bccfb65 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp @@ -20,6 +20,9 @@ #include "../Tree.h" #include "../../object/Object.h" #include "../../XmlApi.hpp" +#include "../../CastApi.hpp" + +#include "../../alphabet/BarSymbol.h" namespace tree { @@ -40,6 +43,9 @@ PrefixRankedBarTree::PrefixRankedBarTree ( alphabet::Symbol bar, const RankedTre alphabet = std::set < alphabet::RankedSymbol > ( m_Data.begin ( ), m_Data.end ( ) ); } +PrefixRankedBarTree::PrefixRankedBarTree ( const RankedTree & tree ) : PrefixRankedBarTree ( alphabet::Symbol ( alphabet::BarSymbol::BAR ), tree ) { +} + void PrefixRankedBarTree::toPrefixRankedBar ( const RankedNode & node ) { m_Data.push_back ( node.getSymbol ( ) ); @@ -177,4 +183,7 @@ namespace alib { xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedBarTree > prefixRankedBarTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedBarTree > ( tree::PrefixRankedBarTree::XML_TAG_NAME, tree::PrefixRankedBarTree::parse ); xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarTree > prefixRankedBarTreeParserRegister2 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarTree > ( tree::PrefixRankedBarTree::XML_TAG_NAME, tree::PrefixRankedBarTree::parse ); +auto PrefixRankedBarTreeFromRankedTree = castApi::CastRegister < tree::PrefixRankedBarTree, tree::RankedTree > ( ); +auto PrefixRankedBarTreeCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedBarTree > ( tree::PrefixRankedBarTree::XML_TAG_NAME ); + } /* namespace alib */ diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/ranked/PrefixRankedBarTree.h index 564a4c4bfd..54b7ae7d33 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h +++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h @@ -33,6 +33,7 @@ public: explicit PrefixRankedBarTree ( alphabet::Symbol bar, std::set < alphabet::RankedSymbol > alphabet, std::vector < alphabet::RankedSymbol > data ); explicit PrefixRankedBarTree ( alphabet::Symbol bar, std::vector < alphabet::RankedSymbol > data ); explicit PrefixRankedBarTree ( alphabet::Symbol bar, const RankedTree & tree ); + explicit PrefixRankedBarTree ( const RankedTree & tree ); void toPrefixRankedBar ( const RankedNode & node ); diff --git a/alib2data/src/tree/ranked/RankedPattern.cpp b/alib2data/src/tree/ranked/RankedPattern.cpp index 2722335ead..55fa2dbd63 100644 --- a/alib2data/src/tree/ranked/RankedPattern.cpp +++ b/alib2data/src/tree/ranked/RankedPattern.cpp @@ -20,6 +20,7 @@ #include "../Tree.h" #include "../../object/Object.h" #include "../../XmlApi.hpp" +#include "../../CastApi.hpp" namespace tree { @@ -168,4 +169,7 @@ namespace alib { xmlApi < tree::Tree >::ParserRegister < tree::RankedPattern > rankedPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::RankedPattern > ( tree::RankedPattern::XML_TAG_NAME, tree::RankedPattern::parse ); xmlApi < alib::Object >::ParserRegister < tree::RankedPattern > rankedPatternParserRegister2 = xmlApi < alib::Object >::ParserRegister < tree::RankedPattern > ( tree::RankedPattern::XML_TAG_NAME, tree::RankedPattern::parse ); +auto RankedPatternFromUnrankedPattern = castApi::CastRegister < tree::RankedPattern, tree::UnrankedPattern > ( ); +auto RankedPatternCastBinder = castApi::CastPoolStringBinder < tree::RankedPattern > ( tree::RankedPattern::XML_TAG_NAME ); + } /* namespace alib */ diff --git a/alib2data/src/tree/ranked/RankedTree.cpp b/alib2data/src/tree/ranked/RankedTree.cpp index ad734dfb2b..274316be1d 100644 --- a/alib2data/src/tree/ranked/RankedTree.cpp +++ b/alib2data/src/tree/ranked/RankedTree.cpp @@ -20,6 +20,7 @@ #include "../Tree.h" #include "../../object/Object.h" #include "../../XmlApi.hpp" +#include "../../CastApi.hpp" namespace tree { @@ -159,4 +160,7 @@ namespace alib { xmlApi < tree::Tree >::ParserRegister < tree::RankedTree > rankedTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::RankedTree > ( tree::RankedTree::XML_TAG_NAME, tree::RankedTree::parse ); xmlApi < alib::Object >::ParserRegister < tree::RankedTree > rankedTreeParserRegister2 = xmlApi < alib::Object >::ParserRegister < tree::RankedTree > ( tree::RankedTree::XML_TAG_NAME, tree::RankedTree::parse ); +auto RankedTreeFromUnrankedTree = castApi::CastRegister < tree::RankedTree, tree::UnrankedTree > ( ); +auto RankedTreeCastBinder = castApi::CastPoolStringBinder < tree::RankedTree > ( tree::RankedTree::XML_TAG_NAME ); + } /* namespace alib */ diff --git a/alib2data/src/tree/unranked/UnrankedPattern.cpp b/alib2data/src/tree/unranked/UnrankedPattern.cpp index 4ca331c008..166bbd4a1e 100644 --- a/alib2data/src/tree/unranked/UnrankedPattern.cpp +++ b/alib2data/src/tree/unranked/UnrankedPattern.cpp @@ -20,6 +20,7 @@ #include "../Tree.h" #include "../../object/Object.h" #include "../../XmlApi.hpp" +#include "../../CastApi.hpp" namespace tree { @@ -168,4 +169,7 @@ namespace alib { xmlApi < tree::Tree >::ParserRegister < tree::UnrankedPattern > unrankedPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::UnrankedPattern > ( tree::UnrankedPattern::XML_TAG_NAME, tree::UnrankedPattern::parse ); xmlApi < alib::Object >::ParserRegister < tree::UnrankedPattern > unrankedPatternParserRegister2 = xmlApi < alib::Object >::ParserRegister < tree::UnrankedPattern > ( tree::UnrankedPattern::XML_TAG_NAME, tree::UnrankedPattern::parse ); +auto UnrankedPatternFromRankedPattern = castApi::CastRegister < tree::UnrankedPattern, tree::RankedPattern > ( ); +auto UnrankedPatternCastBinder = castApi::CastPoolStringBinder < tree::UnrankedPattern > ( tree::UnrankedPattern::XML_TAG_NAME ); + } /* namespace alib */ diff --git a/alib2data/src/tree/unranked/UnrankedTree.cpp b/alib2data/src/tree/unranked/UnrankedTree.cpp index 7b49c3cf8e..a8e4686bff 100644 --- a/alib2data/src/tree/unranked/UnrankedTree.cpp +++ b/alib2data/src/tree/unranked/UnrankedTree.cpp @@ -20,6 +20,7 @@ #include "../Tree.h" #include "../../object/Object.h" #include "../../XmlApi.hpp" +#include "../../CastApi.hpp" namespace tree { @@ -159,4 +160,7 @@ namespace alib { xmlApi < tree::Tree >::ParserRegister < tree::UnrankedTree > unrankedTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::UnrankedTree > ( tree::UnrankedTree::XML_TAG_NAME, tree::UnrankedTree::parse ); xmlApi < alib::Object >::ParserRegister < tree::UnrankedTree > unrankedTreeParserRegister2 = xmlApi < alib::Object >::ParserRegister < tree::UnrankedTree > ( tree::UnrankedTree::XML_TAG_NAME, tree::UnrankedTree::parse ); +auto UnrankedTreeFromRankedTree = castApi::CastRegister < tree::UnrankedTree, tree::RankedTree > ( ); +auto UnrankedTreeCastBinder = castApi::CastPoolStringBinder < tree::UnrankedTree > ( tree::UnrankedTree::XML_TAG_NAME ); + } /* namespace alib */ -- GitLab