From 18934b1888965bd2301cbac441f1df7c577f7cee Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Sat, 21 Oct 2017 17:08:21 +0200
Subject: [PATCH] remove not needed registrations

---
 alib2aux/src/convert/DotConverter.cpp    | 62 ++++++++----------------
 alib2aux/src/convert/DotConverter.h      |  9 +---
 alib2aux/src/convert/GasTexConverter.cpp | 62 ++++++++----------------
 alib2aux/src/convert/GasTexConverter.h   |  9 +---
 alib2aux/src/convert/TikZConverter.cpp   | 62 ++++++++----------------
 alib2aux/src/convert/TikZConverter.h     | 11 +----
 6 files changed, 61 insertions(+), 154 deletions(-)

diff --git a/alib2aux/src/convert/DotConverter.cpp b/alib2aux/src/convert/DotConverter.cpp
index e947d167f9..51c3f7c9b0 100644
--- a/alib2aux/src/convert/DotConverter.cpp
+++ b/alib2aux/src/convert/DotConverter.cpp
@@ -10,48 +10,24 @@
 
 namespace convert {
 
-void DotConverter::convert(std::ostream& out, const automaton::Automaton& a) {
-	dispatch(out, a.getData());
-}
-
-auto DotConverterEpsilonNFA = registration::OverloadRegister < DotConverter, void, automaton::EpsilonNFA < > > ( DotConverter::convert );
-auto DotConverterMultiInitialStateNFA = registration::OverloadRegister < DotConverter, void, automaton::MultiInitialStateNFA < > > ( DotConverter::convert );
-auto DotConverterNFA = registration::OverloadRegister < DotConverter, void, automaton::NFA < > > ( DotConverter::convert );
-auto DotConverterDFA = registration::OverloadRegister < DotConverter, void, automaton::DFA < > > ( DotConverter::convert );
-auto DotConverterExtendedNFA = registration::OverloadRegister < DotConverter, void, automaton::ExtendedNFA < > > ( DotConverter::convert );
-auto DotConverterCompactNFA = registration::OverloadRegister < DotConverter, void, automaton::CompactNFA < > > ( DotConverter::convert );
-auto DotConverterNFTA = registration::OverloadRegister < DotConverter, void, automaton::NFTA < > > ( DotConverter::convert );
-auto DotConverterDFTA = registration::OverloadRegister < DotConverter, void, automaton::DFTA < > > ( DotConverter::convert );
-auto DotConverterDPDA = registration::OverloadRegister < DotConverter, void, automaton::DPDA < > > ( DotConverter::convert );
-auto DotConverterSinglePopDPDA = registration::OverloadRegister < DotConverter, void, automaton::SinglePopDPDA < > > ( DotConverter::convert );
-auto DotConverterInputDrivenDPDA = registration::OverloadRegister < DotConverter, void, automaton::InputDrivenDPDA < > > ( DotConverter::convert );
-auto DotConverterInputDrivenNPDA = registration::OverloadRegister < DotConverter, void, automaton::InputDrivenNPDA < > > ( DotConverter::convert );
-auto DotConverterVisiblyPushdownDPDA = registration::OverloadRegister < DotConverter, void, automaton::VisiblyPushdownDPDA < > > ( DotConverter::convert );
-auto DotConverterVisiblyPushdownNPDA = registration::OverloadRegister < DotConverter, void, automaton::VisiblyPushdownNPDA < > > ( DotConverter::convert );
-auto DotConverterRealTimeHeightDeterministicDPDA = registration::OverloadRegister < DotConverter, void, automaton::RealTimeHeightDeterministicDPDA < > > ( DotConverter::convert );
-auto DotConverterRealTimeHeightDeterministicNPDA = registration::OverloadRegister < DotConverter, void, automaton::RealTimeHeightDeterministicNPDA < > > ( DotConverter::convert );
-auto DotConverterNPDA = registration::OverloadRegister < DotConverter, void, automaton::NPDA < > > ( DotConverter::convert );
-auto DotConverterSinglePopNPDA = registration::OverloadRegister < DotConverter, void, automaton::SinglePopNPDA < > > ( DotConverter::convert );
-auto DotConverterOneTapeDTM = registration::OverloadRegister < DotConverter, void, automaton::OneTapeDTM < > > ( DotConverter::convert );
-
-auto DotConverterEpsilonNFA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::EpsilonNFA < > & > ( DotConverter::convert );
-auto DotConverterMultiInitialStateNFA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::MultiInitialStateNFA < > & > ( DotConverter::convert );
-auto DotConverterNFA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::NFA < > & > ( DotConverter::convert );
-auto DotConverterDFA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::DFA < > & > ( DotConverter::convert );
-auto DotConverterExtendedNFA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::ExtendedNFA < > & > ( DotConverter::convert );
-auto DotConverterCompactNFA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::CompactNFA < > & > ( DotConverter::convert );
-auto DotConverterNFTA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::NFTA < > & > ( DotConverter::convert );
-auto DotConverterDFTA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::DFTA < > & > ( DotConverter::convert );
-auto DotConverterDPDA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::DPDA < > & > ( DotConverter::convert );
-auto DotConverterSinglePopDPDA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::SinglePopDPDA < > & > ( DotConverter::convert );
-auto DotConverterInputDrivenDPDA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::InputDrivenDPDA < > & > ( DotConverter::convert );
-auto DotConverterInputDrivenNPDA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::InputDrivenNPDA < > & > ( DotConverter::convert );
-auto DotConverterVisiblyPushdownDPDA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::VisiblyPushdownDPDA < > & > ( DotConverter::convert );
-auto DotConverterVisiblyPushdownNPDA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::VisiblyPushdownNPDA < > & > ( DotConverter::convert );
-auto DotConverterRealTimeHeightDeterministicDPDA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::RealTimeHeightDeterministicDPDA < > & > ( DotConverter::convert );
-auto DotConverterRealTimeHeightDeterministicNPDA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::RealTimeHeightDeterministicNPDA < > & > ( DotConverter::convert );
-auto DotConverterNPDA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::NPDA < > & > ( DotConverter::convert );
-auto DotConverterSinglePopNPDA2 = registration::AbstractRegister < DotConverter, std::string, const automaton::SinglePopNPDA < > & > ( DotConverter::convert );
-auto DotConverterOneTapeDTM2 = registration::AbstractRegister < DotConverter, std::string, const automaton::OneTapeDTM < > & > ( DotConverter::convert );
+auto DotConverterEpsilonNFA = registration::AbstractRegister < DotConverter, std::string, const automaton::EpsilonNFA < > & > ( DotConverter::convert );
+auto DotConverterMultiInitialStateNFA = registration::AbstractRegister < DotConverter, std::string, const automaton::MultiInitialStateNFA < > & > ( DotConverter::convert );
+auto DotConverterNFA = registration::AbstractRegister < DotConverter, std::string, const automaton::NFA < > & > ( DotConverter::convert );
+auto DotConverterDFA = registration::AbstractRegister < DotConverter, std::string, const automaton::DFA < > & > ( DotConverter::convert );
+auto DotConverterExtendedNFA = registration::AbstractRegister < DotConverter, std::string, const automaton::ExtendedNFA < > & > ( DotConverter::convert );
+auto DotConverterCompactNFA = registration::AbstractRegister < DotConverter, std::string, const automaton::CompactNFA < > & > ( DotConverter::convert );
+auto DotConverterNFTA = registration::AbstractRegister < DotConverter, std::string, const automaton::NFTA < > & > ( DotConverter::convert );
+auto DotConverterDFTA = registration::AbstractRegister < DotConverter, std::string, const automaton::DFTA < > & > ( DotConverter::convert );
+auto DotConverterDPDA = registration::AbstractRegister < DotConverter, std::string, const automaton::DPDA < > & > ( DotConverter::convert );
+auto DotConverterSinglePopDPDA = registration::AbstractRegister < DotConverter, std::string, const automaton::SinglePopDPDA < > & > ( DotConverter::convert );
+auto DotConverterInputDrivenDPDA = registration::AbstractRegister < DotConverter, std::string, const automaton::InputDrivenDPDA < > & > ( DotConverter::convert );
+auto DotConverterInputDrivenNPDA = registration::AbstractRegister < DotConverter, std::string, const automaton::InputDrivenNPDA < > & > ( DotConverter::convert );
+auto DotConverterVisiblyPushdownDPDA = registration::AbstractRegister < DotConverter, std::string, const automaton::VisiblyPushdownDPDA < > & > ( DotConverter::convert );
+auto DotConverterVisiblyPushdownNPDA = registration::AbstractRegister < DotConverter, std::string, const automaton::VisiblyPushdownNPDA < > & > ( DotConverter::convert );
+auto DotConverterRealTimeHeightDeterministicDPDA = registration::AbstractRegister < DotConverter, std::string, const automaton::RealTimeHeightDeterministicDPDA < > & > ( DotConverter::convert );
+auto DotConverterRealTimeHeightDeterministicNPDA = registration::AbstractRegister < DotConverter, std::string, const automaton::RealTimeHeightDeterministicNPDA < > & > ( DotConverter::convert );
+auto DotConverterNPDA = registration::AbstractRegister < DotConverter, std::string, const automaton::NPDA < > & > ( DotConverter::convert );
+auto DotConverterSinglePopNPDA = registration::AbstractRegister < DotConverter, std::string, const automaton::SinglePopNPDA < > & > ( DotConverter::convert );
+auto DotConverterOneTapeDTM = registration::AbstractRegister < DotConverter, std::string, const automaton::OneTapeDTM < > & > ( DotConverter::convert );
 
 } /* namespace convert */
diff --git a/alib2aux/src/convert/DotConverter.h b/alib2aux/src/convert/DotConverter.h
index 754fa37ac3..9a76566ea7 100644
--- a/alib2aux/src/convert/DotConverter.h
+++ b/alib2aux/src/convert/DotConverter.h
@@ -16,14 +16,9 @@
 #include <vector>
 #include <typeinfo>
 
-#include <core/multipleDispatch.hpp>
 #include <exception/CommonException.h>
-
 #include <string/String.h>
 
-#include <automaton/Automaton.h>
-#include <automaton/AutomatonFeatures.h>
-
 #include <automaton/FSM/NFA.h>
 #include <automaton/FSM/EpsilonNFA.h>
 #include <automaton/FSM/MultiInitialStateNFA.h>
@@ -52,7 +47,7 @@
 
 namespace convert {
 
-class DotConverter : public alib::SingleDispatchFirstStaticParam<DotConverter, void, std::ostream&, const automaton::AutomatonBase &> {
+class DotConverter {
 	template < class SymbolType, class StateType >
 	static void transitions(const automaton::DFA < SymbolType, StateType > & fsm, const ext::map < StateType, int > & states, std::ostream & out);
 
@@ -110,8 +105,6 @@ class DotConverter : public alib::SingleDispatchFirstStaticParam<DotConverter, v
 	template < class SymbolType, class StateType >
 	static void transitions(const automaton::OneTapeDTM < SymbolType, StateType > & tm, const ext::map < StateType, int > & states, std::ostream & out);
 public:
-	static void convert(std::ostream& out, const automaton::Automaton& a);
-
 	template < class SymbolType, class StateType >
 	static void convert(std::ostream& out, const automaton::DFA < SymbolType, StateType > & a);
 
diff --git a/alib2aux/src/convert/GasTexConverter.cpp b/alib2aux/src/convert/GasTexConverter.cpp
index 7d22497b86..6162c7a995 100644
--- a/alib2aux/src/convert/GasTexConverter.cpp
+++ b/alib2aux/src/convert/GasTexConverter.cpp
@@ -35,48 +35,24 @@ void GasTexConverter::printTransitionMap(const ext::map<std::pair<std::string, s
 	}
 }
 
-void GasTexConverter::convert(std::ostream& out, const automaton::Automaton& a) {
-	dispatch(out, a.getData());
-}
-
-auto GasTexConverterEpsilonNFA = registration::OverloadRegister < GasTexConverter, void, automaton::EpsilonNFA < > > ( GasTexConverter::convert );
-auto GasTexConverterMultiInitialStateNFA = registration::OverloadRegister < GasTexConverter, void, automaton::MultiInitialStateNFA < > > ( GasTexConverter::convert );
-auto GasTexConverterNFA = registration::OverloadRegister < GasTexConverter, void, automaton::NFA < > > ( GasTexConverter::convert );
-auto GasTexConverterDFA = registration::OverloadRegister < GasTexConverter, void, automaton::DFA < > > ( GasTexConverter::convert );
-auto GasTexConverterExtendedNFA = registration::OverloadRegister < GasTexConverter, void, automaton::ExtendedNFA < > > ( GasTexConverter::convert );
-auto GasTexConverterCompactNFA = registration::OverloadRegister < GasTexConverter, void, automaton::CompactNFA < > > ( GasTexConverter::convert );
-auto GasTexConverterNFTA = registration::OverloadRegister < GasTexConverter, void, automaton::NFTA < > > ( GasTexConverter::convert );
-auto GasTexConverterDFTA = registration::OverloadRegister < GasTexConverter, void, automaton::DFTA < > > ( GasTexConverter::convert );
-auto GasTexConverterDPDA = registration::OverloadRegister < GasTexConverter, void, automaton::DPDA < > > ( GasTexConverter::convert );
-auto GasTexConverterSinglePopDPDA = registration::OverloadRegister < GasTexConverter, void, automaton::SinglePopDPDA < > > ( GasTexConverter::convert );
-auto GasTexConverterInputDrivenDPDA = registration::OverloadRegister < GasTexConverter, void, automaton::InputDrivenDPDA < > > ( GasTexConverter::convert );
-auto GasTexConverterInputDrivenNPDA = registration::OverloadRegister < GasTexConverter, void, automaton::InputDrivenNPDA < > > ( GasTexConverter::convert );
-auto GasTexConverterVisiblyPushdownDPDA = registration::OverloadRegister < GasTexConverter, void, automaton::VisiblyPushdownDPDA < > > ( GasTexConverter::convert );
-auto GasTexConverterVisiblyPushdownNPDA = registration::OverloadRegister < GasTexConverter, void, automaton::VisiblyPushdownNPDA < > > ( GasTexConverter::convert );
-auto GasTexConverterRealTimeHeightDeterministicDPDA = registration::OverloadRegister < GasTexConverter, void, automaton::RealTimeHeightDeterministicDPDA < > > ( GasTexConverter::convert );
-auto GasTexConverterRealTimeHeightDeterministicNPDA = registration::OverloadRegister < GasTexConverter, void, automaton::RealTimeHeightDeterministicNPDA < > > ( GasTexConverter::convert );
-auto GasTexConverterNPDA = registration::OverloadRegister < GasTexConverter, void, automaton::NPDA < > > ( GasTexConverter::convert );
-auto GasTexConverterSinglePopNPDA = registration::OverloadRegister < GasTexConverter, void, automaton::SinglePopNPDA < > > ( GasTexConverter::convert );
-auto GasTexConverterOneTapeDTM = registration::OverloadRegister < GasTexConverter, void, automaton::OneTapeDTM < > > ( GasTexConverter::convert );
-
-auto GasTexConverterEpsilonNFA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::EpsilonNFA < > & > ( GasTexConverter::convert );
-auto GasTexConverterMultiInitialStateNFA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::MultiInitialStateNFA < > & > ( GasTexConverter::convert );
-auto GasTexConverterNFA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::NFA < > & > ( GasTexConverter::convert );
-auto GasTexConverterDFA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::DFA < > & > ( GasTexConverter::convert );
-auto GasTexConverterExtendedNFA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::ExtendedNFA < > & > ( GasTexConverter::convert );
-auto GasTexConverterCompactNFA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::CompactNFA < > & > ( GasTexConverter::convert );
-auto GasTexConverterNFTA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::NFTA < > & > ( GasTexConverter::convert );
-auto GasTexConverterDFTA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::DFTA < > & > ( GasTexConverter::convert );
-auto GasTexConverterDPDA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::DPDA < > & > ( GasTexConverter::convert );
-auto GasTexConverterSinglePopDPDA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::SinglePopDPDA < > & > ( GasTexConverter::convert );
-auto GasTexConverterInputDrivenDPDA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::InputDrivenDPDA < > & > ( GasTexConverter::convert );
-auto GasTexConverterInputDrivenNPDA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::InputDrivenNPDA < > & > ( GasTexConverter::convert );
-auto GasTexConverterVisiblyPushdownDPDA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::VisiblyPushdownDPDA < > & > ( GasTexConverter::convert );
-auto GasTexConverterVisiblyPushdownNPDA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::VisiblyPushdownNPDA < > & > ( GasTexConverter::convert );
-auto GasTexConverterRealTimeHeightDeterministicDPDA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::RealTimeHeightDeterministicDPDA < > & > ( GasTexConverter::convert );
-auto GasTexConverterRealTimeHeightDeterministicNPDA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::RealTimeHeightDeterministicNPDA < > & > ( GasTexConverter::convert );
-auto GasTexConverterNPDA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::NPDA < > & > ( GasTexConverter::convert );
-auto GasTexConverterSinglePopNPDA2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::SinglePopNPDA < > & > ( GasTexConverter::convert );
-auto GasTexConverterOneTapeDTM2 = registration::AbstractRegister < GasTexConverter, std::string, const automaton::OneTapeDTM < > & > ( GasTexConverter::convert );
+auto GasTexConverterEpsilonNFA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::EpsilonNFA < > & > ( GasTexConverter::convert );
+auto GasTexConverterMultiInitialStateNFA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::MultiInitialStateNFA < > & > ( GasTexConverter::convert );
+auto GasTexConverterNFA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::NFA < > & > ( GasTexConverter::convert );
+auto GasTexConverterDFA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::DFA < > & > ( GasTexConverter::convert );
+auto GasTexConverterExtendedNFA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::ExtendedNFA < > & > ( GasTexConverter::convert );
+auto GasTexConverterCompactNFA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::CompactNFA < > & > ( GasTexConverter::convert );
+auto GasTexConverterNFTA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::NFTA < > & > ( GasTexConverter::convert );
+auto GasTexConverterDFTA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::DFTA < > & > ( GasTexConverter::convert );
+auto GasTexConverterDPDA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::DPDA < > & > ( GasTexConverter::convert );
+auto GasTexConverterSinglePopDPDA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::SinglePopDPDA < > & > ( GasTexConverter::convert );
+auto GasTexConverterInputDrivenDPDA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::InputDrivenDPDA < > & > ( GasTexConverter::convert );
+auto GasTexConverterInputDrivenNPDA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::InputDrivenNPDA < > & > ( GasTexConverter::convert );
+auto GasTexConverterVisiblyPushdownDPDA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::VisiblyPushdownDPDA < > & > ( GasTexConverter::convert );
+auto GasTexConverterVisiblyPushdownNPDA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::VisiblyPushdownNPDA < > & > ( GasTexConverter::convert );
+auto GasTexConverterRealTimeHeightDeterministicDPDA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::RealTimeHeightDeterministicDPDA < > & > ( GasTexConverter::convert );
+auto GasTexConverterRealTimeHeightDeterministicNPDA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::RealTimeHeightDeterministicNPDA < > & > ( GasTexConverter::convert );
+auto GasTexConverterNPDA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::NPDA < > & > ( GasTexConverter::convert );
+auto GasTexConverterSinglePopNPDA = registration::AbstractRegister < GasTexConverter, std::string, const automaton::SinglePopNPDA < > & > ( GasTexConverter::convert );
+auto GasTexConverterOneTapeDTM = registration::AbstractRegister < GasTexConverter, std::string, const automaton::OneTapeDTM < > & > ( GasTexConverter::convert );
 
 } /* namespace convert */
diff --git a/alib2aux/src/convert/GasTexConverter.h b/alib2aux/src/convert/GasTexConverter.h
index b1a3901530..6b514c4b38 100644
--- a/alib2aux/src/convert/GasTexConverter.h
+++ b/alib2aux/src/convert/GasTexConverter.h
@@ -15,12 +15,7 @@
 #include <set>
 #include <typeinfo>
 
-#include <core/multipleDispatch.hpp>
 #include <exception/CommonException.h>
-
-#include <automaton/Automaton.h>
-#include <automaton/AutomatonFeatures.h>
-
 #include <string/String.h>
 
 #include <automaton/FSM/NFA.h>
@@ -51,7 +46,7 @@
 
 namespace convert {
 
-class GasTexConverter : public alib::SingleDispatchFirstStaticParam<GasTexConverter, void, std::ostream&, const automaton::AutomatonBase &> {
+class GasTexConverter {
 	static void printTransitionMap( const ext::map<std::pair<std::string, std::string>, std::string> transitionMap, std::ostream& out);
 
 	template < class SymbolType >
@@ -114,8 +109,6 @@ class GasTexConverter : public alib::SingleDispatchFirstStaticParam<GasTexConver
 	template < class SymbolType, class StateType >
 	static void transitions(const automaton::OneTapeDTM < SymbolType, StateType > & tm, std::ostream & out);
 public:
-	static void convert(std::ostream& out, const automaton::Automaton& a);
-
 	template < class SymbolType, class StateType >
 	static void convert(std::ostream& out, const automaton::DFA < SymbolType, StateType > & a);
 
diff --git a/alib2aux/src/convert/TikZConverter.cpp b/alib2aux/src/convert/TikZConverter.cpp
index aa778bb2f1..cd2b0b3aea 100644
--- a/alib2aux/src/convert/TikZConverter.cpp
+++ b/alib2aux/src/convert/TikZConverter.cpp
@@ -10,48 +10,24 @@
 
 namespace convert {
 
-void TikZConverter::convert ( std::ostream & out, const automaton::Automaton & a ) {
-	dispatch ( out, a.getData ( ) );
-}
-
-auto TikZConverterEpsilonNFA = registration::OverloadRegister < TikZConverter, void, automaton::EpsilonNFA < > > ( TikZConverter::convert );
-auto TikZConverterMultiInitialStateNFA = registration::OverloadRegister < TikZConverter, void, automaton::MultiInitialStateNFA < > > ( TikZConverter::convert );
-auto TikZConverterNFA = registration::OverloadRegister < TikZConverter, void, automaton::NFA < > > ( TikZConverter::convert );
-auto TikZConverterDFA = registration::OverloadRegister < TikZConverter, void, automaton::DFA < > > ( TikZConverter::convert );
-auto TikZConverterExtendedNFA = registration::OverloadRegister < TikZConverter, void, automaton::ExtendedNFA < > > ( TikZConverter::convert );
-auto TikZConverterCompactNFA = registration::OverloadRegister < TikZConverter, void, automaton::CompactNFA < > > ( TikZConverter::convert );
-auto TikZConverterNFTA = registration::OverloadRegister < TikZConverter, void, automaton::NFTA < > > ( TikZConverter::convert );
-auto TikZConverterDFTA = registration::OverloadRegister < TikZConverter, void, automaton::DFTA < > > ( TikZConverter::convert );
-auto TikZConverterDPDA = registration::OverloadRegister < TikZConverter, void, automaton::DPDA < > > ( TikZConverter::convert );
-auto TikZConverterSinglePopDPDA = registration::OverloadRegister < TikZConverter, void, automaton::SinglePopDPDA < > > ( TikZConverter::convert );
-auto TikZConverterInputDrivenDPDA = registration::OverloadRegister < TikZConverter, void, automaton::InputDrivenDPDA < > > ( TikZConverter::convert );
-auto TikZConverterInputDrivenNPDA = registration::OverloadRegister < TikZConverter, void, automaton::InputDrivenNPDA < > > ( TikZConverter::convert );
-auto TikZConverterVisiblyPushdownDPDA = registration::OverloadRegister < TikZConverter, void, automaton::VisiblyPushdownDPDA < > > ( TikZConverter::convert );
-auto TikZConverterVisiblyPushdownNPDA = registration::OverloadRegister < TikZConverter, void, automaton::VisiblyPushdownNPDA < > > ( TikZConverter::convert );
-auto TikZConverterRealTimeHeightDeterministicDPDA = registration::OverloadRegister < TikZConverter, void, automaton::RealTimeHeightDeterministicDPDA < > > ( TikZConverter::convert );
-auto TikZConverterRealTimeHeightDeterministicNPDA = registration::OverloadRegister < TikZConverter, void, automaton::RealTimeHeightDeterministicNPDA < > > ( TikZConverter::convert );
-auto TikZConverterNPDA = registration::OverloadRegister < TikZConverter, void, automaton::NPDA < > > ( TikZConverter::convert );
-auto TikZConverterSinglePopNPDA = registration::OverloadRegister < TikZConverter, void, automaton::SinglePopNPDA < > > ( TikZConverter::convert );
-auto TikZConverterOneTapeDTM = registration::OverloadRegister < TikZConverter, void, automaton::OneTapeDTM < > > ( TikZConverter::convert );
-
-auto TikZConverterEpsilonNFA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::EpsilonNFA < > & > ( TikZConverter::convert );
-auto TikZConverterMultiInitialStateNFA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::MultiInitialStateNFA < > & > ( TikZConverter::convert );
-auto TikZConverterNFA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::NFA < > & > ( TikZConverter::convert );
-auto TikZConverterDFA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::DFA < > & > ( TikZConverter::convert );
-auto TikZConverterExtendedNFA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::ExtendedNFA < > & > ( TikZConverter::convert );
-auto TikZConverterCompactNFA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::CompactNFA < > & > ( TikZConverter::convert );
-auto TikZConverterNFTA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::NFTA < > & > ( TikZConverter::convert );
-auto TikZConverterDFTA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::DFTA < > & > ( TikZConverter::convert );
-auto TikZConverterDPDA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::DPDA < > & > ( TikZConverter::convert );
-auto TikZConverterSinglePopDPDA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::SinglePopDPDA < > & > ( TikZConverter::convert );
-auto TikZConverterInputDrivenDPDA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::InputDrivenDPDA < > & > ( TikZConverter::convert );
-auto TikZConverterInputDrivenNPDA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::InputDrivenNPDA < > & > ( TikZConverter::convert );
-auto TikZConverterVisiblyPushdownDPDA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::VisiblyPushdownDPDA < > & > ( TikZConverter::convert );
-auto TikZConverterVisiblyPushdownNPDA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::VisiblyPushdownNPDA < > & > ( TikZConverter::convert );
-auto TikZConverterRealTimeHeightDeterministicDPDA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::RealTimeHeightDeterministicDPDA < > & > ( TikZConverter::convert );
-auto TikZConverterRealTimeHeightDeterministicNPDA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::RealTimeHeightDeterministicNPDA < > & > ( TikZConverter::convert );
-auto TikZConverterNPDA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::NPDA < > & > ( TikZConverter::convert );
-auto TikZConverterSinglePopNPDA2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::SinglePopNPDA < > & > ( TikZConverter::convert );
-auto TikZConverterOneTapeDTM2 = registration::AbstractRegister < TikZConverter, std::string, const automaton::OneTapeDTM < > & > ( TikZConverter::convert );
+auto TikZConverterEpsilonNFA = registration::AbstractRegister < TikZConverter, std::string, const automaton::EpsilonNFA < > & > ( TikZConverter::convert );
+auto TikZConverterMultiInitialStateNFA = registration::AbstractRegister < TikZConverter, std::string, const automaton::MultiInitialStateNFA < > & > ( TikZConverter::convert );
+auto TikZConverterNFA = registration::AbstractRegister < TikZConverter, std::string, const automaton::NFA < > & > ( TikZConverter::convert );
+auto TikZConverterDFA = registration::AbstractRegister < TikZConverter, std::string, const automaton::DFA < > & > ( TikZConverter::convert );
+auto TikZConverterExtendedNFA = registration::AbstractRegister < TikZConverter, std::string, const automaton::ExtendedNFA < > & > ( TikZConverter::convert );
+auto TikZConverterCompactNFA = registration::AbstractRegister < TikZConverter, std::string, const automaton::CompactNFA < > & > ( TikZConverter::convert );
+auto TikZConverterNFTA = registration::AbstractRegister < TikZConverter, std::string, const automaton::NFTA < > & > ( TikZConverter::convert );
+auto TikZConverterDFTA = registration::AbstractRegister < TikZConverter, std::string, const automaton::DFTA < > & > ( TikZConverter::convert );
+auto TikZConverterDPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::DPDA < > & > ( TikZConverter::convert );
+auto TikZConverterSinglePopDPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::SinglePopDPDA < > & > ( TikZConverter::convert );
+auto TikZConverterInputDrivenDPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::InputDrivenDPDA < > & > ( TikZConverter::convert );
+auto TikZConverterInputDrivenNPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::InputDrivenNPDA < > & > ( TikZConverter::convert );
+auto TikZConverterVisiblyPushdownDPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::VisiblyPushdownDPDA < > & > ( TikZConverter::convert );
+auto TikZConverterVisiblyPushdownNPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::VisiblyPushdownNPDA < > & > ( TikZConverter::convert );
+auto TikZConverterRealTimeHeightDeterministicDPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::RealTimeHeightDeterministicDPDA < > & > ( TikZConverter::convert );
+auto TikZConverterRealTimeHeightDeterministicNPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::RealTimeHeightDeterministicNPDA < > & > ( TikZConverter::convert );
+auto TikZConverterNPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::NPDA < > & > ( TikZConverter::convert );
+auto TikZConverterSinglePopNPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::SinglePopNPDA < > & > ( TikZConverter::convert );
+auto TikZConverterOneTapeDTM = registration::AbstractRegister < TikZConverter, std::string, const automaton::OneTapeDTM < > & > ( TikZConverter::convert );
 
 } /* namespace convert */
diff --git a/alib2aux/src/convert/TikZConverter.h b/alib2aux/src/convert/TikZConverter.h
index f44f9145d2..45466a2d81 100644
--- a/alib2aux/src/convert/TikZConverter.h
+++ b/alib2aux/src/convert/TikZConverter.h
@@ -16,12 +16,7 @@
 #include <map>
 #include <utility>
 
-#include <core/multipleDispatch.hpp>
 #include <exception/CommonException.h>
-
-#include <automaton/Automaton.h>
-#include <automaton/AutomatonFeatures.h>
-
 #include <string/String.h>
 
 #include <automaton/FSM/NFA.h>
@@ -52,7 +47,7 @@
 
 namespace convert {
 
-class TikZConverter : public alib::SingleDispatchFirstStaticParam < TikZConverter, void, std::ostream &, const automaton::AutomatonBase & > {
+class TikZConverter {
 	template < class SymbolType, class StateType >
 	static void transitions(const automaton::DFA < SymbolType, StateType > & fsm, const ext::map < StateType, int > & states, std::ostream & out);
 
@@ -110,8 +105,6 @@ class TikZConverter : public alib::SingleDispatchFirstStaticParam < TikZConverte
 	template < class SymbolType, class StateType >
 	static void transitions(const automaton::OneTapeDTM < SymbolType, StateType > & tm, const ext::map < StateType, int > & states, std::ostream & out);
 public:
-	static void convert ( std::ostream & out, const automaton::Automaton & a );
-
 	template < class SymbolType, class StateType >
 	static void convert(std::ostream& out, const automaton::DFA < SymbolType, StateType > & a);
 
@@ -927,7 +920,7 @@ void TikZConverter::transitions ( const automaton::CompactNFA < SymbolType, Stat
 
 	 // put transitions from automaton to "transitions"
 	for ( const auto & transition : fsm.getTransitions ( ) ) {
-		std::string symbol = replace ( alib::StringDataFactory::toString (  string::stringFrom ( transition.first.second  ) ), "\"", "\\\"" );
+		std::string symbol = replace ( alib::StringDataFactory::toString ( string::stringFrom ( transition.first.second ) ), "\"", "\\\"" );
 
 		for ( const StateType & to : transition.second ) {
 			std::pair < int, int > key ( states.find ( transition.first.first )->second, states.find ( to )->second );
-- 
GitLab