From 7495a1767d7955428deb010047403a3a8a709f0d Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Tue, 27 Oct 2015 21:14:19 +0100 Subject: [PATCH] cast RankedPatterns to LinearString --- alib2data/src/string/LinearString.cpp | 24 ++++++++++++++++++++++-- alib2data/src/string/LinearString.h | 5 +++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/alib2data/src/string/LinearString.cpp b/alib2data/src/string/LinearString.cpp index 69d6079942..f7c45d4a1f 100644 --- a/alib2data/src/string/LinearString.cpp +++ b/alib2data/src/string/LinearString.cpp @@ -8,7 +8,9 @@ #include "LinearString.h" #include "Epsilon.h" #include "../tree/ranked/PrefixRankedTree.h" +#include "../tree/ranked/PrefixRankedPattern.h" #include "../tree/ranked/PrefixRankedBarTree.h" +#include "../tree/ranked/PrefixRankedBarPattern.h" #include "../exception/AlibException.h" #include <sstream> @@ -53,7 +55,15 @@ LinearString::LinearString ( const Epsilon & epsilon ) { LinearString::LinearString ( const tree::PrefixRankedTree & tree ) { for ( const alphabet::RankedSymbol & symbol : tree.getAlphabet ( ) ) - this->alphabet.insert ( alphabet::Symbol ( std::move ( symbol ) ) ); + this->alphabet.insert ( alphabet::Symbol ( symbol ) ); + + for ( const alphabet::RankedSymbol & symbol : tree.getContent ( ) ) + this->m_Data.push_back ( alphabet::Symbol ( symbol ) ); +} + +LinearString::LinearString ( const tree::PrefixRankedPattern & tree ) { + for ( const alphabet::RankedSymbol & symbol : tree.getAlphabet ( ) ) + this->alphabet.insert ( alphabet::Symbol ( symbol ) ); for ( const alphabet::RankedSymbol & symbol : tree.getContent ( ) ) this->m_Data.push_back ( alphabet::Symbol ( symbol ) ); @@ -61,7 +71,15 @@ LinearString::LinearString ( const tree::PrefixRankedTree & tree ) { LinearString::LinearString ( const tree::PrefixRankedBarTree & tree ) { for ( const alphabet::RankedSymbol & symbol : tree.getAlphabet ( ) ) - this->alphabet.insert ( alphabet::Symbol ( std::move ( symbol ) ) ); + this->alphabet.insert ( alphabet::Symbol ( symbol ) ); + + for ( const alphabet::RankedSymbol & symbol : tree.getContent ( ) ) + this->m_Data.push_back ( alphabet::Symbol ( symbol ) ); +} + +LinearString::LinearString ( const tree::PrefixRankedBarPattern & tree ) { + for ( const alphabet::RankedSymbol & symbol : tree.getAlphabet ( ) ) + this->alphabet.insert ( alphabet::Symbol ( symbol ) ); for ( const alphabet::RankedSymbol & symbol : tree.getContent ( ) ) this->m_Data.push_back ( alphabet::Symbol ( symbol ) ); @@ -166,7 +184,9 @@ xmlApi < alib::Object >::ParserRegister < string::LinearString > linearStringPar auto LinearStringFromEpsilon = castApi::CastRegister < string::LinearString, string::Epsilon > ( ); auto LinearStringFromPrefixRankedTree = castApi::CastRegister < string::LinearString, tree::PrefixRankedTree > ( ); +auto LinearStringFromPrefixRankedPattern = castApi::CastRegister < string::LinearString, tree::PrefixRankedPattern > ( ); auto LinearStringFromPrefixRankedBarTree = castApi::CastRegister < string::LinearString, tree::PrefixRankedBarTree > ( ); +auto LinearStringFromPrefixRankedBarPattern = castApi::CastRegister < string::LinearString, tree::PrefixRankedBarPattern > ( ); auto LinearStringCastBinder = castApi::CastPoolStringBinder < string::LinearString > ( string::LinearString::XML_TAG_NAME ); } /* namespace alib */ diff --git a/alib2data/src/string/LinearString.h b/alib2data/src/string/LinearString.h index f8066f15a4..f290d1b471 100644 --- a/alib2data/src/string/LinearString.h +++ b/alib2data/src/string/LinearString.h @@ -19,7 +19,10 @@ namespace tree { class PrefixRankedTree; +class PrefixRankedPattern; class PrefixRankedBarTree; +class PrefixRankedBarPattern; + } namespace string { @@ -36,7 +39,9 @@ class LinearString : public StringBase, public StringAlphabet { public: explicit LinearString ( ); explicit LinearString ( const tree::PrefixRankedTree & tree ); + explicit LinearString ( const tree::PrefixRankedPattern & tree ); explicit LinearString ( const tree::PrefixRankedBarTree & tree ); + explicit LinearString ( const tree::PrefixRankedBarPattern & tree ); explicit LinearString ( std::set < alphabet::Symbol > alphabet, std::vector < alphabet::Symbol > data ); explicit LinearString ( std::vector < alphabet::Symbol > data ); explicit LinearString ( const std::string & string ); -- GitLab