From cf7418dae8ec2c783d4460c3f9bf370f55b169fb Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Wed, 12 Apr 2017 10:12:12 +0200
Subject: [PATCH] make normalize return type match base type

---
 alib2data/src/alphabet/SymbolBase.h                         | 2 ++
 alib2data/src/automaton/AutomatonBase.h                     | 2 ++
 alib2data/src/grammar/GrammarBase.h                         | 2 ++
 alib2data/src/label/LabelBase.h                             | 2 ++
 alib2data/src/regexp/RegExpBase.h                           | 2 ++
 alib2data/src/rte/RTEBase.h                                 | 2 ++
 alib2data/src/string/StringBase.h                           | 2 ++
 alib2data/src/tree/RankedTreeBase.h                         | 2 ++
 alib2data/src/tree/TreeBase.h                               | 2 ++
 alib2data/src/tree/UnrankedTreeBase.h                       | 2 ++
 alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h | 2 +-
 alib2data/src/tree/ranked/PrefixRankedBarPattern.h          | 2 +-
 alib2data/src/tree/ranked/PrefixRankedBarTree.h             | 2 +-
 alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h    | 2 +-
 alib2data/src/tree/ranked/PrefixRankedPattern.h             | 2 +-
 alib2data/src/tree/ranked/PrefixRankedTree.h                | 2 +-
 alib2data/src/tree/ranked/RankedNonlinearPattern.h          | 2 +-
 alib2data/src/tree/ranked/RankedPattern.h                   | 2 +-
 alib2data/src/tree/ranked/RankedTree.h                      | 2 +-
 alib2data/src/tree/unranked/PrefixBarTree.h                 | 2 +-
 alib2data/src/tree/unranked/UnrankedNonlinearPattern.h      | 2 +-
 alib2data/src/tree/unranked/UnrankedPattern.h               | 2 +-
 alib2data/src/tree/unranked/UnrankedTree.h                  | 2 +-
 23 files changed, 33 insertions(+), 13 deletions(-)

diff --git a/alib2data/src/alphabet/SymbolBase.h b/alib2data/src/alphabet/SymbolBase.h
index 031a52ac77..ee2959782f 100644
--- a/alib2data/src/alphabet/SymbolBase.h
+++ b/alib2data/src/alphabet/SymbolBase.h
@@ -21,6 +21,8 @@ public:
 	virtual SymbolBase* plunder() && = 0;
 
 	virtual SymbolBase* inc() && = 0;
+
+	virtual SymbolBase* normalize ( ) && = 0;
 };
 
 } /* namespace alphabet */
diff --git a/alib2data/src/automaton/AutomatonBase.h b/alib2data/src/automaton/AutomatonBase.h
index ed17dc3f05..946e493788 100644
--- a/alib2data/src/automaton/AutomatonBase.h
+++ b/alib2data/src/automaton/AutomatonBase.h
@@ -19,6 +19,8 @@ class AutomatonBase : public alib::ObjectBase {
 public:
 	virtual AutomatonBase* clone() const = 0;
 	virtual AutomatonBase* plunder() && = 0;
+
+	virtual AutomatonBase* normalize ( ) && = 0;
 };
 
 } /* namespace automaton */
diff --git a/alib2data/src/grammar/GrammarBase.h b/alib2data/src/grammar/GrammarBase.h
index 873d92dc41..42642a72ed 100644
--- a/alib2data/src/grammar/GrammarBase.h
+++ b/alib2data/src/grammar/GrammarBase.h
@@ -19,6 +19,8 @@ class GrammarBase : public alib::ObjectBase {
 public:
 	virtual GrammarBase* clone() const = 0;
 	virtual GrammarBase* plunder() && = 0;
+
+	virtual GrammarBase* normalize ( ) && = 0;
 };
 
 } /* namespace grammar */
diff --git a/alib2data/src/label/LabelBase.h b/alib2data/src/label/LabelBase.h
index 9acd07d6b7..3675c749c2 100644
--- a/alib2data/src/label/LabelBase.h
+++ b/alib2data/src/label/LabelBase.h
@@ -21,6 +21,8 @@ public:
 	virtual LabelBase* plunder() && = 0;
 
 	virtual LabelBase* inc() && = 0;
+
+	virtual LabelBase* normalize ( ) && = 0;
 };
 
 } /* namespace label */
diff --git a/alib2data/src/regexp/RegExpBase.h b/alib2data/src/regexp/RegExpBase.h
index 3c23d3ce95..490046ec2b 100644
--- a/alib2data/src/regexp/RegExpBase.h
+++ b/alib2data/src/regexp/RegExpBase.h
@@ -19,6 +19,8 @@ class RegExpBase : public alib::ObjectBase {
 public:
 	virtual RegExpBase* clone() const = 0;
 	virtual RegExpBase* plunder() && = 0;
+
+	virtual RegExpBase* normalize ( ) && = 0;
 };
 
 } /* namespace regexp */
diff --git a/alib2data/src/rte/RTEBase.h b/alib2data/src/rte/RTEBase.h
index e5407c54de..fe1f653025 100644
--- a/alib2data/src/rte/RTEBase.h
+++ b/alib2data/src/rte/RTEBase.h
@@ -21,6 +21,8 @@ public:
 
 	virtual const std::set < std::ranked_symbol < > > & getAlphabet ( ) const = 0;
 	virtual const std::set < std::ranked_symbol < > > & getSubstitutionAlphabet ( ) const = 0;
+
+	virtual RTEBase* normalize ( ) && = 0;
 };
 
 } /* namespace rte */
diff --git a/alib2data/src/string/StringBase.h b/alib2data/src/string/StringBase.h
index fe7c47a54f..ee227b810c 100644
--- a/alib2data/src/string/StringBase.h
+++ b/alib2data/src/string/StringBase.h
@@ -21,6 +21,8 @@ class StringBase : public alib::ObjectBase {
 public:
 	virtual StringBase * clone ( ) const = 0;
 	virtual StringBase * plunder ( ) && = 0;
+
+	virtual StringBase* normalize ( ) && = 0;
 };
 
 } /* namespace string */
diff --git a/alib2data/src/tree/RankedTreeBase.h b/alib2data/src/tree/RankedTreeBase.h
index e5183ee480..3f61023a0d 100644
--- a/alib2data/src/tree/RankedTreeBase.h
+++ b/alib2data/src/tree/RankedTreeBase.h
@@ -21,6 +21,8 @@ class RankedTreeBase : public TreeBase {
 public:
 	virtual RankedTreeBase * clone ( ) const = 0;
 	virtual RankedTreeBase * plunder ( ) && = 0;
+
+	virtual RankedTreeBase* normalize ( ) && = 0;
 };
 
 } /* namespace tree */
diff --git a/alib2data/src/tree/TreeBase.h b/alib2data/src/tree/TreeBase.h
index caa1a7624e..65055eb8e1 100644
--- a/alib2data/src/tree/TreeBase.h
+++ b/alib2data/src/tree/TreeBase.h
@@ -19,6 +19,8 @@ class TreeBase : public alib::ObjectBase {
 public:
 	virtual TreeBase* clone() const = 0;
 	virtual TreeBase* plunder() && = 0;
+
+	virtual TreeBase* normalize ( ) && = 0;
 };
 
 } /* namespace tree */
diff --git a/alib2data/src/tree/UnrankedTreeBase.h b/alib2data/src/tree/UnrankedTreeBase.h
index b106d4a340..ec7aa37f75 100644
--- a/alib2data/src/tree/UnrankedTreeBase.h
+++ b/alib2data/src/tree/UnrankedTreeBase.h
@@ -21,6 +21,8 @@ class UnrankedTreeBase : public TreeBase {
 public:
 	virtual UnrankedTreeBase * clone ( ) const = 0;
 	virtual UnrankedTreeBase * plunder ( ) && = 0;
+
+	virtual UnrankedTreeBase* normalize ( ) && = 0;
 };
 
 } /* namespace tree */
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
index 63d7ad9908..0551f639ec 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
@@ -128,7 +128,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::ranked_symbol < DefaultSymbolType, DefaultRankType > variablesBars = alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( this->template accessElement < VariablesBarSymbol > ( ).get ( ) ) );
 		std::ranked_symbol < DefaultSymbolType, DefaultRankType > wildcard = alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( this->template accessElement < SubtreeWildcard > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > nonlinearAlphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < NonlinearAlphabet > ( ).get ( ) ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
index 1688ef99ae..1e9d1cf828 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
@@ -117,7 +117,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::ranked_symbol < DefaultSymbolType, DefaultRankType > variablesBars = alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( this->template accessElement < VariablesBarSymbol > ( ).get ( ) ) );
 		std::ranked_symbol < DefaultSymbolType, DefaultRankType > wildcard = alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( this->template accessElement < SubtreeWildcard > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > bars = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < BarSymbols > ( ).get ( ) ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
index c0605eea9a..82dfd8ee06 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
@@ -104,7 +104,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > bars = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < BarSymbols > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > alphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::vector < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > content = alphabet::SymbolNormalize::normalizeRankedSymbols ( std::move ( m_Data ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
index 2b40344f37..5f5d1fc9d1 100644
--- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
@@ -112,7 +112,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::ranked_symbol < DefaultSymbolType, DefaultRankType > wildcard = alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( this->template accessElement < SubtreeWildcard > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > nonlinearAlphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < NonlinearAlphabet > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > alphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.h b/alib2data/src/tree/ranked/PrefixRankedPattern.h
index edc1ae25ac..ec5681c0ca 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.h
@@ -103,7 +103,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::ranked_symbol < DefaultSymbolType, DefaultRankType > wildcard = alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( this->template accessElement < SubtreeWildcard > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > alphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::vector < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > content = alphabet::SymbolNormalize::normalizeRankedSymbols ( std::move ( m_Data ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.h b/alib2data/src/tree/ranked/PrefixRankedTree.h
index 0ded0a3c8d..4b45896935 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.h
@@ -95,7 +95,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > alphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::vector < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > content = alphabet::SymbolNormalize::normalizeRankedSymbols ( std::move ( m_Data ) );
 
diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
index 6b10f84e82..def29fc920 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
@@ -120,7 +120,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::ranked_symbol < DefaultSymbolType, DefaultRankType > wildcard = alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( this->template accessElement < SubtreeWildcard > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > nonlinearAlphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < NonlinearAlphabet > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > alphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
diff --git a/alib2data/src/tree/ranked/RankedPattern.h b/alib2data/src/tree/ranked/RankedPattern.h
index 7e236d12f2..1f3c9788b1 100644
--- a/alib2data/src/tree/ranked/RankedPattern.h
+++ b/alib2data/src/tree/ranked/RankedPattern.h
@@ -114,7 +114,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::ranked_symbol < DefaultSymbolType, DefaultRankType > wildcard = alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( this->template accessElement < SubtreeWildcard > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > alphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::tree < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > content = TreeNormalize::normalizeRankedTree ( std::move ( m_content ) );
diff --git a/alib2data/src/tree/ranked/RankedTree.h b/alib2data/src/tree/ranked/RankedTree.h
index 233cfa1460..d72fdbf9ce 100644
--- a/alib2data/src/tree/ranked/RankedTree.h
+++ b/alib2data/src/tree/ranked/RankedTree.h
@@ -110,7 +110,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > alphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::tree < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > content = TreeNormalize::normalizeRankedTree ( std::move ( m_content ) );
 
diff --git a/alib2data/src/tree/unranked/PrefixBarTree.h b/alib2data/src/tree/unranked/PrefixBarTree.h
index 1458e0829d..3c7b27078b 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.h
+++ b/alib2data/src/tree/unranked/PrefixBarTree.h
@@ -101,7 +101,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual UnrankedTreeBase * normalize ( ) && {
 		DefaultSymbolType bar = alphabet::SymbolNormalize::normalizeSymbol ( std::move ( this->template accessElement < BarSymbol > ( ).get ( ) ) );
 		std::set < DefaultSymbolType > alphabet = alphabet::SymbolNormalize::normalizeAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::vector < DefaultSymbolType > content = alphabet::SymbolNormalize::normalizeSymbols ( std::move ( m_Data ) );
diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
index 13acf19ae4..ecbe5f2c0c 100644
--- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
@@ -124,7 +124,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual UnrankedTreeBase * normalize ( ) && {
 		DefaultSymbolType wildcard = alphabet::SymbolNormalize::normalizeSymbol ( std::move ( this->template accessElement < SubtreeWildcard > ( ).get ( ) ) );
 		std::set < DefaultSymbolType > nonlinearAlphabet = alphabet::SymbolNormalize::normalizeAlphabet ( std::move ( this->template accessComponent < NonlinearAlphabet > ( ).get ( ) ) );
 		std::set < DefaultSymbolType > alphabet = alphabet::SymbolNormalize::normalizeAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.h b/alib2data/src/tree/unranked/UnrankedPattern.h
index f8fd599b68..97f754b23c 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedPattern.h
@@ -112,7 +112,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual UnrankedTreeBase * normalize ( ) && {
 		DefaultSymbolType wildcard = alphabet::SymbolNormalize::normalizeSymbol ( std::move ( this->template accessElement < SubtreeWildcard > ( ).get ( ) ) );
 		std::set < DefaultSymbolType > alphabet = alphabet::SymbolNormalize::normalizeAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::tree < DefaultSymbolType > content = TreeNormalize::normalizeTree ( std::move ( m_content ) );
diff --git a/alib2data/src/tree/unranked/UnrankedTree.h b/alib2data/src/tree/unranked/UnrankedTree.h
index 569d7a35fd..66973126a5 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.h
+++ b/alib2data/src/tree/unranked/UnrankedTree.h
@@ -107,7 +107,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual UnrankedTreeBase * normalize ( ) && {
 		std::set < DefaultSymbolType > alphabet = alphabet::SymbolNormalize::normalizeAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::tree < DefaultSymbolType > content = TreeNormalize::normalizeTree ( std::move ( m_content ) );
 
-- 
GitLab