Skip to content
Snippets Groups Projects
Commit 2125665a authored by Jan Trávníček's avatar Jan Trávníček
Browse files

template ToRegExp algo wrapper

parent f3a9d8ca
No related branches found
No related tags found
No related merge requests found
......@@ -6,7 +6,6 @@
*/
 
#include "ToRegExp.h"
#include "ToRegExpStateElimination.h"
 
namespace automaton {
 
......@@ -16,40 +15,11 @@ regexp::RegExp ToRegExp::convert(const automaton::Automaton& automaton) {
return dispatch(automaton.getData());
}
 
regexp::RegExp ToRegExp::convert(const automaton::EpsilonNFA < > & automaton) {
return regexp::RegExp(ToRegExpStateElimination::convert(automaton));
}
auto ToRegExpEpsilonNFA = ToRegExp::RegistratorWrapper<regexp::RegExp, automaton::EpsilonNFA < > >(ToRegExp::convert);
regexp::RegExp ToRegExp::convert(const automaton::MultiInitialStateNFA < > & automaton) {
return regexp::RegExp(ToRegExpStateElimination::convert(automaton));
}
auto ToRegExpMultiInitialStateNFA = ToRegExp::RegistratorWrapper<regexp::RegExp, automaton::MultiInitialStateNFA < > >(ToRegExp::convert);
regexp::RegExp ToRegExp::convert(const automaton::NFA < > & automaton) {
return regexp::RegExp(ToRegExpStateElimination::convert(automaton));
}
auto ToRegExpNFA = ToRegExp::RegistratorWrapper<regexp::RegExp, automaton::NFA < > >(ToRegExp::convert);
regexp::RegExp ToRegExp::convert(const automaton::DFA<>& automaton) {
return regexp::RegExp(ToRegExpStateElimination::convert(automaton));
}
auto ToRegExpDFA = ToRegExp::RegistratorWrapper<regexp::RegExp, automaton::DFA<>>(ToRegExp::convert);
regexp::RegExp ToRegExp::convert(const automaton::ExtendedNFA < > & automaton) {
return regexp::RegExp(ToRegExpStateElimination::convert(automaton));
}
auto ToRegExpExtendedNFA = ToRegExp::RegistratorWrapper<regexp::RegExp, automaton::ExtendedNFA < > >(ToRegExp::convert);
regexp::RegExp ToRegExp::convert(const automaton::CompactNFA < > & automaton) {
return regexp::RegExp(ToRegExpStateElimination::convert(automaton));
}
auto ToRegExpCompactNFA = ToRegExp::RegistratorWrapper<regexp::RegExp, automaton::CompactNFA < > >(ToRegExp::convert);
 
} /* namespace convert */
......
......@@ -19,6 +19,8 @@
#include <automaton/Automaton.h>
#include <regexp/RegExp.h>
 
#include "ToRegExpStateElimination.h"
namespace automaton {
 
namespace convert {
......@@ -31,14 +33,50 @@ public:
*/
static regexp::RegExp convert(const automaton::Automaton& automaton);
 
static regexp::RegExp convert(const automaton::EpsilonNFA < > & automaton);
static regexp::RegExp convert(const automaton::MultiInitialStateNFA < > & automaton);
static regexp::RegExp convert(const automaton::NFA<>& automaton);
static regexp::RegExp convert(const automaton::DFA<>& automaton);
static regexp::RegExp convert(const automaton::ExtendedNFA < > & automaton);
static regexp::RegExp convert(const automaton::CompactNFA < > & automaton);
template < class SymbolType, class EpsilonType, class StateType >
static regexp::RegExp convert(const automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > & automaton);
template < class SymbolType, class StateType >
static regexp::RegExp convert(const automaton::MultiInitialStateNFA < SymbolType, StateType > & automaton);
template < class SymbolType, class StateType >
static regexp::RegExp convert(const automaton::NFA < SymbolType, StateType > & automaton);
template < class SymbolType, class StateType >
static regexp::RegExp convert(const automaton::DFA < SymbolType, StateType > & automaton);
template < class SymbolType, class StateType >
static regexp::RegExp convert(const automaton::ExtendedNFA < SymbolType, StateType > & automaton);
template < class SymbolType, class StateType >
static regexp::RegExp convert(const automaton::CompactNFA < SymbolType, StateType > & automaton);
};
 
template < class SymbolType, class EpsilonType, class StateType >
regexp::RegExp ToRegExp::convert(const automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > & automaton) {
return regexp::RegExp(ToRegExpStateElimination::convert(automaton));
}
template < class SymbolType, class StateType >
regexp::RegExp ToRegExp::convert(const automaton::MultiInitialStateNFA < SymbolType, StateType > & automaton) {
return regexp::RegExp(ToRegExpStateElimination::convert(automaton));
}
template < class SymbolType, class StateType >
regexp::RegExp ToRegExp::convert(const automaton::NFA < SymbolType, StateType > & automaton) {
return regexp::RegExp(ToRegExpStateElimination::convert(automaton));
}
template < class SymbolType, class StateType >
regexp::RegExp ToRegExp::convert(const automaton::DFA < SymbolType, StateType > & automaton) {
return regexp::RegExp(ToRegExpStateElimination::convert(automaton));
}
template < class SymbolType, class StateType >
regexp::RegExp ToRegExp::convert(const automaton::ExtendedNFA < SymbolType, StateType > & automaton) {
return regexp::RegExp(ToRegExpStateElimination::convert(automaton));
}
template < class SymbolType, class StateType >
regexp::RegExp ToRegExp::convert(const automaton::CompactNFA < SymbolType, StateType > & automaton) {
return regexp::RegExp(ToRegExpStateElimination::convert(automaton));
}
} /* namespace convert */
 
} /* namespace automaton */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment