From a94ce6ce90028e369cccfd4afde1c771261f3723 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Wed, 23 Sep 2015 18:26:19 +0200 Subject: [PATCH] cast tree to LinearString --- alib2data/src/string/LinearString.cpp | 10 ++++++++++ alib2data/src/string/LinearString.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/alib2data/src/string/LinearString.cpp b/alib2data/src/string/LinearString.cpp index d275307c13..69d6079942 100644 --- a/alib2data/src/string/LinearString.cpp +++ b/alib2data/src/string/LinearString.cpp @@ -8,6 +8,7 @@ #include "LinearString.h" #include "Epsilon.h" #include "../tree/ranked/PrefixRankedTree.h" +#include "../tree/ranked/PrefixRankedBarTree.h" #include "../exception/AlibException.h" #include <sstream> @@ -58,6 +59,14 @@ LinearString::LinearString ( const tree::PrefixRankedTree & tree ) { this->m_Data.push_back ( alphabet::Symbol ( symbol ) ); } +LinearString::LinearString ( const tree::PrefixRankedBarTree & tree ) { + for ( const alphabet::RankedSymbol & symbol : tree.getAlphabet ( ) ) + this->alphabet.insert ( alphabet::Symbol ( std::move ( symbol ) ) ); + + for ( const alphabet::RankedSymbol & symbol : tree.getContent ( ) ) + this->m_Data.push_back ( alphabet::Symbol ( symbol ) ); +} + StringBase * LinearString::clone ( ) const { return new LinearString ( * this ); } @@ -157,6 +166,7 @@ xmlApi < alib::Object >::ParserRegister < string::LinearString > linearStringPar auto LinearStringFromEpsilon = castApi::CastRegister < string::LinearString, string::Epsilon > ( ); auto LinearStringFromPrefixRankedTree = castApi::CastRegister < string::LinearString, tree::PrefixRankedTree > ( ); +auto LinearStringFromPrefixRankedBarTree = castApi::CastRegister < string::LinearString, tree::PrefixRankedBarTree > ( ); 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 8b4445c895..b959f58d21 100644 --- a/alib2data/src/string/LinearString.h +++ b/alib2data/src/string/LinearString.h @@ -19,6 +19,7 @@ namespace tree { class PrefixRankedTree; +class PrefixRankedBarTree; } namespace string { @@ -35,6 +36,7 @@ class LinearString : public StringBase, public StringAlphabet { public: explicit LinearString ( ); explicit LinearString ( const tree::PrefixRankedTree & tree ); + explicit LinearString ( const tree::PrefixRankedBarTree & 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