diff --git a/alib2data/src/string/LinearString.cpp b/alib2data/src/string/LinearString.cpp index c9230625ea5e22d4ae3b7ca234138e787c3d1225..86f1ecdd864173b3c9896cbd59727a6e552590c4 100644 --- a/alib2data/src/string/LinearString.cpp +++ b/alib2data/src/string/LinearString.cpp @@ -22,17 +22,6 @@ static auto LinearStringFromString = registration::CastRegister < string::Linear static auto LinearStringFromEpsilon = registration::CastRegister < string::LinearString < >, string::Epsilon < > > ( ); -static auto LinearStringFromPostfixRankedTree = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PostfixRankedTree < > > ( ); - -static auto LinearStringFromPrefixBarTree = registration::CastRegister < string::LinearString < >, tree::PrefixBarTree < > > ( ); - -static auto LinearStringFromPrefixRankedTree = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PrefixRankedTree < > > ( ); -static auto LinearStringFromPrefixRankedPattern = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PrefixRankedPattern < > > ( ); -static auto LinearStringFromPrefixRankedNonlinearPattern = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PrefixRankedNonlinearPattern < > > ( ); -static auto LinearStringFromPrefixRankedBarTree = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PrefixRankedBarTree < > > ( ); -static auto LinearStringFromPrefixRankedBarPattern = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PrefixRankedBarPattern < > > ( ); -static auto LinearStringFromPrefixRankedBarNonlinearPattern = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PrefixRankedBarNonlinearPattern < > > ( ); - static auto LinearStringSet = registration::SetRegister < string::LinearString < > > ( ); static auto valuePrinter = registration::ValuePrinterRegister < string::LinearString < > > ( ); diff --git a/alib2data/src/string/LinearString.h b/alib2data/src/string/LinearString.h index 0802f1e5a1c8b84a9d15e9f3e617c2d9401c0cad..5f570ada38fc671fbb3fa7647462689a6713ccea 100644 --- a/alib2data/src/string/LinearString.h +++ b/alib2data/src/string/LinearString.h @@ -37,8 +37,6 @@ #include <exception/CommonException.h> #include <alphabet/common/SymbolNormalize.h> -#include <tree/TreeFeatures.h> - #include <core/normalize.hpp> namespace string { @@ -69,90 +67,6 @@ public: */ explicit LinearString ( ); - /** - * \brief Creates a new instance of the string from a linear representation of a tree - * - * \tparam TreeSymbolType the symbol type of the tree - * \tparam TreeRankType the rank type of the tree - * - * \param tree the content of the string from tree in linear representation - */ - template < class TreeSymbolType, class TreeRankType > - explicit LinearString ( const tree::PrefixRankedTree < TreeSymbolType, TreeRankType > & tree ); - - /** - * \brief Creates a new instance of the string from a linear representation of a tree - * - * \tparam TreeSymbolType the symbol type of the tree - * \tparam TreeRankType the rank type of the tree - * - * \param tree the content of the string from tree in linear representation - */ - template < class TreeSymbolType, class TreeRankType > - explicit LinearString ( const tree::PrefixRankedPattern < TreeSymbolType, TreeRankType > & tree ); - - /** - * \brief Creates a new instance of the string from a linear representation of a tree - * - * \tparam TreeSymbolType the symbol type of the tree - * \tparam TreeRankType the rank type of the tree - * - * \param tree the content of the string from tree in linear representation - */ - template < class TreeSymbolType, class TreeRankType > - explicit LinearString ( const tree::PrefixRankedNonlinearPattern < TreeSymbolType, TreeRankType > & tree ); - - /** - * \brief Creates a new instance of the string from a linear representation of a tree - * - * \tparam TreeSymbolType the symbol type of the tree - * \tparam TreeRankType the rank type of the tree - * - * \param tree the content of the string from tree in linear representation - */ - template < class TreeSymbolType, class TreeRankType > - explicit LinearString ( const tree::PrefixRankedBarTree < TreeSymbolType, TreeRankType > & tree ); - - /** - * \brief Creates a new instance of the string from a linear representation of a tree - * - * \tparam TreeSymbolType the symbol type of the tree - * \tparam TreeRankType the rank type of the tree - * - * \param tree the content of the string from tree in linear representation - */ - template < class TreeSymbolType, class TreeRankType > - explicit LinearString ( const tree::PrefixRankedBarPattern < TreeSymbolType, TreeRankType > & tree ); - - /** - * \brief Creates a new instance of the string from a linear representation of a tree - * - * \tparam TreeSymbolType the symbol type of the tree - * \tparam TreeRankType the rank type of the tree - * - * \param tree the content of the string from tree in linear representation - */ - template < class TreeSymbolType, class TreeRankType > - explicit LinearString ( const tree::PrefixRankedBarNonlinearPattern < TreeSymbolType, TreeRankType > & tree ); - - /** - * \brief Creates a new instance of the string from a linear representation of a tree - * - * \param tree the content of the string from tree in linear representation - */ - explicit LinearString ( const tree::PrefixBarTree < SymbolType > & tree ); - - /** - * \brief Creates a new instance of the string from a linear representation of a tree - * - * \tparam TreeSymbolType the symbol type of the tree - * \tparam TreeRankType the rank type of the tree - * - * \param tree the content of the string from tree in linear representation - */ - template < class TreeSymbolType, class TreeRankType > - explicit LinearString ( const tree::PostfixRankedTree < TreeSymbolType, TreeRankType > & tree ); - /** * \brief Creates a new instance of the string with a concrete alphabet and content. * @@ -305,18 +219,6 @@ public: } /* namespace string */ #include "Epsilon.h" -#include "../tree/ranked/PrefixRankedTree.h" -#include "../tree/ranked/PrefixRankedPattern.h" -#include "../tree/ranked/PrefixRankedNonlinearPattern.h" -#include "../tree/ranked/PrefixRankedBarTree.h" -#include "../tree/ranked/PrefixRankedBarPattern.h" -#include "../tree/ranked/PrefixRankedBarNonlinearPattern.h" - -#include "../tree/unranked/PrefixBarTree.h" - -#include "../tree/ranked/PostfixRankedTree.h" - -#include "../tree/common/TreeAuxiliary.h" namespace string { @@ -345,45 +247,6 @@ template < class SymbolType > LinearString < SymbolType >::LinearString(const Epsilon < SymbolType > & epsilon) : LinearString ( epsilon.getAlphabet( ), ext::vector < SymbolType > ( ) ) { } -template < class SymbolType > -template < class TreeSymbolType, class TreeRankType > -LinearString < SymbolType >::LinearString ( const tree::PrefixRankedTree < TreeSymbolType, TreeRankType > & tree ) : LinearString ( tree.getAlphabet ( ), tree.getContent ( ) ) { -} - -template < class SymbolType > -template < class TreeSymbolType, class TreeRankType > -LinearString < SymbolType >::LinearString ( const tree::PrefixRankedPattern < TreeSymbolType, TreeRankType > & tree ) : LinearString ( tree.getAlphabet ( ), tree.getContent ( ) ) { -} - -template < class SymbolType > -template < class TreeSymbolType, class TreeRankType > -LinearString < SymbolType >::LinearString ( const tree::PrefixRankedNonlinearPattern < TreeSymbolType, TreeRankType > & tree ) : LinearString ( tree.getAlphabet ( ), tree.getContent ( ) ) { -} - -template < class SymbolType > -template < class TreeSymbolType, class TreeRankType > -LinearString < SymbolType >::LinearString ( const tree::PrefixRankedBarTree < TreeSymbolType, TreeRankType > & tree ) : LinearString ( tree.getAlphabet ( ), tree.getContent ( ) ) { -} - -template < class SymbolType > -template < class TreeSymbolType, class TreeRankType > -LinearString < SymbolType >::LinearString ( const tree::PrefixRankedBarPattern < TreeSymbolType, TreeRankType > & tree ) : LinearString ( tree.getAlphabet ( ), tree.getContent ( ) ) { -} - -template < class SymbolType > -template < class TreeSymbolType, class TreeRankType > -LinearString < SymbolType >::LinearString ( const tree::PrefixRankedBarNonlinearPattern < TreeSymbolType, TreeRankType > & tree ) : LinearString ( tree.getAlphabet ( ), tree.getContent ( ) ) { -} - -template < class SymbolType > -LinearString < SymbolType >::LinearString ( const tree::PrefixBarTree < SymbolType > & tree ) : LinearString ( tree.getAlphabet ( ), tree.getContent ( ) ) { -} - -template < class SymbolType > -template < class TreeSymbolType, class TreeRankType > -LinearString < SymbolType >::LinearString ( const tree::PostfixRankedTree < TreeSymbolType, TreeRankType > & tree ) : LinearString ( tree.getAlphabet ( ), tree.getContent ( ) ) { -} - template < class SymbolType > StringBase * LinearString < SymbolType >::clone ( ) const { return new LinearString ( * this ); diff --git a/alib2data/src/tree/ranked/PostfixRankedTree.cpp b/alib2data/src/tree/ranked/PostfixRankedTree.cpp index b542c06eebfe959ac57f3ad6f5baddd23694aebf..5b5ee74ffec97d2a9fbf5c72332ff84de3317798 100644 --- a/alib2data/src/tree/ranked/PostfixRankedTree.cpp +++ b/alib2data/src/tree/ranked/PostfixRankedTree.cpp @@ -28,4 +28,6 @@ static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, t static auto PostfixRankedTreeFromRankedTree = registration::CastRegister < tree::PostfixRankedTree < >, tree::RankedTree < > > ( ); +static auto LinearStringFromPostfixRankedTree = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PostfixRankedTree < > > ( ); + } /* namespace */ diff --git a/alib2data/src/tree/ranked/PostfixRankedTree.h b/alib2data/src/tree/ranked/PostfixRankedTree.h index 0b7fc0b9af6c489cc5e98f3f6ca7d2af0a4100f3..f4c5baa863ef6ed65c6d7cf96313ece1ee5e8f3d 100644 --- a/alib2data/src/tree/ranked/PostfixRankedTree.h +++ b/alib2data/src/tree/ranked/PostfixRankedTree.h @@ -47,6 +47,8 @@ #include <core/normalize.hpp> +#include <string/LinearString.h> + namespace tree { class GeneralAlphabet; @@ -232,6 +234,15 @@ public: * Type of normalized tree. */ typedef PostfixRankedTree < > normalized_type; + + /** + * \brief Creates a new instance of the string from a linear representation of a tree + * + * \returns tree casted to string + */ + explicit operator string::LinearString < common::ranked_symbol < SymbolType, RankType > > ( ) const { + return string::LinearString < common::ranked_symbol < SymbolType, RankType > > ( getAlphabet ( ), getContent ( ) ); + } }; } /* namespace tree */ diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp index f1dc9738575a30476f10810646e155666122ea97..6103320e72042b2c3fd2646fa71614731f7f01e6 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp @@ -32,4 +32,6 @@ static auto PrefixRankedBarNonlinearPatternFromRankedNonlinearPattern = registra static auto PrefixRankedBarNonlinearPatternFromPrefixRankedBarTree = registration::CastRegister < tree::PrefixRankedBarNonlinearPattern < >, tree::PrefixRankedBarTree < > > ( ); static auto PrefixRankedBarNonlinearPatternFromPrefixRankedBarPattern = registration::CastRegister < tree::PrefixRankedBarNonlinearPattern < >, tree::PrefixRankedBarPattern < > > ( ); +static auto LinearStringFromPrefixRankedBarNonlinearPattern = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PrefixRankedBarNonlinearPattern < > > ( ); + } /* namespace */ diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h index a342420eec1b29b545e4c57acc316f97f041c0f0..b2cc50e939b5805bfab8bf08771ac21ae7b1f719 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h +++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h @@ -51,6 +51,8 @@ #include <core/normalize.hpp> +#include <string/LinearString.h> + namespace tree { class GeneralAlphabet; @@ -400,6 +402,15 @@ public: * Type of normalized pattern. */ typedef PrefixRankedBarNonlinearPattern < > normalized_type; + + /** + * \brief Creates a new instance of the string from a linear representation of a tree + * + * \returns tree casted to string + */ + explicit operator string::LinearString < common::ranked_symbol < SymbolType, RankType > > ( ) const { + return string::LinearString < common::ranked_symbol < SymbolType, RankType > > ( getAlphabet ( ), getContent ( ) ); + } }; } /* namespace tree */ diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp index 7ef91c4abccc6abb555ec8467558cb93191a0f7f..fe72f8c47371e69d3380a639c7e7aec470e24e6b 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp @@ -29,4 +29,6 @@ static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, t static auto PrefixRankedBarPatternFromRankedPattern = registration::CastRegister < tree::PrefixRankedBarPattern < >, tree::RankedPattern < > > ( ); static auto PrefixRankedBarPatternFromPrefixRankedBarTree = registration::CastRegister < tree::PrefixRankedBarPattern < >, tree::PrefixRankedBarTree < > > ( ); +static auto LinearStringFromPrefixRankedBarPattern = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PrefixRankedBarPattern < > > ( ); + } /* namespace */ diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h index cb9fde40f5a00458027449adcc644265e94f5935..c4b820a7b505fd676d88ead54042d4d405ffff74 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h +++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h @@ -51,6 +51,8 @@ #include <core/normalize.hpp> +#include <string/LinearString.h> + namespace tree { class GeneralAlphabet; @@ -329,6 +331,15 @@ public: * Type of normalized pattern. */ typedef PrefixRankedBarPattern < > normalized_type; + + /** + * \brief Creates a new instance of the string from a linear representation of a tree + * + * \returns tree casted to string + */ + explicit operator string::LinearString < common::ranked_symbol < SymbolType, RankType > > ( ) const { + return string::LinearString < common::ranked_symbol < SymbolType, RankType > > ( getAlphabet ( ), getContent ( ) ); + } }; } /* namespace tree */ diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp index 4384f21679d219a8bec60e905b4c0eb9f98a883c..9d416167ab74e4516385a7525266300db9a1ecc2 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp @@ -28,4 +28,6 @@ static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, t static auto PrefixRankedBarTreeFromRankedTree = registration::CastRegister < tree::PrefixRankedBarTree < >, tree::RankedTree < > > ( ); +static auto LinearStringFromPrefixRankedBarTree = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PrefixRankedBarTree < > > ( ); + } /* namespace */ diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/ranked/PrefixRankedBarTree.h index bc93fd2a3db1ddad5c8e1701292a5d3a3e10f5ac..b40b2b0d0129a9b3180d0510002dc12eb03e35c7 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h +++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h @@ -49,6 +49,8 @@ #include <core/normalize.hpp> +#include <string/LinearString.h> + namespace tree { class GeneralAlphabet; @@ -275,6 +277,15 @@ public: * Type of normalized tree. */ typedef PrefixRankedBarTree < > normalized_type; + + /** + * \brief Creates a new instance of the string from a linear representation of a tree + * + * \returns tree casted to string + */ + explicit operator string::LinearString < common::ranked_symbol < SymbolType, RankType > > ( ) const { + return string::LinearString < common::ranked_symbol < SymbolType, RankType > > ( getAlphabet ( ), getContent ( ) ); + } }; } /* namespace tree */ diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp index a8d52048c80daedb6fa64b179c2372056725a711..4d0edd86a63562acc664d07a6316a056011a8a15 100644 --- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp @@ -32,4 +32,6 @@ static auto PrefixRankedNonlinearPatternFromRankedNonlinearPattern = registratio static auto PrefixRankedNonlinearPatternFromPrefixRankedTree = registration::CastRegister < tree::PrefixRankedNonlinearPattern < >, tree::PrefixRankedTree < > > ( ); static auto PrefixRankedNonlinearPatternFromPrefixRankedPattern = registration::CastRegister < tree::PrefixRankedNonlinearPattern < >, tree::PrefixRankedPattern < > > ( ); +static auto LinearStringFromPrefixRankedNonlinearPattern = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PrefixRankedNonlinearPattern < > > ( ); + } /* namespace */ diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h index b9fc4f20aa754595ba55dee0301a1eb8eacee7d4..c376b4d650e0b3e4bba8360e8bb8e3ed2f1911b0 100644 --- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h +++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h @@ -49,6 +49,8 @@ #include <core/normalize.hpp> +#include <string/LinearString.h> + namespace tree { class GeneralAlphabet; @@ -314,6 +316,15 @@ public: * Type of normalized pattern. */ typedef PrefixRankedNonlinearPattern < > normalized_type; + + /** + * \brief Creates a new instance of the string from a linear representation of a tree + * + * \returns tree casted to string + */ + explicit operator string::LinearString < common::ranked_symbol < SymbolType, RankType > > ( ) const { + return string::LinearString < common::ranked_symbol < SymbolType, RankType > > ( getAlphabet ( ), getContent ( ) ); + } }; } /* namespace tree */ diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp index 965a4da08d1ab979efce828010476b3cda62c137..fc190f77e1a958720d7b85fcaa22fc4e1faefa48 100644 --- a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp @@ -29,4 +29,6 @@ static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, t static auto PrefixRankedPatternFromRankedPattern = registration::CastRegister < tree::PrefixRankedPattern < >, tree::RankedPattern < > > ( ); static auto PrefixRankedPatternFromPrefixRankedTree = registration::CastRegister < tree::PrefixRankedPattern < >, tree::PrefixRankedTree < > > ( ); +static auto LinearStringFromPrefixRankedPattern = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PrefixRankedPattern < > > ( ); + } /* namespace */ diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.h b/alib2data/src/tree/ranked/PrefixRankedPattern.h index 9365cddebe8255d2ab7b01cbf3830983495da325..9d7a893d9db9948f2c8c2e78711abea7703419bd 100644 --- a/alib2data/src/tree/ranked/PrefixRankedPattern.h +++ b/alib2data/src/tree/ranked/PrefixRankedPattern.h @@ -49,6 +49,8 @@ #include <core/normalize.hpp> +#include <string/LinearString.h> + namespace tree { class GeneralAlphabet; @@ -263,6 +265,15 @@ public: * Type of normalized pattern. */ typedef PrefixRankedPattern < > normalized_type; + + /** + * \brief Creates a new instance of the string from a linear representation of a tree + * + * \returns tree casted to string + */ + explicit operator string::LinearString < common::ranked_symbol < SymbolType, RankType > > ( ) const { + return string::LinearString < common::ranked_symbol < SymbolType, RankType > > ( getAlphabet ( ), getContent ( ) ); + } }; } /* namespace tree */ diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.cpp b/alib2data/src/tree/ranked/PrefixRankedTree.cpp index f90b1a1c66d6d72133fe568344558a9757185ac7..c4e805b4be6f90a922afb23a943af8346fedccb1 100644 --- a/alib2data/src/tree/ranked/PrefixRankedTree.cpp +++ b/alib2data/src/tree/ranked/PrefixRankedTree.cpp @@ -29,4 +29,6 @@ static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, t static auto PrefixRankedTreeFromRankedTree = registration::CastRegister < tree::PrefixRankedTree < >, tree::RankedTree < > > ( ); static auto PrefixRankedTreeFromPostfixRankedTree = registration::CastRegister < tree::PrefixRankedTree < >, tree::PostfixRankedTree < > > ( ); +static auto LinearStringFromPrefixRankedTree = registration::CastRegister < string::LinearString < common::ranked_symbol < > >, tree::PrefixRankedTree < > > ( ); + } /* namespace */ diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.h b/alib2data/src/tree/ranked/PrefixRankedTree.h index fecc3c8247fc662f433b64c0c9f45c06aeef828e..a6036182e5180f4feed539c56413b221d89d443a 100644 --- a/alib2data/src/tree/ranked/PrefixRankedTree.h +++ b/alib2data/src/tree/ranked/PrefixRankedTree.h @@ -46,6 +46,8 @@ #include <core/normalize.hpp> +#include <string/LinearString.h> + namespace tree { class GeneralAlphabet; @@ -238,6 +240,15 @@ public: * Type of normalized tree. */ typedef PrefixRankedTree < > normalized_type; + + /** + * \brief Creates a new instance of the string from a linear representation of a tree + * + * \returns tree casted to string + */ + explicit operator string::LinearString < common::ranked_symbol < SymbolType, RankType > > ( ) const { + return string::LinearString < common::ranked_symbol < SymbolType, RankType > > ( getAlphabet ( ), getContent ( ) ); + } }; } /* namespace tree */ diff --git a/alib2data/src/tree/unranked/PrefixBarTree.cpp b/alib2data/src/tree/unranked/PrefixBarTree.cpp index 0b5bc9eb2d0dacd4df29c78b94d6a588ce25212c..19b1c14024f93ce5b38e2112f4721e3b8fa70786 100644 --- a/alib2data/src/tree/unranked/PrefixBarTree.cpp +++ b/alib2data/src/tree/unranked/PrefixBarTree.cpp @@ -28,4 +28,6 @@ static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, t static auto PrefixBarTreeFromUnrankedTree = registration::CastRegister < tree::PrefixBarTree < >, tree::UnrankedTree < > > ( ); +static auto LinearStringFromPrefixBarTree = registration::CastRegister < string::LinearString < >, tree::PrefixBarTree < > > ( ); + } /* namespace */ diff --git a/alib2data/src/tree/unranked/PrefixBarTree.h b/alib2data/src/tree/unranked/PrefixBarTree.h index 67eab3f383664195c7d0289a9222455eabbecd66..44d285ad434f3c791d9644d9ddb6bb179d671605 100644 --- a/alib2data/src/tree/unranked/PrefixBarTree.h +++ b/alib2data/src/tree/unranked/PrefixBarTree.h @@ -47,6 +47,8 @@ #include <core/normalize.hpp> +#include <string/LinearString.h> + namespace tree { class GeneralAlphabet; @@ -263,6 +265,15 @@ public: * Type of normalized tree. */ typedef PrefixBarTree < > normalized_type; + + /** + * \brief Creates a new instance of the string from a linear representation of a tree + * + * \returns tree casted to string + */ + explicit operator string::LinearString < SymbolType > ( ) const { + return string::LinearString < SymbolType > ( getAlphabet ( ), getContent ( ) ); + } }; } /* namespace tree */ diff --git a/alib2raw/src/string/raw/LinearString.h b/alib2raw/src/string/raw/LinearString.h index 1a2bafff06f5fa9154312c73202a0ed02081701e..b572a2b3adf6bee589d54d4508a5a75d0b214e47 100644 --- a/alib2raw/src/string/raw/LinearString.h +++ b/alib2raw/src/string/raw/LinearString.h @@ -11,6 +11,8 @@ #include <string/LinearString.h> #include <core/rawApi.hpp> +#include <iterator> + namespace core { template < class SymbolType >