From 4a9360bafa431ffbc9875175dc5955222a0d22d5 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Tue, 16 Oct 2018 11:30:38 +0200
Subject: [PATCH] remove not needed ranked_symbol wrapper

---
 aaccess2/src/aaccess.cpp                      |   4 +-
 aarbology2/src/aarbology.cpp                  |   6 +-
 .../src/arbology/exact/ExactPatternMatch.h    |   2 -
 .../convert/ToPostfixPushdownAutomaton.cpp    |  10 +-
 ...oPostfixPushdownAutomatonGlushkovNaive.cpp |  10 +-
 .../tree/properties/BadCharacterShiftTable.h  |   1 -
 .../tree/properties/LastVariableOffsetBack.h  |   1 -
 .../QuickSearchBadCharacterShiftTable.h       |   1 -
 alib2data/src/PrimitiveRegistrator.cpp        |   6 +-
 alib2data/src/alphabet/RankedSymbol.cpp       |  15 --
 alib2data/src/alphabet/RankedSymbol.h         | 156 ------------------
 alib2data/src/alphabet/VariablesBarSymbol.h   |   7 +-
 alib2data/src/alphabet/WildcardSymbol.h       |   7 +-
 .../src/alphabet/common/SymbolNormalize.h     |  11 ++
 alib2data/src/alphabet/xml/RankedSymbol.cpp   |   6 +-
 alib2data/src/alphabet/xml/RankedSymbol.h     |  30 +---
 alib2data/src/common/ranked_symbol.hpp        |   6 +-
 .../arbology/CompressedBitParallelTreeIndex.h |   2 +-
 .../src/indexes/arbology/FullAndLinearIndex.h |   2 +-
 .../NonlinearCompressedBitParallelTreeIndex.h |   2 +-
 .../arbology/NonlinearFullAndLinearIndex.h    |   2 +-
 alib2data/src/rte/formal/FormalRTE.h          |   1 +
 .../src/rte/xml/common/RTEToXmlComposer.h     |   3 +-
 alib2data/src/tree/common/TreeNormalize.h     |   2 +-
 alib2data/test-src/alphabet/SymbolTest.cpp    |   5 +-
 alib2str/src/alphabet/string/RankedSymbol.cpp |   6 +-
 alib2str/src/alphabet/string/RankedSymbol.h   |  24 +--
 27 files changed, 49 insertions(+), 279 deletions(-)
 delete mode 100644 alib2data/src/alphabet/RankedSymbol.cpp
 delete mode 100644 alib2data/src/alphabet/RankedSymbol.h

diff --git a/aaccess2/src/aaccess.cpp b/aaccess2/src/aaccess.cpp
index 963c26eb05..2b576979f0 100644
--- a/aaccess2/src/aaccess.cpp
+++ b/aaccess2/src/aaccess.cpp
@@ -144,7 +144,7 @@ int main ( int argc, char * argv[] ) {
 		}
 		if ( collection.isSet ( )
 		&& ( operation.getValue ( ) == "add" || operation.getValue ( ) == "remove" ) && ( treeInput.isSet ( ) ) ) {
-			parser = cli::Parser ( cli::Lexer ( "execute < :set @ranked_symbol #collection > $argument" ) );
+			parser = cli::Parser ( cli::Lexer ( "execute < :set @RankedSymbol #collection > $argument" ) );
 			parser.parse ( )->run ( environment );
 		}
 
@@ -155,7 +155,7 @@ int main ( int argc, char * argv[] ) {
 			parser.parse ( )->run ( environment );
 		}
 		if ( element.isSet ( ) && ( operation.getValue ( ) == "add" || operation.getValue ( ) == "remove" ) && ( treeInput.isSet ( ) ) ) {
-			parser = cli::Parser ( cli::Lexer ( "execute < :ranked_symbol #element > $argument" ) );
+			parser = cli::Parser ( cli::Lexer ( "execute < :RankedSymbol #element > $argument" ) );
 			parser.parse ( )->run ( environment );
 		}
 
diff --git a/aarbology2/src/aarbology.cpp b/aarbology2/src/aarbology.cpp
index d0561f892f..8b8fc80a88 100644
--- a/aarbology2/src/aarbology.cpp
+++ b/aarbology2/src/aarbology.cpp
@@ -153,7 +153,7 @@ int main ( int argc, char * argv[] ) {
 				input = subtreeWildcardInput.getValue ( );
 
 			environment.setBinding ( "inputSubtreeWildcard", input );
-			cli::Parser parser ( cli::Lexer ( "execute <:ranked_symbol #inputSubtreeWildcard > $subtreeWildcard" ) );
+			cli::Parser parser ( cli::Lexer ( "execute <:RankedSymbol #inputSubtreeWildcard > $subtreeWildcard" ) );
 			parser.parse ( )->run ( environment );
 		}
 
@@ -165,7 +165,7 @@ int main ( int argc, char * argv[] ) {
 				input = nonlinearVariablesInput.getValue ( );
 
 			environment.setBinding ( "inputNonlinearVariables", input );
-			cli::Parser parser ( cli::Lexer ( "execute <:set @ranked_symbol #inputNonlinearVariables > $nonlinearVariables" ) );
+			cli::Parser parser ( cli::Lexer ( "execute <:set @RankedSymbol #inputNonlinearVariables > $nonlinearVariables" ) );
 			parser.parse ( )->run ( environment );
 		}
 
@@ -184,7 +184,7 @@ int main ( int argc, char * argv[] ) {
 					input = variablesBarInput.getValue ( );
 
 				environment.setBinding ( "inputVariablesBar", input );
-				cli::Parser parser ( cli::Lexer ( "execute <:ranked_symbol #inputVariablesBar > $variablesBar" ) );
+				cli::Parser parser ( cli::Lexer ( "execute <:RankedSymbol #inputVariablesBar > $variablesBar" ) );
 				parser.parse ( )->run ( environment );
 			}
 		}
diff --git a/alib2algo/src/arbology/exact/ExactPatternMatch.h b/alib2algo/src/arbology/exact/ExactPatternMatch.h
index 01733ca91f..4961a83a9d 100644
--- a/alib2algo/src/arbology/exact/ExactPatternMatch.h
+++ b/alib2algo/src/arbology/exact/ExactPatternMatch.h
@@ -13,8 +13,6 @@
 #include <alib/deque>
 #include <alib/foreach>
 
-#include <alphabet/RankedSymbol.h>
-
 #include <tree/ranked/RankedTree.h>
 #include <tree/ranked/RankedPattern.h>
 #include <tree/ranked/RankedNonlinearPattern.h>
diff --git a/alib2algo/src/automaton/convert/ToPostfixPushdownAutomaton.cpp b/alib2algo/src/automaton/convert/ToPostfixPushdownAutomaton.cpp
index 5c103461b1..814a8666d6 100644
--- a/alib2algo/src/automaton/convert/ToPostfixPushdownAutomaton.cpp
+++ b/alib2algo/src/automaton/convert/ToPostfixPushdownAutomaton.cpp
@@ -21,8 +21,6 @@
 
 #include <registration/AlgoRegistration.hpp>
 
-#include <alphabet/RankedSymbol.h>
-
 namespace automaton {
 
 namespace convert {
@@ -31,7 +29,7 @@ automaton::DPDA < > ToPostfixPushdownAutomaton::convert ( const automaton::DFTA
 	automaton::DPDA < > automaton(label::InitialStateLabel::instance < DefaultStateType > ( ), alphabet::BottomOfTheStackSymbol::instance < DefaultSymbolType > ( ));
 
 	for (const auto & rankedSymbol : dfta.getInputAlphabet()) {
-		automaton.addInputSymbol(DefaultSymbolType ( alphabet::RankedSymbol < > ( rankedSymbol ) ));
+		automaton.addInputSymbol ( DefaultSymbolType ( rankedSymbol ) );
 	}
 	automaton.addInputSymbol(alphabet::EndSymbol::instance < DefaultSymbolType > ( ));
 
@@ -46,7 +44,7 @@ automaton::DPDA < > ToPostfixPushdownAutomaton::convert ( const automaton::DFTA
 			pop.push_back(state);
 		}
 		ext::vector<DefaultSymbolType> push (1, transition.second);
-		automaton.addTransition(automaton.getInitialState(), DefaultSymbolType(alphabet::RankedSymbol<>(transition.first.first)), pop, automaton.getInitialState(), push);
+		automaton.addTransition(automaton.getInitialState(), DefaultSymbolType ( common::ranked_symbol < > ( transition.first.first ) ), pop, automaton.getInitialState(), push);
 	}
 
 	auto finalPDAState = label::FinalStateLabel::instance < DefaultStateType > ( );
@@ -66,7 +64,7 @@ automaton::NPDA < > ToPostfixPushdownAutomaton::convert ( const automaton::NFTA
 	automaton::NPDA < > automaton(label::InitialStateLabel::instance < DefaultStateType > ( ), alphabet::BottomOfTheStackSymbol::instance < DefaultSymbolType > ( ));
 
 	for (const auto & rankedSymbol : nfta.getInputAlphabet()) {
-		automaton.addInputSymbol(DefaultSymbolType ( alphabet::RankedSymbol < > ( rankedSymbol ) ));
+		automaton.addInputSymbol ( DefaultSymbolType ( rankedSymbol ) );
 	}
 	automaton.addInputSymbol(alphabet::EndSymbol::instance < DefaultSymbolType > ( ));
 
@@ -82,7 +80,7 @@ automaton::NPDA < > ToPostfixPushdownAutomaton::convert ( const automaton::NFTA
 				pop.push_back(state);
 			}
 			ext::vector <DefaultSymbolType> push(1, toState);
-			automaton.addTransition(automaton.getInitialState(), DefaultSymbolType(alphabet::RankedSymbol<>(transition.first.first)), pop, automaton.getInitialState(), push);
+			automaton.addTransition(automaton.getInitialState(), DefaultSymbolType ( common::ranked_symbol < > ( transition.first.first ) ), pop, automaton.getInitialState(), push);
 		}
 	}
 
diff --git a/alib2algo/src/rte/convert/ToPostfixPushdownAutomatonGlushkovNaive.cpp b/alib2algo/src/rte/convert/ToPostfixPushdownAutomatonGlushkovNaive.cpp
index f947e4569e..fd25e1808b 100644
--- a/alib2algo/src/rte/convert/ToPostfixPushdownAutomatonGlushkovNaive.cpp
+++ b/alib2algo/src/rte/convert/ToPostfixPushdownAutomatonGlushkovNaive.cpp
@@ -23,7 +23,7 @@ namespace rte {
 namespace convert {
 
 ext::vector < DefaultSymbolType > phi ( const ext::vector < common::ranked_symbol < > > & follow ) {
-	return ext::transform < DefaultSymbolType > ( follow, []( const common::ranked_symbol < > & symbol ) { return DefaultSymbolType ( alphabet::RankedSymbol < > ( symbol ) ); } );
+	return ext::transform < DefaultSymbolType > ( follow, []( const common::ranked_symbol < > & symbol ) { return DefaultSymbolType ( symbol ); } );
 }
 
 bool isSubstSymbolPresent ( const ext::set < common::ranked_symbol < > > & container, const ext::set < common::ranked_symbol < > > & substAlphabet ) {
@@ -73,7 +73,7 @@ automaton::NPDA < > ToPostfixPushdownAutomatonGlushkovNaive::convert ( const rte
 
 	 // step 4; create pushdown store alphabet; it consists of elements of indexed RTE alphabet and BotS symbol
 	for ( const common::ranked_symbol < > & symb : indexedRTE.getAlphabet ( ) )
-		automaton.addPushdownStoreSymbol ( DefaultSymbolType ( alphabet::RankedSymbol < > ( symb ) ) );
+		automaton.addPushdownStoreSymbol ( DefaultSymbolType ( symb ) );
 
 	 /* DEBUG */
 	if ( common::GlobalData::verbose ) {
@@ -111,19 +111,19 @@ automaton::NPDA < > ToPostfixPushdownAutomatonGlushkovNaive::convert ( const rte
 
 	for ( const common::ranked_symbol < > & symb : indexedRTE.getAlphabet ( ) ) {
 		if ( symb.getRank ( ) == unsigned ( 0 ) )
-			automaton.addTransition ( q, rte::GlushkovIndexate::getSymbolFromGlushkovPair ( symb ).getSymbol ( ), { }, q, { DefaultSymbolType ( alphabet::RankedSymbol < > ( symb ) ) } );
+			automaton.addTransition ( q, rte::GlushkovIndexate::getSymbolFromGlushkovPair ( symb ).getSymbol ( ), { }, q, { DefaultSymbolType ( symb ) } );
 		else
 			for ( const ext::vector < common::ranked_symbol < > > & follow : followSet[symb] ) {
 				ext::vector < DefaultSymbolType > fstring = phi ( follow );
 				std::reverse ( fstring.begin ( ), fstring.end ( ) );
-				automaton.addTransition ( q, rte::GlushkovIndexate::getSymbolFromGlushkovPair ( symb ).getSymbol ( ), fstring, q, { DefaultSymbolType ( alphabet::RankedSymbol < > ( symb ) ) } );
+				automaton.addTransition ( q, rte::GlushkovIndexate::getSymbolFromGlushkovPair ( symb ).getSymbol ( ), fstring, q, { DefaultSymbolType ( symb ) } );
 			}
 
 	}
 
 	for ( const common::ranked_symbol < > & symb : firstSet ) {
 		ext::vector < DefaultSymbolType > pop;
-		pop.push_back ( DefaultSymbolType ( alphabet::RankedSymbol < > ( symb ) ) );
+		pop.push_back ( DefaultSymbolType ( symb ) );
 		pop.push_back ( alphabet::BottomOfTheStackSymbol::instance < DefaultSymbolType > ( ) );
 		automaton.addTransition ( q, alphabet::EndSymbol::instance < DefaultSymbolType > ( ), pop, f, { } );
 	}
diff --git a/alib2algo/src/tree/properties/BadCharacterShiftTable.h b/alib2algo/src/tree/properties/BadCharacterShiftTable.h
index 388f8b91e7..6af59ee930 100644
--- a/alib2algo/src/tree/properties/BadCharacterShiftTable.h
+++ b/alib2algo/src/tree/properties/BadCharacterShiftTable.h
@@ -8,7 +8,6 @@
 #ifndef _ARBOLOGY_BAD_CHARACTER_SHIFT_TABLE_H_
 #define _ARBOLOGY_BAD_CHARACTER_SHIFT_TABLE_H_
 
-#include <alphabet/RankedSymbol.h>
 #include <tree/ranked/PrefixRankedBarPattern.h>
 #include <tree/ranked/PrefixRankedBarNonlinearPattern.h>
 
diff --git a/alib2algo/src/tree/properties/LastVariableOffsetBack.h b/alib2algo/src/tree/properties/LastVariableOffsetBack.h
index a498c3d37d..3112945c3f 100644
--- a/alib2algo/src/tree/properties/LastVariableOffsetBack.h
+++ b/alib2algo/src/tree/properties/LastVariableOffsetBack.h
@@ -8,7 +8,6 @@
 #ifndef _LAST_VARIABLE_OFFSET_BACK_H_
 #define _LAST_VARIABLE_OFFSET_BACK_H_
 
-#include <alphabet/RankedSymbol.h>
 #include <tree/ranked/PrefixRankedBarPattern.h>
 #include <tree/ranked/PrefixRankedBarNonlinearPattern.h>
 
diff --git a/alib2algo/src/tree/properties/QuickSearchBadCharacterShiftTable.h b/alib2algo/src/tree/properties/QuickSearchBadCharacterShiftTable.h
index 241be238a1..a2beb4298a 100644
--- a/alib2algo/src/tree/properties/QuickSearchBadCharacterShiftTable.h
+++ b/alib2algo/src/tree/properties/QuickSearchBadCharacterShiftTable.h
@@ -8,7 +8,6 @@
 #ifndef _ARBOLOGY_QUICK_SEARCH_BAD_CHARACTER_SHIFT_TABLE_H_
 #define _ARBOLOGY_QUICK_SEARCH_BAD_CHARACTER_SHIFT_TABLE_H_
 
-#include <alphabet/RankedSymbol.h>
 #include <tree/ranked/PrefixRankedBarPattern.h>
 #include <tree/ranked/PrefixRankedBarNonlinearPattern.h>
 
diff --git a/alib2data/src/PrimitiveRegistrator.cpp b/alib2data/src/PrimitiveRegistrator.cpp
index 5869172282..97e3c56552 100644
--- a/alib2data/src/PrimitiveRegistrator.cpp
+++ b/alib2data/src/PrimitiveRegistrator.cpp
@@ -28,9 +28,8 @@ namespace {
 class PrimitiveRegistrator {
 public:
 	PrimitiveRegistrator ( ) {
-		abstraction::ContainerRegistry::registerSet < common::ranked_symbol < object::Object, unsigned > > ( "ranked_symbol" );
-		abstraction::XmlContainerParserRegistry::registerSet < common::ranked_symbol < object::Object, unsigned > > ( "ranked_symbol" );
-		abstraction::XmlParserRegistry::registerXmlParser < common::ranked_symbol < object::Object, unsigned > > ( "ranked_symbol" );
+		abstraction::ContainerRegistry::registerSet < common::ranked_symbol < object::Object, unsigned > > ( "RankedSymbol" );
+		abstraction::XmlContainerParserRegistry::registerSet < common::ranked_symbol < object::Object, unsigned > > ( "RankedSymbol" );
 		abstraction::XmlComposerRegistry::registerXmlComposer < ext::set < common::ranked_symbol < object::Object, unsigned > > > ( );
 		abstraction::XmlComposerRegistry::registerXmlComposer < common::ranked_symbol < object::Object, unsigned > > ( );
 
@@ -41,7 +40,6 @@ public:
 		abstraction::XmlComposerRegistry::registerXmlComposer < ext::set < string::LinearString < > > > ( );
 
 		core::xmlApi < object::Object >::template registerXmlWriter < ext::set < common::ranked_symbol < object::Object, unsigned > > > ( );
-		core::xmlApi < object::Object >::template registerXmlWriter < common::ranked_symbol < object::Object, unsigned > > ( );
 		core::xmlApi < object::Object >::template registerXmlWriter < ext::pair < ext::set < ext::pair < object::Object, object::Object > >, ext::variant < string::Epsilon < object::Object >, object::Object > > > ( );
 		core::xmlApi < object::Object >::template registerXmlWriter < ext::pair < object::Object, ext::variant < string::Epsilon < object::Object >, object::Object > > > ( );
 	}
diff --git a/alib2data/src/alphabet/RankedSymbol.cpp b/alib2data/src/alphabet/RankedSymbol.cpp
deleted file mode 100644
index 2823d73bb6..0000000000
--- a/alib2data/src/alphabet/RankedSymbol.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * RankedSymbol.cpp
- *
- *  Created on: Apr 10, 2013
- *      Author: Stepan Plachy
- */
-
-#include "RankedSymbol.h"
-#include <registration/ValuePrinterRegistration.hpp>
-
-namespace {
-
-static auto valuePrinter = registration::ValuePrinterRegister < alphabet::RankedSymbol < > > ( );
-
-} /* namespace */
diff --git a/alib2data/src/alphabet/RankedSymbol.h b/alib2data/src/alphabet/RankedSymbol.h
deleted file mode 100644
index 157b9fa542..0000000000
--- a/alib2data/src/alphabet/RankedSymbol.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * RankedSymbol.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: Apr 10, 2013
- *      Author: Stepan Plachy
- */
-
-#ifndef RANKED_SYMBOL_H_
-#define RANKED_SYMBOL_H_
-
-#include "SymbolBase.h"
-#include <common/ranked_symbol.hpp>
-
-#include <core/normalize.hpp>
-#include <alphabet/common/SymbolNormalize.h>
-
-namespace alphabet {
-
-/**
- * \brief
- * Represents the adaptor of ranked symbol to class in symbol hierarchy.
- *
- * \tparam SymbolType used for the symbol part of the ranked symbol
- * \tparam RankType used for the rank part of the ranked symbol
- */
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class RankedSymbol : public SymbolBase, public common::ranked_symbol < SymbolType, RankType > {
-public:
-	/**
-	 * \brief
-	 * The constructors of raw ranked symbol are inherited here
-	 */
-	using common::ranked_symbol < SymbolType, RankType >::ranked_symbol;
-
-	/**
-	 * \brief
-	 * Creates a new instance of the ranked symbol based on a raw ranked symbol
-	 */
-	explicit RankedSymbol ( common::ranked_symbol < SymbolType, RankType > symbol ) : common::ranked_symbol < SymbolType, RankType > ( std::move ( symbol ) ) {
-	}
-
-	/**
-	 * @copydoc base::CommonBase < SymbolBase >::compare ( const SymbolBase & ) const
-	 */
-	virtual int compare ( const SymbolBase & other ) const override {
-		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
-
-		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
-	}
-
-	/**
-	 * The actual compare method
-	 *
-	 * \param other the other instance
-	 *
-	 * \returns the actual relation between two by type same symbols
-	 */
-	int compare ( const RankedSymbol & other ) const;
-
-	/**
-	 * Print this object as raw representation to ostream.
-	 *
-	 * \param out ostream where to print
-	 * \param instance object to print
-	 *
-	 * \returns modified output stream
-	 */
-	friend std::ostream & operator << ( std::ostream & out, const RankedSymbol < SymbolType, RankType > & instance ) {
-		return out << static_cast < const common::ranked_symbol < SymbolType, RankType > & > ( instance );
-	}
-
-	/**
-	 * Casts this instance to as compact as possible string representation.
-	 *
-	 * \returns string representation of the object
-	 */
-	explicit operator std::string ( ) const;
-
-	/**
-	 * @copydoc base::CommonBaseMiddle < SymbolBase >::operator ==
-	 */
-	using SymbolBase::operator ==;
-
-	/**
-	 * @copydoc base::CommonBaseMiddle < SymbolBase >::operator !=
-	 */
-	using SymbolBase::operator !=;
-
-	/**
-	 * @copydoc base::CommonBaseMiddle < SymbolBase >::operator <
-	 */
-	using SymbolBase::operator <;
-
-	/**
-	 * @copydoc base::CommonBaseMiddle < SymbolBase >::operator <=
-	 */
-	using SymbolBase::operator <=;
-
-	/**
-	 * @copydoc base::CommonBaseMiddle < SymbolBase >::operator >
-	 */
-	using SymbolBase::operator >;
-
-	/**
-	 * @copydoc base::CommonBaseMiddle < SymbolBase >::operator >=
-	 */
-	using SymbolBase::operator >=;
-};
-
-template < class SymbolType, class RankType >
-int RankedSymbol < SymbolType, RankType >::compare(const RankedSymbol& other) const {
-	return static_cast < const common::ranked_symbol < SymbolType, RankType > & > ( * this ).compare ( static_cast < const common::ranked_symbol < SymbolType, RankType > & > ( other ) );
-}
-
-template < class SymbolType, class RankType >
-RankedSymbol < SymbolType, RankType >::operator std::string ( ) const {
-	return ( std::string ) static_cast < const common::ranked_symbol < SymbolType, RankType > & > ( * this );
-}
-
-} /* namespace alphabet */
-
-namespace core {
-
-template < class SymbolType, class RankType >
-struct normalize < common::ranked_symbol < SymbolType, RankType > > {
-	static common::ranked_symbol < > eval ( common::ranked_symbol < SymbolType, RankType > && value ) {
-		return alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( value ) );
-	}
-};
-
-template < class SymbolType, class RankType >
-struct normalize < alphabet::RankedSymbol < SymbolType, RankType > > {
-	static alphabet::RankedSymbol < > eval ( alphabet::RankedSymbol < SymbolType, RankType > && value ) {
-		return alphabet::RankedSymbol < > ( normalize < common::ranked_symbol < SymbolType, RankType > >::eval ( std::move ( value ) ) );
-	}
-};
-
-} /* namespace core */
-
-#endif /* RANKED_SYMBOL_H_ */
diff --git a/alib2data/src/alphabet/VariablesBarSymbol.h b/alib2data/src/alphabet/VariablesBarSymbol.h
index 4aa50d4e41..ae68937536 100644
--- a/alib2data/src/alphabet/VariablesBarSymbol.h
+++ b/alib2data/src/alphabet/VariablesBarSymbol.h
@@ -25,7 +25,7 @@
 #define VARIABLES_BAR_SYMBOL_H_
 
 #include "SymbolBase.h"
-#include "RankedSymbol.h"
+#include <common/ranked_symbol.hpp>
 #include <object/Object.h>
 
 namespace alphabet {
@@ -116,11 +116,6 @@ inline common::ranked_symbol < > VariablesBarSymbol::instance < common::ranked_s
 	return common::ranked_symbol < > ( VariablesBarSymbol::instance < DefaultSymbolType > ( ), DefaultRankType ( 0 ) );
 }
 
-template < >
-inline RankedSymbol < > VariablesBarSymbol::instance < RankedSymbol < > > ( ) {
-	return RankedSymbol < > ( VariablesBarSymbol::instance < common::ranked_symbol < > > ( ) );
-}
-
 } /* namespace alphabet */
 
 #endif /* VARIABLES_BAR_SYMBOL_H_ */
diff --git a/alib2data/src/alphabet/WildcardSymbol.h b/alib2data/src/alphabet/WildcardSymbol.h
index 1c90c59325..37b61c540d 100644
--- a/alib2data/src/alphabet/WildcardSymbol.h
+++ b/alib2data/src/alphabet/WildcardSymbol.h
@@ -25,7 +25,7 @@
 #define SUBTREE_WILDCARD_SYMBOL_H_
 
 #include "SymbolBase.h"
-#include "RankedSymbol.h"
+#include <common/ranked_symbol.hpp>
 #include <object/Object.h>
 
 namespace alphabet {
@@ -116,11 +116,6 @@ inline common::ranked_symbol < > WildcardSymbol::instance < common::ranked_symbo
 	return common::ranked_symbol < > ( WildcardSymbol::instance < DefaultSymbolType > ( ), DefaultRankType ( 0 ) );
 }
 
-template < >
-inline RankedSymbol < > WildcardSymbol::instance < RankedSymbol < > > ( ) {
-	return RankedSymbol < > ( WildcardSymbol::instance < common::ranked_symbol < > > ( ) );
-}
-
 } /* namespace alphabet */
 
 #endif /* SUBTREE_WILDCARD_SYMBOL_H_ */
diff --git a/alib2data/src/alphabet/common/SymbolNormalize.h b/alib2data/src/alphabet/common/SymbolNormalize.h
index 4676f623df..73b4f24579 100644
--- a/alib2data/src/alphabet/common/SymbolNormalize.h
+++ b/alib2data/src/alphabet/common/SymbolNormalize.h
@@ -110,4 +110,15 @@ ext::vector < common::ranked_symbol < DefaultSymbolType, DefaultRankType > > Sym
 
 } /* namespace alphabet */
 
+namespace core {
+
+template < class SymbolType, class RankType >
+struct normalize < common::ranked_symbol < SymbolType, RankType > > {
+	static common::ranked_symbol < > eval ( common::ranked_symbol < SymbolType, RankType > && value ) {
+		return alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( value ) );
+	}
+};
+
+} /* namespace core */
+
 #endif /* SYMBOL_NORMALIZE_H_ */
diff --git a/alib2data/src/alphabet/xml/RankedSymbol.cpp b/alib2data/src/alphabet/xml/RankedSymbol.cpp
index 0c026372cb..75fe48d425 100644
--- a/alib2data/src/alphabet/xml/RankedSymbol.cpp
+++ b/alib2data/src/alphabet/xml/RankedSymbol.cpp
@@ -12,9 +12,9 @@
 
 namespace {
 
-static auto xmlWrite = registration::XmlWriterRegister < alphabet::RankedSymbol < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < alphabet::RankedSymbol < > > ( );
+static auto xmlWrite = registration::XmlWriterRegister < common::ranked_symbol < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < common::ranked_symbol < > > ( );
 
-static auto xmlGroup = registration::XmlRegisterTypeInGroup < object::Object, alphabet::RankedSymbol < > > ( );
+static auto xmlGroup = registration::XmlRegisterTypeInGroup < object::Object, common::ranked_symbol < > > ( );
 
 } /* namespace */
diff --git a/alib2data/src/alphabet/xml/RankedSymbol.h b/alib2data/src/alphabet/xml/RankedSymbol.h
index 60c86dae35..a2f1f4f39a 100644
--- a/alib2data/src/alphabet/xml/RankedSymbol.h
+++ b/alib2data/src/alphabet/xml/RankedSymbol.h
@@ -8,7 +8,7 @@
 #ifndef _XML_RANKED_SYMBOL_H_
 #define _XML_RANKED_SYMBOL_H_
 
-#include <alphabet/RankedSymbol.h>
+#include <common/ranked_symbol.hpp>
 #include <core/xmlApi.hpp>
 #include <primitive/xml/Unsigned.h>
 
@@ -51,34 +51,6 @@ void xmlApi < common::ranked_symbol < T, R > >::compose ( ext::deque < sax::Toke
 	output.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
 }
 
-template < typename T, typename R >
-struct xmlApi < alphabet::RankedSymbol < T, R > > {
-	static alphabet::RankedSymbol < T, R > parse ( ext::deque < sax::Token >::iterator & input );
-	static bool first ( const ext::deque < sax::Token >::const_iterator & input );
-	static const std::string & xmlTagName ( );
-	static void compose ( ext::deque < sax::Token > & output, const alphabet::RankedSymbol < T, R > & data );
-};
-
-template < typename T, typename R >
-alphabet::RankedSymbol < T, R > xmlApi < alphabet::RankedSymbol < T, R > >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	return alphabet::RankedSymbol < T, R > ( xmlApi < common::ranked_symbol < T, R > >::parse ( input ) );
-}
-
-template < typename T, typename R >
-bool xmlApi < alphabet::RankedSymbol < T, R > >::first ( const ext::deque < sax::Token >::const_iterator & input ) {
-	return xmlApi < common::ranked_symbol < T, R > >::first ( input );
-}
-
-template < typename T, typename R >
-const std::string & xmlApi < alphabet::RankedSymbol < T, R > >::xmlTagName ( ) {
-	return xmlApi < common::ranked_symbol < T, R > >::xmlTagName ( );
-}
-
-template < typename T, typename R >
-void xmlApi < alphabet::RankedSymbol < T, R > >::compose ( ext::deque < sax::Token > & output, const alphabet::RankedSymbol < T, R > & input ) {
-	xmlApi < common::ranked_symbol < T, R > >::compose ( output, input );
-}
-
 } /* namespace core */
 
 #endif /* _XML_RANKED_SYMBOL_H_ */
diff --git a/alib2data/src/common/ranked_symbol.hpp b/alib2data/src/common/ranked_symbol.hpp
index 8fb01bdee6..29e3655ab4 100644
--- a/alib2data/src/common/ranked_symbol.hpp
+++ b/alib2data/src/common/ranked_symbol.hpp
@@ -8,12 +8,14 @@
 #ifndef RAW_RANKED_SYMBOL_H_
 #define RAW_RANKED_SYMBOL_H_
 
+#include <alib/tuple>
+
+#include <core/normalize.hpp>
 #include <sax/FromXMLParserHelper.h>
+
 #include <common/DefaultSymbolType.h>
 #include <common/DefaultRankType.h>
 
-#include <alib/tuple>
-
 namespace common {
 
 /**
diff --git a/alib2data/src/indexes/arbology/CompressedBitParallelTreeIndex.h b/alib2data/src/indexes/arbology/CompressedBitParallelTreeIndex.h
index ab0defd023..a808dcd0c0 100644
--- a/alib2data/src/indexes/arbology/CompressedBitParallelTreeIndex.h
+++ b/alib2data/src/indexes/arbology/CompressedBitParallelTreeIndex.h
@@ -31,7 +31,7 @@
 #include <sstream>
 
 #include <common/DefaultSymbolType.h>
-#include <alphabet/RankedSymbol.h>
+#include <common/ranked_symbol.hpp>
 
 #include <core/components.hpp>
 #include <exception/CommonException.h>
diff --git a/alib2data/src/indexes/arbology/FullAndLinearIndex.h b/alib2data/src/indexes/arbology/FullAndLinearIndex.h
index 2025f4c2c0..b6d5842b85 100644
--- a/alib2data/src/indexes/arbology/FullAndLinearIndex.h
+++ b/alib2data/src/indexes/arbology/FullAndLinearIndex.h
@@ -28,7 +28,7 @@
 #include <alib/compare>
 #include <sstream>
 
-#include <alphabet/RankedSymbol.h>
+#include <common/ranked_symbol.hpp>
 
 #include <indexes/stringology/PositionHeap.h>
 
diff --git a/alib2data/src/indexes/arbology/NonlinearCompressedBitParallelTreeIndex.h b/alib2data/src/indexes/arbology/NonlinearCompressedBitParallelTreeIndex.h
index 69a686749d..fc501c0359 100644
--- a/alib2data/src/indexes/arbology/NonlinearCompressedBitParallelTreeIndex.h
+++ b/alib2data/src/indexes/arbology/NonlinearCompressedBitParallelTreeIndex.h
@@ -30,7 +30,7 @@
 #include <alib/compare>
 #include <sstream>
 
-#include <alphabet/RankedSymbol.h>
+#include <common/ranked_symbol.hpp>
 
 #include <core/components.hpp>
 #include <exception/CommonException.h>
diff --git a/alib2data/src/indexes/arbology/NonlinearFullAndLinearIndex.h b/alib2data/src/indexes/arbology/NonlinearFullAndLinearIndex.h
index 8b2206577e..89ac7b0fcb 100644
--- a/alib2data/src/indexes/arbology/NonlinearFullAndLinearIndex.h
+++ b/alib2data/src/indexes/arbology/NonlinearFullAndLinearIndex.h
@@ -28,7 +28,7 @@
 #include <alib/compare>
 #include <sstream>
 
-#include <alphabet/RankedSymbol.h>
+#include <common/ranked_symbol.hpp>
 
 #include <indexes/stringology/PositionHeap.h>
 
diff --git a/alib2data/src/rte/formal/FormalRTE.h b/alib2data/src/rte/formal/FormalRTE.h
index 157a711f5f..2e3591db1f 100644
--- a/alib2data/src/rte/formal/FormalRTE.h
+++ b/alib2data/src/rte/formal/FormalRTE.h
@@ -40,6 +40,7 @@
 #include "FormalRTEStructure.h"
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
 
 namespace rte {
 
diff --git a/alib2data/src/rte/xml/common/RTEToXmlComposer.h b/alib2data/src/rte/xml/common/RTEToXmlComposer.h
index 80279f411f..8e9f31dcaa 100644
--- a/alib2data/src/rte/xml/common/RTEToXmlComposer.h
+++ b/alib2data/src/rte/xml/common/RTEToXmlComposer.h
@@ -13,8 +13,7 @@
 #include <sax/Token.h>
 #include <core/xmlApi.hpp>
 
-#include <common/ranked_symbol.hpp>
-#include <alphabet/RankedSymbol.h>
+#include <alphabet/xml/RankedSymbol.h>
 
 namespace rte {
 
diff --git a/alib2data/src/tree/common/TreeNormalize.h b/alib2data/src/tree/common/TreeNormalize.h
index e7a7499087..a730b7695b 100644
--- a/alib2data/src/tree/common/TreeNormalize.h
+++ b/alib2data/src/tree/common/TreeNormalize.h
@@ -10,7 +10,7 @@
 
 #include <alib/tree>
 
-#include <alphabet/RankedSymbol.h>
+#include <common/ranked_symbol.hpp>
 #include <alphabet/common/SymbolNormalize.h>
 
 namespace tree {
diff --git a/alib2data/test-src/alphabet/SymbolTest.cpp b/alib2data/test-src/alphabet/SymbolTest.cpp
index 1abe582fa6..0ece732e72 100644
--- a/alib2data/test-src/alphabet/SymbolTest.cpp
+++ b/alib2data/test-src/alphabet/SymbolTest.cpp
@@ -7,7 +7,6 @@
 #include "alphabet/BlankSymbol.h"
 #include "alphabet/StartSymbol.h"
 #include "alphabet/EndSymbol.h"
-#include "alphabet/RankedSymbol.h"
 #include "alphabet/BarSymbol.h"
 
 #include <common/DefaultSymbolType.h>
@@ -28,8 +27,8 @@ void SymbolTest::testOrder ( ) {
 	alphabet::StartSymbol ss;
 	alphabet::EndSymbol es;
 
-	alphabet::RankedSymbol < > rs1 ( DefaultSymbolType ( alphabet::BarSymbol { } ), DefaultRankType ( 0 ) );
-	alphabet::RankedSymbol < > rs2 ( DefaultSymbolType ( alphabet::BarSymbol { } ), DefaultRankType ( 0 ) );
+	common::ranked_symbol < > rs1 ( DefaultSymbolType ( alphabet::BarSymbol { } ), DefaultRankType ( 0 ) );
+	common::ranked_symbol < > rs2 ( DefaultSymbolType ( alphabet::BarSymbol { } ), DefaultRankType ( 0 ) );
 
 	CPPUNIT_EXCLUSIVE_OR ( bs < ss, ss < bs );
 	CPPUNIT_EXCLUSIVE_OR ( bs < es, es < bs );
diff --git a/alib2str/src/alphabet/string/RankedSymbol.cpp b/alib2str/src/alphabet/string/RankedSymbol.cpp
index 4c12d4eb64..6cbd25f748 100644
--- a/alib2str/src/alphabet/string/RankedSymbol.cpp
+++ b/alib2str/src/alphabet/string/RankedSymbol.cpp
@@ -12,10 +12,8 @@
 
 namespace {
 
-static auto stringWrite = registration::StringWriterRegister < alphabet::RankedSymbol < > > ( );
-static auto stringWrite2 = registration::StringWriterRegister < common::ranked_symbol < > > ( );
+static auto stringWrite = registration::StringWriterRegister < common::ranked_symbol < > > ( );
 
-static auto stringWriteGroup = registration::StringWriterRegisterTypeInGroup < object::Object, alphabet::RankedSymbol < > > ( );
-static auto stringWriteGroup2 = registration::StringWriterRegisterTypeInGroup < object::Object, common::ranked_symbol < > > ( );
+static auto stringWriteGroup = registration::StringWriterRegisterTypeInGroup < object::Object, common::ranked_symbol < > > ( );
 
 } /* namespace */
diff --git a/alib2str/src/alphabet/string/RankedSymbol.h b/alib2str/src/alphabet/string/RankedSymbol.h
index 8592e29db1..0d4640a1e7 100644
--- a/alib2str/src/alphabet/string/RankedSymbol.h
+++ b/alib2str/src/alphabet/string/RankedSymbol.h
@@ -8,7 +8,7 @@
 #ifndef _STRING_RANKED_SYMBOL_H_
 #define _STRING_RANKED_SYMBOL_H_
 
-#include <alphabet/RankedSymbol.h>
+#include <common/ranked_symbol.hpp>
 #include <core/stringApi.hpp>
 #include <primitive/string/Unsigned.h>
 
@@ -37,28 +37,6 @@ void stringApi < common::ranked_symbol < SymbolType, RankType > >::compose ( std
 	core::stringApi < RankType >::compose ( output, symbol.getRank ( ) );
 }
 
-template < class SymbolType, class RankType >
-struct stringApi < alphabet::RankedSymbol < SymbolType, RankType > > {
-	static alphabet::RankedSymbol < SymbolType, RankType > parse ( std::istream & input );
-	static bool first ( std::istream & input );
-	static void compose ( std::ostream & output, const alphabet::RankedSymbol < SymbolType, RankType > & symbol );
-};
-
-template < class SymbolType, class RankType >
-alphabet::RankedSymbol < SymbolType, RankType > stringApi < alphabet::RankedSymbol < SymbolType, RankType > >::parse ( std::istream & input ) {
-	return stringApi < common::ranked_symbol < SymbolType, RankType > >::parse ( input );
-}
-
-template < class SymbolType, class RankType >
-bool stringApi < alphabet::RankedSymbol < SymbolType, RankType > >::first ( std::istream & input ) {
-	return stringApi < common::ranked_symbol < SymbolType, RankType > >::first ( input );
-}
-
-template < class SymbolType, class RankType >
-void stringApi < alphabet::RankedSymbol < SymbolType, RankType > >::compose ( std::ostream & output, const alphabet::RankedSymbol < SymbolType, RankType > & symbol ) {
-	stringApi < common::ranked_symbol < SymbolType, RankType > >::compose ( output, symbol );
-}
-
 } /* namespace core */
 
 #endif /* _STRING_RANKED_SYMBOL_H_ */
-- 
GitLab