From 43978ff8ddb7b45a8a555753ed39738dce24ada8 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Wed, 16 Aug 2017 12:32:22 +0200 Subject: [PATCH] register dot converter to abstraction --- alib2aux/src/convert/DotConverter.cpp | 22 +++++++++++++++++++++- alib2aux/src/convert/DotConverter.h | 7 +++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/alib2aux/src/convert/DotConverter.cpp b/alib2aux/src/convert/DotConverter.cpp index 4f0df200a9..e947d167f9 100644 --- a/alib2aux/src/convert/DotConverter.cpp +++ b/alib2aux/src/convert/DotConverter.cpp @@ -15,7 +15,7 @@ void DotConverter::convert(std::ostream& out, const automaton::Automaton& a) { } auto DotConverterEpsilonNFA = registration::OverloadRegister < DotConverter, void, automaton::EpsilonNFA < > > ( DotConverter::convert ); -auto DotConverterMultiInitialStateNFA = registration::OverloadRegister < DotConverter, void, automaton::MultiInitialStateNFA < >> ( 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 ); @@ -34,4 +34,24 @@ auto DotConverterNPDA = registration::OverloadRegister < DotConverter, void, aut 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 ); + } /* namespace convert */ diff --git a/alib2aux/src/convert/DotConverter.h b/alib2aux/src/convert/DotConverter.h index 294ea620e9..4aefe08ea0 100644 --- a/alib2aux/src/convert/DotConverter.h +++ b/alib2aux/src/convert/DotConverter.h @@ -166,6 +166,13 @@ public: template < class SymbolType, class StateType > static void convert(std::ostream& out, const automaton::OneTapeDTM < SymbolType, StateType > & a); + + template < class T > + static std::string convert ( const T & automaton ) { + std::stringstream ss; + convert ( ss, automaton ); + return ss.str ( ); + } }; template < class SymbolType, class EpsilonType, class StateType > -- GitLab