From 7968cd68b772fd0a838501cfdbd6921d479ee8f0 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Mon, 10 Jul 2017 18:12:02 +0200 Subject: [PATCH] algorithm overloads registration unified --- aaccess2/src/AutomatonAccess.cpp | 13 +- aaccess2/src/GrammarAccess.cpp | 5 +- aaccess2/src/RegExpAccess.cpp | 5 +- aaccess2/src/StringAccess.cpp | 5 +- aaccess2/src/TreeAccess.cpp | 9 +- acompare2/src/AutomatonCompare.cpp | 39 +++--- acompare2/src/GrammarCompare.cpp | 27 ++-- acompare2/src/StringCompare.cpp | 5 +- aconvert2/src/DotConverter.cpp | 39 +++--- aconvert2/src/GasTexConverter.cpp | 39 +++--- aconvert2/src/TikZConverter.cpp | 39 +++--- .../src/arbology/exact/BoyerMooreHorspool.cpp | 7 +- ...neUsingBadCharacterShiftAndBorderArray.cpp | 9 +- .../ExactNonlinearTreePatternAutomaton.cpp | 3 +- .../src/arbology/exact/ExactPatternMatch.cpp | 15 ++- .../exact/ExactPatternMatchingAutomaton.cpp | 13 +- .../arbology/exact/ExactSubtreeAutomaton.cpp | 3 +- .../src/arbology/exact/ExactSubtreeMatch.cpp | 9 +- .../exact/ExactSubtreeMatchingAutomaton.cpp | 7 +- .../exact/ExactTreePatternAutomaton.cpp | 3 +- .../src/arbology/exact/KnuthMorrisPratt.cpp | 9 +- .../exact/ReversedBoyerMooreHorspool.cpp | 13 +- ...CompressedBitParallelIndexConstruction.cpp | 5 +- .../FullAndLinearIndexConstruction.cpp | 5 +- ...onlinearFullAndLinearIndexConstruction.cpp | 5 +- .../CompressedBitParallelismPatterns.cpp | 5 +- .../query/FullAndLinearIndexPatterns.cpp | 5 +- .../NonlinearFullAndLinearIndexPatterns.cpp | 5 +- .../arbology/transform/BeginToEndIndex.cpp | 5 +- alib2algo/src/automaton/convert/ToGrammar.cpp | 5 +- .../src/automaton/convert/ToGrammarLeftRG.cpp | 5 +- .../automaton/convert/ToGrammarRightRG.cpp | 5 +- .../convert/ToPostfixPushdownAutomaton.cpp | 6 +- alib2algo/src/automaton/convert/ToRegExp.cpp | 13 +- .../automaton/convert/ToRegExpAlgebraic.cpp | 9 +- .../convert/ToRegExpStateElimination.cpp | 13 +- .../src/automaton/determinize/Determinize.cpp | 23 ++-- .../determinize/DeterminizeIDPDAPart.cxx | 2 +- .../determinize/DeterminizeNFTAPart.cxx | 2 +- .../determinize/DeterminizeRHDPDAPart.cxx | 2 +- .../determinize/DeterminizeVPAPart.cxx | 2 +- .../automaton/generate/RandomizeAutomaton.cpp | 9 +- .../properties/AllEpsilonClosure.cpp | 17 +-- .../automaton/properties/EpsilonClosure.cpp | 15 ++- .../automaton/properties/ReachableStates.cpp | 13 +- .../automaton/properties/UsefullStates.cpp | 15 ++- alib2algo/src/automaton/run/Accept.cpp | 19 +-- alib2algo/src/automaton/run/Occurrences.cpp | 13 +- alib2algo/src/automaton/run/Result.cpp | 13 +- alib2algo/src/automaton/run/Translate.cpp | 3 +- .../simplify/EpsilonRemoverIncoming.cpp | 9 +- .../simplify/EpsilonRemoverOutgoing.cpp | 9 +- alib2algo/src/automaton/simplify/Minimize.cpp | 5 +- .../automaton/simplify/MinimizeBrzozowski.cpp | 5 +- .../src/automaton/simplify/Normalize.cpp | 5 +- alib2algo/src/automaton/simplify/Rename.cpp | 13 +- .../automaton/simplify/SingleInitialState.cpp | 13 +- alib2algo/src/automaton/simplify/Total.cpp | 5 +- alib2algo/src/automaton/simplify/Trim.cpp | 15 ++- .../simplify/UnreachableStatesRemover.cpp | 15 ++- .../simplify/UselessStatesRemover.cpp | 15 ++- .../transform/AutomataConcatenation.cpp | 5 +- ...AutomataConcatenationEpsilonTransition.cpp | 7 +- .../AutomataIntersectionCartesianProduct.cpp | 5 +- .../AutomataUnionCartesianProduct.cpp | 5 +- .../AutomataUnionEpsilonTransition.cpp | 7 +- .../transform/AutomatonIteration.cpp | 5 +- .../AutomatonIterationEpsilonTransition.cpp | 7 +- .../src/automaton/transform/Compaction.cpp | 7 +- .../src/automaton/transform/PDAToRHPDA.cpp | 9 +- .../src/automaton/transform/RHPDAToPDA.cpp | 5 +- alib2algo/src/automaton/transform/Reverse.cpp | 7 +- alib2algo/src/grammar/convert/ToAutomaton.cpp | 9 +- .../grammar/convert/ToAutomatonBottomUp.cpp | 5 +- .../src/grammar/convert/ToGrammarLeftRG.cpp | 3 +- .../src/grammar/convert/ToGrammarRightRG.cpp | 3 +- alib2algo/src/grammar/convert/ToRegExp.cpp | 5 +- .../src/grammar/convert/ToRegExpAlgebraic.cpp | 5 +- .../grammar/generate/CockeYoungerKasami.cpp | 3 +- .../grammar/generate/GenerateUpToLength.cpp | 11 +- .../grammar/generate/RandomGrammarFactory.cpp | 1 + .../src/grammar/generate/RandomizeGrammar.cpp | 11 +- .../grammar/properties/IsLanguageEmpty.cpp | 19 +-- .../IsLanguageGeneratingEpsilon.cpp | 19 +-- .../properties/NonterminalUnitRuleCycle.cpp | 19 +-- .../properties/NullableNonterminals.cpp | 19 +-- .../properties/ProductiveNonterminals.cpp | 19 +-- .../properties/RecursiveNonterminal.cpp | 19 +-- .../grammar/properties/UnreachableSymbols.cpp | 19 +-- .../src/grammar/simplify/EpsilonRemover.cpp | 19 +-- .../grammar/simplify/LeftRecursionRemover.cpp | 15 ++- alib2algo/src/grammar/simplify/Rename.cpp | 5 +- .../grammar/simplify/SimpleRulesRemover.cpp | 19 +-- alib2algo/src/grammar/simplify/ToCNF.cpp | 19 +-- alib2algo/src/grammar/simplify/ToGNF.cpp | 19 +-- alib2algo/src/grammar/simplify/Trim.cpp | 19 +-- .../simplify/UnproductiveSymbolsRemover.cpp | 19 +-- .../simplify/UnreachableSymbolsRemover.cpp | 19 +-- alib2algo/src/regexp/convert/ToAutomaton.cpp | 5 +- .../regexp/convert/ToAutomatonDerivation.cpp | 5 +- .../regexp/convert/ToAutomatonGlushkov.cpp | 5 +- .../regexp/convert/ToAutomatonThompson.cpp | 5 +- alib2algo/src/regexp/convert/ToGrammar.cpp | 5 +- .../convert/ToGrammarRightRGDerivation.cpp | 5 +- .../convert/ToGrammarRightRGGlushkov.cpp | 5 +- .../src/regexp/properties/RegExpEmpty.cpp | 5 +- .../src/regexp/properties/RegExpEpsilon.cpp | 5 +- .../src/regexp/simplify/RegExpOptimize.cpp | 5 +- .../src/regexp/transform/RegExpAlternate.cpp | 5 +- .../regexp/transform/RegExpConcatenate.cpp | 5 +- .../src/regexp/transform/RegExpDerivation.cpp | 5 +- .../src/regexp/transform/RegExpIntegral.cpp | 5 +- .../src/regexp/transform/RegExpIterate.cpp | 5 +- .../convert/ToPostfixPushdownAutomaton.cpp | 3 +- .../ToPostfixPushdownAutomatonGlushkov.cpp | 3 +- .../generate/RandomSubstringFactory.cpp | 3 +- alib2algo/src/string/naive/ExactCompare.cpp | 7 +- alib2algo/src/string/naive/ExactEqual.cpp | 7 +- .../properties/BadCharacterShiftTable.cpp | 3 +- .../src/string/properties/BorderArray.cpp | 3 +- .../properties/GoodSuffixShiftTable.cpp | 3 +- .../ReversedBadCharacterShiftTable.cpp | 3 +- .../src/string/simplify/NormalizeAlphabet.cpp | 3 +- .../src/string/simplify/NormalizeRotation.cpp | 3 +- .../src/stringology/exact/BoyerMoore.cpp | 3 +- .../stringology/exact/BoyerMooreHorspool.cpp | 3 +- .../exact/DeadZoneUsingBadCharacterShift.cpp | 3 +- .../stringology/exact/ExactFactorMatch.cpp | 3 +- .../exact/ReversedBoyerMooreHorspool.cpp | 3 +- .../indexing/BitParallelIndexConstruction.cpp | 3 +- ...CompressedBitParallelIndexConstruction.cpp | 3 +- .../indexing/ExactFactorOracleAutomaton.cpp | 3 +- ...ctNondeterministicSubsequenceAutomaton.cpp | 3 +- .../indexing/ExactSubsequenceAutomaton.cpp | 3 +- .../indexing/ExactSuffixAutomaton.cpp | 3 +- .../NondeterministicExactFactorAutomaton.cpp | 3 +- .../NondeterministicExactSuffixAutomaton.cpp | 3 +- .../indexing/PositionHeapNaive.cpp | 3 +- .../stringology/indexing/SuffixArrayNaive.cpp | 3 +- .../stringology/indexing/SuffixTrieNaive.cpp | 3 +- .../matching/BNDMMatcherConstruction.cpp | 3 +- .../matching/DAWGMatcherConstruction.cpp | 3 +- .../matching/ExactMatchingAutomaton.cpp | 3 +- .../matching/NaiveDAWGMatcherConstruction.cpp | 3 +- .../matching/OracleMatcherConstruction.cpp | 3 +- .../matching/WideBNDMMatcherConstruction.cpp | 3 +- .../stringology/properties/BackboneLength.cpp | 3 +- .../src/stringology/query/BNDMOccurrences.cpp | 3 +- .../query/BackwardDAWGMatching.cpp | 3 +- .../query/BackwardOracleMatching.cpp | 3 +- .../query/BitParallelismFactors.cpp | 3 +- .../query/CompressedBitParallelismFactors.cpp | 3 +- .../stringology/query/PositionHeapFactors.cpp | 3 +- .../stringology/query/SuffixArrayFactors.cpp | 3 +- .../stringology/query/SuffixTrieFactors.cpp | 3 +- .../stringology/query/WideBNDMOccurrences.cpp | 3 +- alib2algo/src/tree/NormalizeTreeLabels.cpp | 3 +- .../properties/BadCharacterShiftTable.cpp | 5 +- .../src/tree/properties/BorderArrayNaive.cpp | 5 +- .../tree/properties/ExactSubtreeRepeats.cpp | 3 +- .../properties/ExactSubtreeRepeatsNaive.cpp | 9 +- .../ReversedBadCharacterShiftTable.cpp | 9 +- .../src/tree/properties/SubtreeJumpTable.cpp | 9 +- .../parsing/DeterministicLL1Grammar.cpp | 3 +- .../src/grammar/parsing/First.cpp | 37 +++--- .../src/grammar/parsing/Follow.cpp | 37 +++--- .../src/grammar/parsing/LL1ParseTable.cpp | 19 +-- .../src/graph/maximumflow/FordFulkerson.cpp | 3 +- .../src/graph/minimumcut/FordFulkerson.cpp | 3 +- .../src/graph/shortestpath/BellmanFord.cpp | 5 +- .../src/graph/shortestpath/Dijkstra.cpp | 5 +- .../src/graph/shortestpath/FloydWarshall.cpp | 5 +- .../src/graph/sort/TopologicalSort.cpp | 3 +- .../src/graph/spanningtree/Edmonds.cpp | 3 +- .../src/graph/spanningtree/JarnikPrim.cpp | 3 +- .../src/graph/spanningtree/Kruskal.cpp | 3 +- .../src/graph/traverse/Bfs.cpp | 9 +- .../src/graph/traverse/Dfs.cpp | 9 +- .../indexing/ExperimentalSuffixTrie.cpp | 3 +- alib2common/src/core/multipleDispatch.hpp | 122 +++++++++++------- alib2common/src/introspection/Algorithms.hpp | 2 +- .../src/registration/AlgoRegistration.hpp | 23 ++++ alib2common/test-src/core/DispatchTest.cpp | 20 +-- .../efficient/AllEpsilonClosure.cpp | 13 +- .../properties/efficient/ReachableStates.cpp | 13 +- .../properties/efficient/UsefullStates.cpp | 13 +- .../efficient/EpsilonRemoverIncoming.cpp | 9 +- .../efficient/EpsilonRemoverOutgoing.cpp | 9 +- .../src/automaton/simplify/efficient/Trim.cpp | 13 +- .../efficient/UnreachableStatesRemover.cpp | 13 +- .../efficient/UselessStatesRemover.cpp | 13 +- alib2raw/src/string/StringToRawComposer.cpp | 4 +- alib2raw/src/tree/TreeToRawComposer.cpp | 10 +- .../automaton/AutomatonToStringComposer.cpp | 19 +-- .../src/grammar/GrammarToStringComposer.cpp | 55 ++++---- .../src/object/ObjectToStringComposer.cpp | 69 +++++----- .../src/regexp/RegExpToStringComposer.cpp | 11 +- .../src/string/StringToStringComposer.cpp | 16 ++- alib2str/src/tree/TreeToStringComposer.cpp | 20 +-- .../src/graph/GraphToStringComposer.cpp | 14 +- .../src/label/LabelToStringComposer.cpp | 16 ++- .../primitive/PrimitiveToStringComposer.cpp | 12 +- astat2/src/SizeStat.cpp | 3 +- 203 files changed, 1123 insertions(+), 869 deletions(-) create mode 100644 alib2common/src/registration/AlgoRegistration.hpp diff --git a/aaccess2/src/AutomatonAccess.cpp b/aaccess2/src/AutomatonAccess.cpp index c4ec1590d7..a47ece4fe5 100644 --- a/aaccess2/src/AutomatonAccess.cpp +++ b/aaccess2/src/AutomatonAccess.cpp @@ -26,6 +26,7 @@ #include <container/ObjectsTree.h> #include "common/AccessHelpers.hpp" +#include <registration/AlgoRegistration.hpp> void AutomatonAccess::access ( automaton::Automaton & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, std::deque < sax::Token > & argument ) { dispatch ( automaton.getData ( ), settings, operation, argument ); @@ -50,7 +51,7 @@ void AutomatonAccess::access ( automaton::NFA < > & automaton, const AutomatonSe throw exception::CommonException ( "Component not available" ); } -auto AutomatonAccessNFA = AutomatonAccess::RegistratorWrapper < void, automaton::NFA < > > ( AutomatonAccess::access ); +auto AutomatonAccessNFA = registration::OverloadRegister < AutomatonAccess, void, automaton::NFA < > > ( AutomatonAccess::access ); void AutomatonAccess::access ( automaton::DFA<> & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, std::deque < sax::Token > & argument ) { if ( settings == AutomatonSettings::Settings::STATES ) @@ -71,7 +72,7 @@ void AutomatonAccess::access ( automaton::DFA<> & automaton, const AutomatonSett throw exception::CommonException ( "Component not available" ); } -auto AutomatonAccessDFA = AutomatonAccess::RegistratorWrapper < void, automaton::DFA<> > ( AutomatonAccess::access ); +auto AutomatonAccessDFA = registration::OverloadRegister < AutomatonAccess, void, automaton::DFA<> > ( AutomatonAccess::access ); void AutomatonAccess::access ( automaton::InputDrivenNPDA < > & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, std::deque < sax::Token > & argument ) { if ( settings == AutomatonSettings::Settings::STATES ) @@ -92,7 +93,7 @@ void AutomatonAccess::access ( automaton::InputDrivenNPDA < > & automaton, const throw exception::CommonException ( "Component not available" ); } -auto AutomatonAccessInputDrivenNPDA = AutomatonAccess::RegistratorWrapper < void, automaton::InputDrivenNPDA < > > ( AutomatonAccess::access ); +auto AutomatonAccessInputDrivenNPDA = registration::OverloadRegister < AutomatonAccess, void, automaton::InputDrivenNPDA < > > ( AutomatonAccess::access ); void AutomatonAccess::access ( automaton::InputDrivenDPDA < > & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, std::deque < sax::Token > & argument ) { if ( settings == AutomatonSettings::Settings::STATES ) @@ -113,7 +114,7 @@ void AutomatonAccess::access ( automaton::InputDrivenDPDA < > & automaton, const throw exception::CommonException ( "Component not available" ); } -auto AutomatonAccessInputDrivenDPDA = AutomatonAccess::RegistratorWrapper < void, automaton::InputDrivenDPDA < > > ( AutomatonAccess::access ); +auto AutomatonAccessInputDrivenDPDA = registration::OverloadRegister < AutomatonAccess, void, automaton::InputDrivenDPDA < > > ( AutomatonAccess::access ); void AutomatonAccess::access ( automaton::NPDA < > & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, std::deque < sax::Token > & argument ) { if ( settings == AutomatonSettings::Settings::STATES ) @@ -134,7 +135,7 @@ void AutomatonAccess::access ( automaton::NPDA < > & automaton, const AutomatonS throw exception::CommonException ( "Component not available" ); } -auto AutomatonAccessNPDA = AutomatonAccess::RegistratorWrapper < void, automaton::NPDA < > > ( AutomatonAccess::access ); +auto AutomatonAccessNPDA = registration::OverloadRegister < AutomatonAccess, void, automaton::NPDA < > > ( AutomatonAccess::access ); void AutomatonAccess::access ( automaton::DPDA < > & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, std::deque < sax::Token > & argument ) { if ( settings == AutomatonSettings::Settings::STATES ) @@ -155,4 +156,4 @@ void AutomatonAccess::access ( automaton::DPDA < > & automaton, const AutomatonS throw exception::CommonException ( "Component not available" ); } -auto AutomatonAccessDPDA = AutomatonAccess::RegistratorWrapper < void, automaton::DPDA < > > ( AutomatonAccess::access ); +auto AutomatonAccessDPDA = registration::OverloadRegister < AutomatonAccess, void, automaton::DPDA < > > ( AutomatonAccess::access ); diff --git a/aaccess2/src/GrammarAccess.cpp b/aaccess2/src/GrammarAccess.cpp index 3a8002921d..2704a566ca 100644 --- a/aaccess2/src/GrammarAccess.cpp +++ b/aaccess2/src/GrammarAccess.cpp @@ -20,6 +20,7 @@ #include <container/ObjectsTree.h> #include "common/AccessHelpers.hpp" +#include <registration/AlgoRegistration.hpp> void GrammarAccess::access ( grammar::Grammar & grammar, const GrammarSettings::Settings & settings, const OperationSettings::Settings & operation, std::deque < sax::Token > & argument ) { dispatch ( grammar.getData ( ), settings, operation, argument ); @@ -41,7 +42,7 @@ void GrammarAccess::access ( grammar::RightRG < > & grammar, const GrammarSettin throw exception::CommonException ( "Component not available" ); } -auto GrammarAccessRightRG = GrammarAccess::RegistratorWrapper < void, grammar::RightRG < > > ( GrammarAccess::access ); +auto GrammarAccessRightRG = registration::OverloadRegister < GrammarAccess, void, grammar::RightRG < > > ( GrammarAccess::access ); void GrammarAccess::access ( grammar::RightLG < > & grammar, const GrammarSettings::Settings & settings, const OperationSettings::Settings & operation, std::deque < sax::Token > & argument ) { if ( settings == GrammarSettings::Settings::NONTERMINALS ) @@ -59,4 +60,4 @@ void GrammarAccess::access ( grammar::RightLG < > & grammar, const GrammarSettin throw exception::CommonException ( "Component not available" ); } -auto GrammarAccessRightLG = GrammarAccess::RegistratorWrapper < void, grammar::RightLG < > > ( GrammarAccess::access ); +auto GrammarAccessRightLG = registration::OverloadRegister < GrammarAccess, void, grammar::RightLG < > > ( GrammarAccess::access ); diff --git a/aaccess2/src/RegExpAccess.cpp b/aaccess2/src/RegExpAccess.cpp index b2a8aa3113..cee1a7cd0f 100644 --- a/aaccess2/src/RegExpAccess.cpp +++ b/aaccess2/src/RegExpAccess.cpp @@ -24,6 +24,7 @@ #include <container/ObjectsTree.h> #include "common/AccessHelpers.hpp" +#include <registration/AlgoRegistration.hpp> void RegExpAccess::access ( regexp::RegExp & regexp, const RegExpSettings::Settings & settings, const OperationSettings::Settings & operation, std::deque < sax::Token > & argument ) { dispatch ( regexp.getData ( ), settings, operation, argument ); @@ -38,7 +39,7 @@ void RegExpAccess::access ( regexp::FormalRegExp < > & regexp, const RegExpSetti throw exception::CommonException ( "Component not available" ); } -auto RegExpAccessFormalRegExp = RegExpAccess::RegistratorWrapper < void, regexp::FormalRegExp < > > ( RegExpAccess::access ); +auto RegExpAccessFormalRegExp = registration::OverloadRegister < RegExpAccess, void, regexp::FormalRegExp < > > ( RegExpAccess::access ); void RegExpAccess::access ( regexp::UnboundedRegExp < > & regexp, const RegExpSettings::Settings & settings, const OperationSettings::Settings & operation, std::deque < sax::Token > & argument ) { if ( settings == RegExpSettings::Settings::ALPHABET ) @@ -49,4 +50,4 @@ void RegExpAccess::access ( regexp::UnboundedRegExp < > & regexp, const RegExpSe throw exception::CommonException ( "Component not available" ); } -auto RegExpAccessUnboundedRegExp = RegExpAccess::RegistratorWrapper < void, regexp::UnboundedRegExp < > > ( RegExpAccess::access ); +auto RegExpAccessUnboundedRegExp = registration::OverloadRegister < RegExpAccess, void, regexp::UnboundedRegExp < > > ( RegExpAccess::access ); diff --git a/aaccess2/src/StringAccess.cpp b/aaccess2/src/StringAccess.cpp index 217ad73a06..87a2eef0d3 100644 --- a/aaccess2/src/StringAccess.cpp +++ b/aaccess2/src/StringAccess.cpp @@ -20,6 +20,7 @@ #include <container/ObjectsTree.h> #include "common/AccessHelpers.hpp" +#include <registration/AlgoRegistration.hpp> void StringAccess::access ( string::String & string, const StringSettings::Settings & settings, const OperationSettings::Settings & operation, std::deque < sax::Token > & argument ) { dispatch ( string.getData ( ), settings, operation, argument ); @@ -35,7 +36,7 @@ void StringAccess::access ( string::LinearString < > & string, const StringSetti throw exception::CommonException ( "Component not available" ); } -auto StringAccessFormalString = StringAccess::RegistratorWrapper < void, string::LinearString < > > ( StringAccess::access ); +auto StringAccessFormalString = registration::OverloadRegister < StringAccess, void, string::LinearString < > > ( StringAccess::access ); void StringAccess::access ( string::CyclicString < > & string, const StringSettings::Settings & settings, const OperationSettings::Settings & operation, std::deque < sax::Token > & argument ) { if ( settings == StringSettings::Settings::ALPHABET ) @@ -47,4 +48,4 @@ void StringAccess::access ( string::CyclicString < > & string, const StringSetti throw exception::CommonException ( "Component not available" ); } -auto StringAccessUnboundedString = StringAccess::RegistratorWrapper < void, string::CyclicString < > > ( StringAccess::access ); +auto StringAccessUnboundedString = registration::OverloadRegister < StringAccess, void, string::CyclicString < > > ( StringAccess::access ); diff --git a/aaccess2/src/TreeAccess.cpp b/aaccess2/src/TreeAccess.cpp index 8ae88c8795..da006d7dde 100644 --- a/aaccess2/src/TreeAccess.cpp +++ b/aaccess2/src/TreeAccess.cpp @@ -22,6 +22,7 @@ #include <container/ObjectsTree.h> #include "common/AccessHelpers.hpp" +#include <registration/AlgoRegistration.hpp> void TreeAccess::access ( tree::Tree & tree, const TreeSettings::Settings & settings, const OperationSettings::Settings & operation, std::deque < sax::Token > & argument ) { dispatch ( tree.getData ( ), settings, operation, argument ); @@ -37,7 +38,7 @@ void TreeAccess::access ( tree::RankedTree < > & tree, const TreeSettings::Setti throw exception::CommonException ( "Component not available" ); } -auto TreeAccessRankedTree = TreeAccess::RegistratorWrapper < void, tree::RankedTree < > > ( TreeAccess::access ); +auto TreeAccessRankedTree = registration::OverloadRegister < TreeAccess, void, tree::RankedTree < > > ( TreeAccess::access ); void TreeAccess::access ( tree::RankedPattern < > & tree, const TreeSettings::Settings & settings, const OperationSettings::Settings & operation, std::deque < sax::Token > & argument ) { if ( settings == TreeSettings::Settings::ALPHABET ) @@ -52,7 +53,7 @@ void TreeAccess::access ( tree::RankedPattern < > & tree, const TreeSettings::Se throw exception::CommonException ( "Component not available" ); } -auto TreeAccessRankedPattern = TreeAccess::RegistratorWrapper < void, tree::RankedPattern < > > ( TreeAccess::access ); +auto TreeAccessRankedPattern = registration::OverloadRegister < TreeAccess, void, tree::RankedPattern < > > ( TreeAccess::access ); void TreeAccess::access ( tree::RankedNonlinearPattern < > & tree, const TreeSettings::Settings & settings, const OperationSettings::Settings & operation, std::deque < sax::Token > & argument ) { if ( settings == TreeSettings::Settings::ALPHABET ) @@ -70,7 +71,7 @@ void TreeAccess::access ( tree::RankedNonlinearPattern < > & tree, const TreeSet throw exception::CommonException ( "Component not available" ); } -auto TreeAccessRankedNonlinearPattern = TreeAccess::RegistratorWrapper < void, tree::RankedNonlinearPattern < > > ( TreeAccess::access ); +auto TreeAccessRankedNonlinearPattern = registration::OverloadRegister < TreeAccess, void, tree::RankedNonlinearPattern < > > ( TreeAccess::access ); void TreeAccess::access ( tree::UnrankedTree < > & tree, const TreeSettings::Settings & settings, const OperationSettings::Settings & operation, std::deque < sax::Token > & argument ) { if ( settings == TreeSettings::Settings::ALPHABET ) @@ -82,4 +83,4 @@ void TreeAccess::access ( tree::UnrankedTree < > & tree, const TreeSettings::Set throw exception::CommonException ( "Component not available" ); } -auto TreeAccessUnrankedTree = TreeAccess::RegistratorWrapper < void, tree::UnrankedTree < > > ( TreeAccess::access ); +auto TreeAccessUnrankedTree = registration::OverloadRegister < TreeAccess, void, tree::UnrankedTree < > > ( TreeAccess::access ); diff --git a/acompare2/src/AutomatonCompare.cpp b/acompare2/src/AutomatonCompare.cpp index f8e49fc265..32c7ae6740 100644 --- a/acompare2/src/AutomatonCompare.cpp +++ b/acompare2/src/AutomatonCompare.cpp @@ -6,29 +6,30 @@ */ #include "AutomatonCompare.h" +#include <registration/AlgoRegistration.hpp> -auto AutomatonCompareDFA = AutomatonCompare::RegistratorWrapper<int, automaton::DFA < >, automaton::DFA < > >(AutomatonCompare::compare); -auto AutomatonCompareNFA = AutomatonCompare::RegistratorWrapper<int, automaton::NFA < > , automaton::NFA < > >(AutomatonCompare::compare); -auto AutomatonCompareMultiInitialStateNFA = AutomatonCompare::RegistratorWrapper<int, automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < > >(AutomatonCompare::compare); -auto AutomatonCompareEpsilonNFA = AutomatonCompare::RegistratorWrapper<int, automaton::EpsilonNFA < >, automaton::EpsilonNFA < > >(AutomatonCompare::compare); -auto AutomatonCompareExtendedNFA = AutomatonCompare::RegistratorWrapper<int, automaton::ExtendedNFA < >, automaton::ExtendedNFA < > >(AutomatonCompare::compare); -auto AutomatonCompareCompactNFA = AutomatonCompare::RegistratorWrapper<int, automaton::CompactNFA < >, automaton::CompactNFA < > >(AutomatonCompare::compare); +auto AutomatonCompareDFA = registration::OverloadRegister < AutomatonCompare, int, automaton::DFA < >, automaton::DFA < > > ( AutomatonCompare::compare ); +auto AutomatonCompareNFA = registration::OverloadRegister < AutomatonCompare, int, automaton::NFA < > , automaton::NFA < > > ( AutomatonCompare::compare ); +auto AutomatonCompareMultiInitialStateNFA = registration::OverloadRegister < AutomatonCompare, int, automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < > > ( AutomatonCompare::compare ); +auto AutomatonCompareEpsilonNFA = registration::OverloadRegister < AutomatonCompare, int, automaton::EpsilonNFA < >, automaton::EpsilonNFA < > > ( AutomatonCompare::compare ); +auto AutomatonCompareExtendedNFA = registration::OverloadRegister < AutomatonCompare, int, automaton::ExtendedNFA < >, automaton::ExtendedNFA < > > ( AutomatonCompare::compare ); +auto AutomatonCompareCompactNFA = registration::OverloadRegister < AutomatonCompare, int, automaton::CompactNFA < >, automaton::CompactNFA < > > ( AutomatonCompare::compare ); -auto AutomatonCompareDFTA = AutomatonCompare::RegistratorWrapper<int, automaton::DFTA < >, automaton::DFTA < > >(AutomatonCompare::compare); -auto AutomatonCompareNFTA = AutomatonCompare::RegistratorWrapper<int, automaton::NFTA < >, automaton::NFTA < > >(AutomatonCompare::compare); +auto AutomatonCompareDFTA = registration::OverloadRegister < AutomatonCompare, int, automaton::DFTA < >, automaton::DFTA < > > ( AutomatonCompare::compare ); +auto AutomatonCompareNFTA = registration::OverloadRegister < AutomatonCompare, int, automaton::NFTA < >, automaton::NFTA < > > ( AutomatonCompare::compare ); -auto AutomatonCompareDPDA = AutomatonCompare::RegistratorWrapper<int, automaton::DPDA < >, automaton::DPDA < > >(AutomatonCompare::compare); -auto AutomatonCompareNPDA = AutomatonCompare::RegistratorWrapper<int, automaton::NPDA < >, automaton::NPDA < > >(AutomatonCompare::compare); -auto AutomatonCompareInputDrivenDPDA = AutomatonCompare::RegistratorWrapper<int, automaton::InputDrivenDPDA < >, automaton::InputDrivenDPDA < > >(AutomatonCompare::compare); -auto AutomatonCompareInputDrivenNPDA = AutomatonCompare::RegistratorWrapper<int, automaton::InputDrivenNPDA < >, automaton::InputDrivenNPDA < > >(AutomatonCompare::compare); -auto AutomatonCompareVisiblyPushdownDPDA = AutomatonCompare::RegistratorWrapper<int, automaton::VisiblyPushdownDPDA < >, automaton::VisiblyPushdownDPDA < > >(AutomatonCompare::compare); -auto AutomatonCompareVisiblyPushdownNPDA = AutomatonCompare::RegistratorWrapper<int, automaton::VisiblyPushdownNPDA < >, automaton::VisiblyPushdownNPDA < > >(AutomatonCompare::compare); -auto AutomatonCompareRealTimeHeightDeterministicDPDA = AutomatonCompare::RegistratorWrapper<int, automaton::RealTimeHeightDeterministicDPDA < >, automaton::RealTimeHeightDeterministicDPDA < > >(AutomatonCompare::compare); -auto AutomatonCompareRealTimeHeightDeterministicNPDA = AutomatonCompare::RegistratorWrapper<int, automaton::RealTimeHeightDeterministicNPDA < >, automaton::RealTimeHeightDeterministicNPDA < > >(AutomatonCompare::compare); -auto AutomatonCompareSinglePopDPDA = AutomatonCompare::RegistratorWrapper<int, automaton::SinglePopDPDA < >, automaton::SinglePopDPDA < > >(AutomatonCompare::compare); -auto AutomatonCompareSinglePopNPDA = AutomatonCompare::RegistratorWrapper<int, automaton::SinglePopNPDA < >, automaton::SinglePopNPDA < > >(AutomatonCompare::compare); +auto AutomatonCompareDPDA = registration::OverloadRegister < AutomatonCompare, int, automaton::DPDA < >, automaton::DPDA < > > ( AutomatonCompare::compare ); +auto AutomatonCompareNPDA = registration::OverloadRegister < AutomatonCompare, int, automaton::NPDA < >, automaton::NPDA < > > ( AutomatonCompare::compare ); +auto AutomatonCompareInputDrivenDPDA = registration::OverloadRegister < AutomatonCompare, int, automaton::InputDrivenDPDA < >, automaton::InputDrivenDPDA < > > ( AutomatonCompare::compare ); +auto AutomatonCompareInputDrivenNPDA = registration::OverloadRegister < AutomatonCompare, int, automaton::InputDrivenNPDA < >, automaton::InputDrivenNPDA < > > ( AutomatonCompare::compare ); +auto AutomatonCompareVisiblyPushdownDPDA = registration::OverloadRegister < AutomatonCompare, int, automaton::VisiblyPushdownDPDA < >, automaton::VisiblyPushdownDPDA < > > ( AutomatonCompare::compare ); +auto AutomatonCompareVisiblyPushdownNPDA = registration::OverloadRegister < AutomatonCompare, int, automaton::VisiblyPushdownNPDA < >, automaton::VisiblyPushdownNPDA < > > ( AutomatonCompare::compare ); +auto AutomatonCompareRealTimeHeightDeterministicDPDA = registration::OverloadRegister < AutomatonCompare, int, automaton::RealTimeHeightDeterministicDPDA < >, automaton::RealTimeHeightDeterministicDPDA < > > ( AutomatonCompare::compare ); +auto AutomatonCompareRealTimeHeightDeterministicNPDA = registration::OverloadRegister < AutomatonCompare, int, automaton::RealTimeHeightDeterministicNPDA < >, automaton::RealTimeHeightDeterministicNPDA < > > ( AutomatonCompare::compare ); +auto AutomatonCompareSinglePopDPDA = registration::OverloadRegister < AutomatonCompare, int, automaton::SinglePopDPDA < >, automaton::SinglePopDPDA < > > ( AutomatonCompare::compare ); +auto AutomatonCompareSinglePopNPDA = registration::OverloadRegister < AutomatonCompare, int, automaton::SinglePopNPDA < >, automaton::SinglePopNPDA < > > ( AutomatonCompare::compare ); -auto AutomatonCompareOneTapeDTM = AutomatonCompare::RegistratorWrapper<int, automaton::OneTapeDTM < >, automaton::OneTapeDTM < > >(AutomatonCompare::compare); +auto AutomatonCompareOneTapeDTM = registration::OverloadRegister < AutomatonCompare, int, automaton::OneTapeDTM < >, automaton::OneTapeDTM < > > ( AutomatonCompare::compare ); int AutomatonCompare::compare(const automaton::Automaton& a, const automaton::Automaton& b) { return dispatch(a.getData(), b.getData()); diff --git a/acompare2/src/GrammarCompare.cpp b/acompare2/src/GrammarCompare.cpp index 560ba1b3ac..d279838daf 100644 --- a/acompare2/src/GrammarCompare.cpp +++ b/acompare2/src/GrammarCompare.cpp @@ -29,6 +29,7 @@ #include "grammar/ContextSensitive/NonContractingGrammar.h" #include "grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h" #include "grammar/Unrestricted/UnrestrictedGrammar.h" +#include <registration/AlgoRegistration.hpp> bool GrammarCompare::testCompare(const grammar::LeftLG < > & a, const grammar::LeftLG < > & b) { return a.getNonterminalAlphabet() == b.getNonterminalAlphabet() && @@ -559,22 +560,22 @@ void GrammarCompare::printCompare(const grammar::UnrestrictedGrammar < > & a, co } } -auto GrammarCompareLeftLG = GrammarCompare::RegistratorWrapper<int, grammar::LeftLG < >, grammar::LeftLG < > >(GrammarCompare::compare); -auto GrammarCompareLeftRG = GrammarCompare::RegistratorWrapper<int, grammar::LeftRG < >, grammar::LeftRG < > >(GrammarCompare::compare); -auto GrammarCompareRightLG = GrammarCompare::RegistratorWrapper<int, grammar::RightLG < >, grammar::RightLG < > >(GrammarCompare::compare); -auto GrammarCompareRightRG = GrammarCompare::RegistratorWrapper<int, grammar::RightRG < >, grammar::RightRG < > >(GrammarCompare::compare); +auto GrammarCompareLeftLG = registration::OverloadRegister < GrammarCompare, int, grammar::LeftLG < >, grammar::LeftLG < > > ( GrammarCompare::compare ); +auto GrammarCompareLeftRG = registration::OverloadRegister < GrammarCompare, int, grammar::LeftRG < >, grammar::LeftRG < > > ( GrammarCompare::compare ); +auto GrammarCompareRightLG = registration::OverloadRegister < GrammarCompare, int, grammar::RightLG < >, grammar::RightLG < > > ( GrammarCompare::compare ); +auto GrammarCompareRightRG = registration::OverloadRegister < GrammarCompare, int, grammar::RightRG < >, grammar::RightRG < > > ( GrammarCompare::compare ); -auto GrammarCompareLG = GrammarCompare::RegistratorWrapper<int, grammar::LG < >, grammar::LG < > >(GrammarCompare::compare); -auto GrammarCompareCFG = GrammarCompare::RegistratorWrapper<int, grammar::CFG < >, grammar::CFG < > >(GrammarCompare::compare); -auto GrammarCompareEpsilonFreeCFG = GrammarCompare::RegistratorWrapper<int, grammar::EpsilonFreeCFG < >, grammar::EpsilonFreeCFG < > >(GrammarCompare::compare); -auto GrammarCompareCNF = GrammarCompare::RegistratorWrapper<int, grammar::CNF < >, grammar::CNF < > >(GrammarCompare::compare); -auto GrammarCompareGNF = GrammarCompare::RegistratorWrapper<int, grammar::GNF < >, grammar::GNF < > >(GrammarCompare::compare); -auto GrammarCompareCSG = GrammarCompare::RegistratorWrapper<int, grammar::CSG < >, grammar::CSG < > >(GrammarCompare::compare); +auto GrammarCompareLG = registration::OverloadRegister < GrammarCompare, int, grammar::LG < >, grammar::LG < > > ( GrammarCompare::compare ); +auto GrammarCompareCFG = registration::OverloadRegister < GrammarCompare, int, grammar::CFG < >, grammar::CFG < > > ( GrammarCompare::compare ); +auto GrammarCompareEpsilonFreeCFG = registration::OverloadRegister < GrammarCompare, int, grammar::EpsilonFreeCFG < >, grammar::EpsilonFreeCFG < > > ( GrammarCompare::compare ); +auto GrammarCompareCNF = registration::OverloadRegister < GrammarCompare, int, grammar::CNF < >, grammar::CNF < > > ( GrammarCompare::compare ); +auto GrammarCompareGNF = registration::OverloadRegister < GrammarCompare, int, grammar::GNF < >, grammar::GNF < > > ( GrammarCompare::compare ); +auto GrammarCompareCSG = registration::OverloadRegister < GrammarCompare, int, grammar::CSG < >, grammar::CSG < > > ( GrammarCompare::compare ); -auto GrammarCompareNonContractingGrammar = GrammarCompare::RegistratorWrapper<int, grammar::NonContractingGrammar < >, grammar::NonContractingGrammar < > >(GrammarCompare::compare); -auto GrammarCompareContextPreservingUnrestrictedGrammar = GrammarCompare::RegistratorWrapper<int, grammar::ContextPreservingUnrestrictedGrammar < >, grammar::ContextPreservingUnrestrictedGrammar < > >(GrammarCompare::compare); +auto GrammarCompareNonContractingGrammar = registration::OverloadRegister < GrammarCompare, int, grammar::NonContractingGrammar < >, grammar::NonContractingGrammar < > > ( GrammarCompare::compare ); +auto GrammarCompareContextPreservingUnrestrictedGrammar = registration::OverloadRegister < GrammarCompare, int, grammar::ContextPreservingUnrestrictedGrammar < >, grammar::ContextPreservingUnrestrictedGrammar < > > ( GrammarCompare::compare ); -auto GrammarCompareUnrestrictedGrammar = GrammarCompare::RegistratorWrapper<int, grammar::UnrestrictedGrammar < >, grammar::UnrestrictedGrammar < > >(GrammarCompare::compare); +auto GrammarCompareUnrestrictedGrammar = registration::OverloadRegister < GrammarCompare, int, grammar::UnrestrictedGrammar < >, grammar::UnrestrictedGrammar < > > ( GrammarCompare::compare ); int GrammarCompare::compare(const grammar::Grammar& a, const grammar::Grammar& b) { return dispatch(a.getData(), b.getData()); diff --git a/acompare2/src/StringCompare.cpp b/acompare2/src/StringCompare.cpp index 4946e9c3aa..5919a5481e 100644 --- a/acompare2/src/StringCompare.cpp +++ b/acompare2/src/StringCompare.cpp @@ -9,6 +9,7 @@ #include "string/CyclicString.h" #include "string/LinearString.h" +#include <registration/AlgoRegistration.hpp> bool StringCompare::testCompare ( const string::LinearString < > & a, const string::LinearString < > & b ) { return a.getContent ( ) == b.getContent ( ) && a.getAlphabet ( ) == b.getAlphabet ( ); @@ -72,8 +73,8 @@ void StringCompare::printCompare ( const string::LinearString < > & a, const str } } -auto StringCompareLinear = StringCompare::RegistratorWrapper < int, string::LinearString < >, string::LinearString < > > ( StringCompare::compare ); -auto StringCompareCyclic = StringCompare::RegistratorWrapper < int, string::CyclicString < >, string::CyclicString < > > ( StringCompare::compare ); +auto StringCompareLinear = registration::OverloadRegister < StringCompare, int, string::LinearString < >, string::LinearString < > > ( StringCompare::compare ); +auto StringCompareCyclic = registration::OverloadRegister < StringCompare, int, string::CyclicString < >, string::CyclicString < > > ( StringCompare::compare ); int StringCompare::compare ( const string::String & a, const string::String & b ) { return dispatch ( a.getData ( ), b.getData ( ) ); diff --git a/aconvert2/src/DotConverter.cpp b/aconvert2/src/DotConverter.cpp index aa281a9f88..e7cb21094c 100644 --- a/aconvert2/src/DotConverter.cpp +++ b/aconvert2/src/DotConverter.cpp @@ -6,28 +6,29 @@ */ #include "DotConverter.h" +#include <registration/AlgoRegistration.hpp> void DotConverter::convert(std::ostream& out, const automaton::Automaton& a) { dispatch(out, a.getData()); } -auto DotConverterEpsilonNFA = DotConverter::RegistratorWrapper<void, automaton::EpsilonNFA < > >(DotConverter::convert); -auto DotConverterMultiInitialStateNFA = DotConverter::RegistratorWrapper<void, automaton::MultiInitialStateNFA < >>(DotConverter::convert); -auto DotConverterNFA = DotConverter::RegistratorWrapper<void, automaton::NFA < > >(DotConverter::convert); -auto DotConverterDFA = DotConverter::RegistratorWrapper<void, automaton::DFA < > >(DotConverter::convert); -auto DotConverterExtendedNFA = DotConverter::RegistratorWrapper<void, automaton::ExtendedNFA < > >(DotConverter::convert); -auto DotConverterCompactNFA = DotConverter::RegistratorWrapper<void, automaton::CompactNFA < > >(DotConverter::convert); -auto DotConverterNFTA = DotConverter::RegistratorWrapper<void, automaton::NFTA < > >(DotConverter::convert); -auto DotConverterDFTA = DotConverter::RegistratorWrapper<void, automaton::DFTA < > >(DotConverter::convert); -auto DotConverterDPDA = DotConverter::RegistratorWrapper<void, automaton::DPDA < > >(DotConverter::convert); -auto DotConverterSinglePopDPDA = DotConverter::RegistratorWrapper<void, automaton::SinglePopDPDA < > >(DotConverter::convert); -auto DotConverterInputDrivenDPDA = DotConverter::RegistratorWrapper<void, automaton::InputDrivenDPDA < > >(DotConverter::convert); -auto DotConverterInputDrivenNPDA = DotConverter::RegistratorWrapper<void, automaton::InputDrivenNPDA < > >(DotConverter::convert); -auto DotConverterVisiblyPushdownDPDA = DotConverter::RegistratorWrapper<void, automaton::VisiblyPushdownDPDA < > >(DotConverter::convert); -auto DotConverterVisiblyPushdownNPDA = DotConverter::RegistratorWrapper<void, automaton::VisiblyPushdownNPDA < > >(DotConverter::convert); -auto DotConverterRealTimeHeightDeterministicDPDA = DotConverter::RegistratorWrapper<void, automaton::RealTimeHeightDeterministicDPDA < > >(DotConverter::convert); -auto DotConverterRealTimeHeightDeterministicNPDA = DotConverter::RegistratorWrapper<void, automaton::RealTimeHeightDeterministicNPDA < > >(DotConverter::convert); -auto DotConverterNPDA = DotConverter::RegistratorWrapper<void, automaton::NPDA < > >(DotConverter::convert); -auto DotConverterSinglePopNPDA = DotConverter::RegistratorWrapper<void, automaton::SinglePopNPDA < > >(DotConverter::convert); -auto DotConverterOneTapeDTM = DotConverter::RegistratorWrapper<void, automaton::OneTapeDTM < > >(DotConverter::convert); +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 ); diff --git a/aconvert2/src/GasTexConverter.cpp b/aconvert2/src/GasTexConverter.cpp index e9845d297b..7c19576782 100644 --- a/aconvert2/src/GasTexConverter.cpp +++ b/aconvert2/src/GasTexConverter.cpp @@ -6,6 +6,7 @@ */ #include "GasTexConverter.h" +#include <registration/AlgoRegistration.hpp> void GasTexConverter::printTransitionMap(const std::map<std::pair<std::string, std::string>, std::string> transitionMap, std::ostream& out) { for (const auto& transition : transitionMap) { @@ -36,23 +37,23 @@ void GasTexConverter::convert(std::ostream& out, const automaton::Automaton& a) dispatch(out, a.getData()); } -auto GasTexConverterEpsilonNFA = GasTexConverter::RegistratorWrapper<void, automaton::EpsilonNFA < > >(GasTexConverter::convert); -auto GasTexConverterMultiInitialStateNFA = GasTexConverter::RegistratorWrapper<void, automaton::MultiInitialStateNFA < > >(GasTexConverter::convert); -auto GasTexConverterNFA = GasTexConverter::RegistratorWrapper<void, automaton::NFA < > >(GasTexConverter::convert); -auto GasTexConverterDFA = GasTexConverter::RegistratorWrapper<void, automaton::DFA < > >(GasTexConverter::convert); -auto GasTexConverterExtendedNFA = GasTexConverter::RegistratorWrapper<void, automaton::ExtendedNFA < > >(GasTexConverter::convert); -auto GasTexConverterCompactNFA = GasTexConverter::RegistratorWrapper<void, automaton::CompactNFA < > >(GasTexConverter::convert); -auto GasTexConverterNFTA = GasTexConverter::RegistratorWrapper<void, automaton::NFTA < > >(GasTexConverter::convert); -auto GasTexConverterDFTA = GasTexConverter::RegistratorWrapper<void, automaton::DFTA < > >(GasTexConverter::convert); -auto GasTexConverterDPDA = GasTexConverter::RegistratorWrapper<void, automaton::DPDA < > >(GasTexConverter::convert); -auto GasTexConverterSinglePopDPDA = GasTexConverter::RegistratorWrapper<void, automaton::SinglePopDPDA < > >(GasTexConverter::convert); -auto GasTexConverterInputDrivenDPDA = GasTexConverter::RegistratorWrapper<void, automaton::InputDrivenDPDA < > >(GasTexConverter::convert); -auto GasTexConverterInputDrivenNPDA = GasTexConverter::RegistratorWrapper<void, automaton::InputDrivenNPDA < > >(GasTexConverter::convert); -auto GasTexConverterVisiblyPushdownDPDA = GasTexConverter::RegistratorWrapper<void, automaton::VisiblyPushdownDPDA < > >(GasTexConverter::convert); -auto GasTexConverterVisiblyPushdownNPDA = GasTexConverter::RegistratorWrapper<void, automaton::VisiblyPushdownNPDA < > >(GasTexConverter::convert); -auto GasTexConverterRealTimeHeightDeterministicDPDA = GasTexConverter::RegistratorWrapper<void, automaton::RealTimeHeightDeterministicDPDA < > >(GasTexConverter::convert); -auto GasTexConverterRealTimeHeightDeterministicNPDA = GasTexConverter::RegistratorWrapper<void, automaton::RealTimeHeightDeterministicNPDA < > >(GasTexConverter::convert); -auto GasTexConverterNPDA = GasTexConverter::RegistratorWrapper<void, automaton::NPDA < > >(GasTexConverter::convert); -auto GasTexConverterSinglePopNPDA = GasTexConverter::RegistratorWrapper<void, automaton::SinglePopNPDA < > >(GasTexConverter::convert); -auto GasTexConverterOneTapeDTM = GasTexConverter::RegistratorWrapper<void, automaton::OneTapeDTM < > >(GasTexConverter::convert); +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 ); diff --git a/aconvert2/src/TikZConverter.cpp b/aconvert2/src/TikZConverter.cpp index b283e06dff..f379a53e7f 100644 --- a/aconvert2/src/TikZConverter.cpp +++ b/aconvert2/src/TikZConverter.cpp @@ -6,28 +6,29 @@ */ #include "TikZConverter.h" +#include <registration/AlgoRegistration.hpp> void TikZConverter::convert ( std::ostream & out, const automaton::Automaton & a ) { dispatch ( out, a.getData ( ) ); } -auto TikZConverterEpsilonNFA = TikZConverter::RegistratorWrapper < void, automaton::EpsilonNFA < > > ( TikZConverter::convert ); -auto TikZConverterMultiInitialStateNFA = TikZConverter::RegistratorWrapper < void, automaton::MultiInitialStateNFA < > > ( TikZConverter::convert ); -auto TikZConverterNFA = TikZConverter::RegistratorWrapper < void, automaton::NFA < > > ( TikZConverter::convert ); -auto TikZConverterDFA = TikZConverter::RegistratorWrapper < void, automaton::DFA < > > ( TikZConverter::convert ); -auto TikZConverterExtendedNFA = TikZConverter::RegistratorWrapper < void, automaton::ExtendedNFA < > > ( TikZConverter::convert ); -auto TikZConverterCompactNFA = TikZConverter::RegistratorWrapper < void, automaton::CompactNFA < > > ( TikZConverter::convert ); -auto TikZConverterNFTA = TikZConverter::RegistratorWrapper < void, automaton::NFTA < > > ( TikZConverter::convert ); -auto TikZConverterDFTA = TikZConverter::RegistratorWrapper < void, automaton::DFTA < > > ( TikZConverter::convert ); -auto TikZConverterDPDA = TikZConverter::RegistratorWrapper < void, automaton::DPDA < > > ( TikZConverter::convert ); -auto TikZConverterSinglePopDPDA = TikZConverter::RegistratorWrapper < void, automaton::SinglePopDPDA < > > ( TikZConverter::convert ); -auto TikZConverterInputDrivenDPDA = TikZConverter::RegistratorWrapper < void, automaton::InputDrivenDPDA < > > ( TikZConverter::convert ); -auto TikZConverterInputDrivenNPDA = TikZConverter::RegistratorWrapper < void, automaton::InputDrivenNPDA < > > ( TikZConverter::convert ); -auto TikZConverterVisiblyPushdownDPDA = TikZConverter::RegistratorWrapper < void, automaton::VisiblyPushdownDPDA < > > ( TikZConverter::convert ); -auto TikZConverterVisiblyPushdownNPDA = TikZConverter::RegistratorWrapper < void, automaton::VisiblyPushdownNPDA < > > ( TikZConverter::convert ); -auto TikZConverterRealTimeHeightDeterministicDPDA = TikZConverter::RegistratorWrapper < void, automaton::RealTimeHeightDeterministicDPDA < > > ( TikZConverter::convert ); -auto TikZConverterRealTimeHeightDeterministicNPDA = TikZConverter::RegistratorWrapper < void, automaton::RealTimeHeightDeterministicNPDA < > > ( TikZConverter::convert ); -auto TikZConverterNPDA = TikZConverter::RegistratorWrapper < void, automaton::NPDA < > > ( TikZConverter::convert ); -auto TikZConverterSinglePopNPDA = TikZConverter::RegistratorWrapper < void, automaton::SinglePopNPDA < > > ( TikZConverter::convert ); -auto TikZConverterOneTapeDTM = TikZConverter::RegistratorWrapper < void, automaton::OneTapeDTM < > > ( TikZConverter::convert ); +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 ); diff --git a/alib2algo/src/arbology/exact/BoyerMooreHorspool.cpp b/alib2algo/src/arbology/exact/BoyerMooreHorspool.cpp index d31d1e892b..1640c25357 100644 --- a/alib2algo/src/arbology/exact/BoyerMooreHorspool.cpp +++ b/alib2algo/src/arbology/exact/BoyerMooreHorspool.cpp @@ -6,6 +6,7 @@ */ #include "BoyerMooreHorspool.h" +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -15,9 +16,9 @@ std::set < unsigned > BoyerMooreHorspool::match ( const tree::Tree & subject, co return dispatch ( subject.getData ( ), pattern.getData ( ) ); } -auto BoyerMooreHorspoolPrefixRankedBarTreePrefixRankedBarTree = BoyerMooreHorspool::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarTree < > > ( BoyerMooreHorspool::match ); -auto BoyerMooreHorspoolPrefixRankedBarTreePrefixRankedBarPattern = BoyerMooreHorspool::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarPattern < > > ( BoyerMooreHorspool::match ); -auto BoyerMooreHorspoolPrefixRankedBarTreePrefixRankedBarNonlinearPattern = BoyerMooreHorspool::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarNonlinearPattern < > > ( BoyerMooreHorspool::match ); +auto BoyerMooreHorspoolPrefixRankedBarTreePrefixRankedBarTree = registration::OverloadRegister < BoyerMooreHorspool, std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarTree < > > ( BoyerMooreHorspool::match ); +auto BoyerMooreHorspoolPrefixRankedBarTreePrefixRankedBarPattern = registration::OverloadRegister < BoyerMooreHorspool, std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarPattern < > > ( BoyerMooreHorspool::match ); +auto BoyerMooreHorspoolPrefixRankedBarTreePrefixRankedBarNonlinearPattern = registration::OverloadRegister < BoyerMooreHorspool, std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarNonlinearPattern < > > ( BoyerMooreHorspool::match ); } /* namespace exact */ diff --git a/alib2algo/src/arbology/exact/DeadZoneUsingBadCharacterShiftAndBorderArray.cpp b/alib2algo/src/arbology/exact/DeadZoneUsingBadCharacterShiftAndBorderArray.cpp index 8ef1994b84..349e93c4d8 100644 --- a/alib2algo/src/arbology/exact/DeadZoneUsingBadCharacterShiftAndBorderArray.cpp +++ b/alib2algo/src/arbology/exact/DeadZoneUsingBadCharacterShiftAndBorderArray.cpp @@ -6,6 +6,7 @@ */ #include "DeadZoneUsingBadCharacterShiftAndBorderArray.h" +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -15,10 +16,10 @@ std::set < unsigned > DeadZoneUsingBadCharacterShiftAndBorderArray::match ( cons return dispatch ( subject.getData ( ), pattern.getData ( ) ); } -auto DeadZoneUsingBadCharacterShiftAndBorderArrayPrefixRankedBarTreePrefixRankedBarTree = DeadZoneUsingBadCharacterShiftAndBorderArray::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarTree < > > ( DeadZoneUsingBadCharacterShiftAndBorderArray::match ); -auto DeadZoneUsingBadCharacterShiftAndBorderArrayPrefixRankedBarTreePrefixRankedBarPattern = DeadZoneUsingBadCharacterShiftAndBorderArray::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarPattern < > > ( DeadZoneUsingBadCharacterShiftAndBorderArray::match ); -auto DeadZoneUsingBadCharacterShiftAndBorderArrayPrefixRankedTreePrefixRankedTree = DeadZoneUsingBadCharacterShiftAndBorderArray::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedTree < > > ( DeadZoneUsingBadCharacterShiftAndBorderArray::match ); -auto DeadZoneUsingBadCharacterShiftAndBorderArrayPrefixRankedTreePrefixRankedPattern = DeadZoneUsingBadCharacterShiftAndBorderArray::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedPattern < > > ( DeadZoneUsingBadCharacterShiftAndBorderArray::match ); +auto DeadZoneUsingBadCharacterShiftAndBorderArrayPrefixRankedBarTreePrefixRankedBarTree = registration::OverloadRegister < DeadZoneUsingBadCharacterShiftAndBorderArray, std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarTree < > > ( DeadZoneUsingBadCharacterShiftAndBorderArray::match ); +auto DeadZoneUsingBadCharacterShiftAndBorderArrayPrefixRankedBarTreePrefixRankedBarPattern = registration::OverloadRegister < DeadZoneUsingBadCharacterShiftAndBorderArray, std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarPattern < > > ( DeadZoneUsingBadCharacterShiftAndBorderArray::match ); +auto DeadZoneUsingBadCharacterShiftAndBorderArrayPrefixRankedTreePrefixRankedTree = registration::OverloadRegister < DeadZoneUsingBadCharacterShiftAndBorderArray, std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedTree < > > ( DeadZoneUsingBadCharacterShiftAndBorderArray::match ); +auto DeadZoneUsingBadCharacterShiftAndBorderArrayPrefixRankedTreePrefixRankedPattern = registration::OverloadRegister < DeadZoneUsingBadCharacterShiftAndBorderArray, std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedPattern < > > ( DeadZoneUsingBadCharacterShiftAndBorderArray::match ); } /* namespace exact */ diff --git a/alib2algo/src/arbology/exact/ExactNonlinearTreePatternAutomaton.cpp b/alib2algo/src/arbology/exact/ExactNonlinearTreePatternAutomaton.cpp index 28649b9ca6..b27ef0ab7c 100644 --- a/alib2algo/src/arbology/exact/ExactNonlinearTreePatternAutomaton.cpp +++ b/alib2algo/src/arbology/exact/ExactNonlinearTreePatternAutomaton.cpp @@ -15,6 +15,7 @@ #include <deque> #include <alphabet/RankedSymbol.h> +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -128,7 +129,7 @@ automaton::InputDrivenNPDA < > ExactNonlinearTreePatternAutomaton::construct ( c return constructInternal ( tree, subtreeWildcard, * nonlinearVariables.begin ( ), nonlinearVariables ); } -auto ExactNonlinearTreePatternAutomatonPrefixRankedTree = ExactNonlinearTreePatternAutomaton::RegistratorWrapper < automaton::InputDrivenNPDA < >, tree::PrefixRankedTree < > > ( ExactNonlinearTreePatternAutomaton::construct ); +auto ExactNonlinearTreePatternAutomatonPrefixRankedTree = registration::OverloadRegister < ExactNonlinearTreePatternAutomaton, automaton::InputDrivenNPDA < >, tree::PrefixRankedTree < > > ( ExactNonlinearTreePatternAutomaton::construct ); } /* namespace exact */ diff --git a/alib2algo/src/arbology/exact/ExactPatternMatch.cpp b/alib2algo/src/arbology/exact/ExactPatternMatch.cpp index bbb2ebdead..d6bfa10251 100644 --- a/alib2algo/src/arbology/exact/ExactPatternMatch.cpp +++ b/alib2algo/src/arbology/exact/ExactPatternMatch.cpp @@ -6,6 +6,7 @@ */ #include "ExactPatternMatch.h" +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -15,13 +16,13 @@ std::set < unsigned > ExactPatternMatch::match ( const tree::Tree & subject, con return dispatch ( subject.getData ( ), pattern.getData ( ) ); } -auto ExactPatternMatchUnrankedPattern = ExactPatternMatch::RegistratorWrapper < std::set < unsigned >, tree::UnrankedTree < >, tree::UnrankedPattern < > > ( ExactPatternMatch::match ); -auto ExactPatternMatchRankedPattern = ExactPatternMatch::RegistratorWrapper < std::set < unsigned >, tree::RankedTree < >, tree::RankedPattern < > > ( ExactPatternMatch::match ); -auto ExactPatternMatchRankedNonlinearPattern = ExactPatternMatch::RegistratorWrapper < std::set < unsigned >, tree::RankedTree < >, tree::RankedNonlinearPattern < > > ( ExactPatternMatch::match ); -auto ExactPatternMatchPrefixRankedPattern = ExactPatternMatch::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedPattern < > > ( ExactPatternMatch::match ); -auto ExactPatternMatchPrefixRankedNonlinearPattern = ExactPatternMatch::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedNonlinearPattern < > > ( ExactPatternMatch::match ); -auto ExactPatternMatchPrefixRankedBarPattern = ExactPatternMatch::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarPattern < > > ( ExactPatternMatch::match ); -auto ExactPatternMatchPrefixRankedBarNonlinearPattern = ExactPatternMatch::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarNonlinearPattern < > > ( ExactPatternMatch::match ); +auto ExactPatternMatchUnrankedPattern = registration::OverloadRegister < ExactPatternMatch, std::set < unsigned >, tree::UnrankedTree < >, tree::UnrankedPattern < > > ( ExactPatternMatch::match ); +auto ExactPatternMatchRankedPattern = registration::OverloadRegister < ExactPatternMatch, std::set < unsigned >, tree::RankedTree < >, tree::RankedPattern < > > ( ExactPatternMatch::match ); +auto ExactPatternMatchRankedNonlinearPattern = registration::OverloadRegister < ExactPatternMatch, std::set < unsigned >, tree::RankedTree < >, tree::RankedNonlinearPattern < > > ( ExactPatternMatch::match ); +auto ExactPatternMatchPrefixRankedPattern = registration::OverloadRegister < ExactPatternMatch, std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedPattern < > > ( ExactPatternMatch::match ); +auto ExactPatternMatchPrefixRankedNonlinearPattern = registration::OverloadRegister < ExactPatternMatch, std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedNonlinearPattern < > > ( ExactPatternMatch::match ); +auto ExactPatternMatchPrefixRankedBarPattern = registration::OverloadRegister < ExactPatternMatch, std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarPattern < > > ( ExactPatternMatch::match ); +auto ExactPatternMatchPrefixRankedBarNonlinearPattern = registration::OverloadRegister < ExactPatternMatch, std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarNonlinearPattern < > > ( ExactPatternMatch::match ); } /* namespace exact */ diff --git a/alib2algo/src/arbology/exact/ExactPatternMatchingAutomaton.cpp b/alib2algo/src/arbology/exact/ExactPatternMatchingAutomaton.cpp index b8cd013090..869dd5b68f 100644 --- a/alib2algo/src/arbology/exact/ExactPatternMatchingAutomaton.cpp +++ b/alib2algo/src/arbology/exact/ExactPatternMatchingAutomaton.cpp @@ -25,6 +25,7 @@ #include <deque> #include <alphabet/RankedSymbol.h> +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -38,7 +39,7 @@ automaton::InputDrivenNPDA < > ExactPatternMatchingAutomaton::construct ( const return ExactSubtreeMatchingAutomaton::construct ( pattern ); } -auto ExactPatternMatchingAutomatonPrefixRankedTree = ExactPatternMatchingAutomaton::RegistratorWrapper < automaton::InputDrivenNPDA < >, tree::PrefixRankedTree < > > ( ExactPatternMatchingAutomaton::construct ); +auto ExactPatternMatchingAutomatonPrefixRankedTree = registration::OverloadRegister < ExactPatternMatchingAutomaton, automaton::InputDrivenNPDA < >, tree::PrefixRankedTree < > > ( ExactPatternMatchingAutomaton::construct ); std::vector < DefaultSymbolType > computeRHS ( const tree::PrefixRankedPattern < > & pattern, const std::vector < int > & patternSubtreeJumpTable, int i ) { const std::vector < std::ranked_symbol < > > & content = pattern.getContent ( ); @@ -114,13 +115,13 @@ automaton::NPDA < > ExactPatternMatchingAutomaton::construct ( const tree::Prefi return res; } -auto ExactPatternMatchingAutomatonPrefixRankedPattern = ExactPatternMatchingAutomaton::RegistratorWrapper < automaton::NPDA < >, tree::PrefixRankedPattern < > > ( ExactPatternMatchingAutomaton::construct ); +auto ExactPatternMatchingAutomatonPrefixRankedPattern = registration::OverloadRegister < ExactPatternMatchingAutomaton, automaton::NPDA < >, tree::PrefixRankedPattern < > > ( ExactPatternMatchingAutomaton::construct ); automaton::InputDrivenNPDA < > ExactPatternMatchingAutomaton::construct ( const tree::PrefixRankedBarTree < > & pattern ) { return ExactSubtreeMatchingAutomaton::construct ( pattern ); } -auto ExactPatternMatchingAutomatonPrefixRankedBarTree = ExactPatternMatchingAutomaton::RegistratorWrapper < automaton::InputDrivenNPDA < >, tree::PrefixRankedBarTree < > > ( ExactPatternMatchingAutomaton::construct ); +auto ExactPatternMatchingAutomatonPrefixRankedBarTree = registration::OverloadRegister < ExactPatternMatchingAutomaton, automaton::InputDrivenNPDA < >, tree::PrefixRankedBarTree < > > ( ExactPatternMatchingAutomaton::construct ); automaton::VisiblyPushdownNPDA < > ExactPatternMatchingAutomaton::construct ( const tree::PrefixRankedBarPattern < > & pattern ) { automaton::VisiblyPushdownNPDA < > res ( alphabet::BottomOfTheStackSymbol::instance < DefaultSymbolType > ( ) ); @@ -187,13 +188,13 @@ automaton::VisiblyPushdownNPDA < > ExactPatternMatchingAutomaton::construct ( co return res; } -auto ExactPatternMatchingAutomatonPrefixRankedBarPattern = ExactPatternMatchingAutomaton::RegistratorWrapper < automaton::VisiblyPushdownNPDA < >, tree::PrefixRankedBarPattern < > > ( ExactPatternMatchingAutomaton::construct ); +auto ExactPatternMatchingAutomatonPrefixRankedBarPattern = registration::OverloadRegister < ExactPatternMatchingAutomaton, automaton::VisiblyPushdownNPDA < >, tree::PrefixRankedBarPattern < > > ( ExactPatternMatchingAutomaton::construct ); automaton::NFTA < > ExactPatternMatchingAutomaton::construct ( const tree::RankedTree < > & pattern ) { return ExactSubtreeMatchingAutomaton::construct ( pattern ); } -auto ExactPatternMatchingAutomatonRankedTree = ExactPatternMatchingAutomaton::RegistratorWrapper < automaton::NFTA < >, tree::RankedTree < > > ( ExactPatternMatchingAutomaton::construct ); +auto ExactPatternMatchingAutomatonRankedTree = registration::OverloadRegister < ExactPatternMatchingAutomaton, automaton::NFTA < >, tree::RankedTree < > > ( ExactPatternMatchingAutomaton::construct ); DefaultStateType constructRecursivePattern ( const std::tree < std::ranked_symbol < > > & node, automaton::NFTA < > & res, const std::ranked_symbol < > & subtreeWildcard, const DefaultStateType & loopState, int & nextState ) { if ( node.getData ( ) == subtreeWildcard ) { @@ -252,7 +253,7 @@ automaton::NFTA < > ExactPatternMatchingAutomaton::construct ( const tree::Ranke return res; } -auto ExactPatternMatchingAutomatonRankedPattern = ExactPatternMatchingAutomaton::RegistratorWrapper < automaton::NFTA < >, tree::RankedPattern < > > ( ExactPatternMatchingAutomaton::construct ); +auto ExactPatternMatchingAutomatonRankedPattern = registration::OverloadRegister < ExactPatternMatchingAutomaton, automaton::NFTA < >, tree::RankedPattern < > > ( ExactPatternMatchingAutomaton::construct ); } /* namespace exact */ diff --git a/alib2algo/src/arbology/exact/ExactSubtreeAutomaton.cpp b/alib2algo/src/arbology/exact/ExactSubtreeAutomaton.cpp index d6e8ff4c6b..afb93c4964 100644 --- a/alib2algo/src/arbology/exact/ExactSubtreeAutomaton.cpp +++ b/alib2algo/src/arbology/exact/ExactSubtreeAutomaton.cpp @@ -13,6 +13,7 @@ #include <alphabet/RankedSymbol.h> #include <deque> +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -46,7 +47,7 @@ automaton::InputDrivenNPDA < > ExactSubtreeAutomaton::construct ( const tree::Pr return res; } -auto ExactSubtreeAutomatonPrefixRankedTree = ExactSubtreeAutomaton::RegistratorWrapper < automaton::InputDrivenNPDA < >, tree::PrefixRankedTree < > > ( ExactSubtreeAutomaton::construct ); +auto ExactSubtreeAutomatonPrefixRankedTree = registration::OverloadRegister < ExactSubtreeAutomaton, automaton::InputDrivenNPDA < >, tree::PrefixRankedTree < > > ( ExactSubtreeAutomaton::construct ); } /* namespace exact */ diff --git a/alib2algo/src/arbology/exact/ExactSubtreeMatch.cpp b/alib2algo/src/arbology/exact/ExactSubtreeMatch.cpp index 22d0f0bcfd..cf35207beb 100644 --- a/alib2algo/src/arbology/exact/ExactSubtreeMatch.cpp +++ b/alib2algo/src/arbology/exact/ExactSubtreeMatch.cpp @@ -6,6 +6,7 @@ */ #include "ExactSubtreeMatch.h" +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -15,10 +16,10 @@ std::set < unsigned > ExactSubtreeMatch::match ( const tree::Tree & subject, con return dispatch ( subject.getData ( ), pattern.getData ( ) ); } -auto ExactSubtreeMatchUnrankedTree = ExactSubtreeMatch::RegistratorWrapper < std::set < unsigned >, tree::UnrankedTree < > > ( ExactSubtreeMatch::match ); -auto ExactSubtreeMatchRankedTree = ExactSubtreeMatch::RegistratorWrapper < std::set < unsigned >, tree::RankedTree < > > ( ExactSubtreeMatch::match ); -auto ExactSubtreeMatchPrefixRankedTree = ExactSubtreeMatch::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedTree < > > ( ExactSubtreeMatch::match ); -auto ExactSubtreeMatchPrefixRankedBarTree = ExactSubtreeMatch::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarTree < > > ( ExactSubtreeMatch::match ); +auto ExactSubtreeMatchUnrankedTree = registration::OverloadRegister < ExactSubtreeMatch, std::set < unsigned >, tree::UnrankedTree < > > ( ExactSubtreeMatch::match ); +auto ExactSubtreeMatchRankedTree = registration::OverloadRegister < ExactSubtreeMatch, std::set < unsigned >, tree::RankedTree < > > ( ExactSubtreeMatch::match ); +auto ExactSubtreeMatchPrefixRankedTree = registration::OverloadRegister < ExactSubtreeMatch, std::set < unsigned >, tree::PrefixRankedTree < > > ( ExactSubtreeMatch::match ); +auto ExactSubtreeMatchPrefixRankedBarTree = registration::OverloadRegister < ExactSubtreeMatch, std::set < unsigned >, tree::PrefixRankedBarTree < > > ( ExactSubtreeMatch::match ); } /* namespace exact */ diff --git a/alib2algo/src/arbology/exact/ExactSubtreeMatchingAutomaton.cpp b/alib2algo/src/arbology/exact/ExactSubtreeMatchingAutomaton.cpp index 58756dc272..28de78f9d5 100644 --- a/alib2algo/src/arbology/exact/ExactSubtreeMatchingAutomaton.cpp +++ b/alib2algo/src/arbology/exact/ExactSubtreeMatchingAutomaton.cpp @@ -16,6 +16,7 @@ #include <alphabet/BottomOfTheStackSymbol.h> #include <deque> +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -49,7 +50,7 @@ automaton::InputDrivenNPDA < > ExactSubtreeMatchingAutomaton::construct ( const return res; } -auto ExactSubtreeMatchingAutomatonPrefixRankedTree = ExactSubtreeMatchingAutomaton::RegistratorWrapper < automaton::InputDrivenNPDA < >, tree::PrefixRankedTree < > > ( ExactSubtreeMatchingAutomaton::construct ); +auto ExactSubtreeMatchingAutomatonPrefixRankedTree = registration::OverloadRegister < ExactSubtreeMatchingAutomaton, automaton::InputDrivenNPDA < >, tree::PrefixRankedTree < > > ( ExactSubtreeMatchingAutomaton::construct ); automaton::InputDrivenNPDA < > ExactSubtreeMatchingAutomaton::construct ( const tree::PrefixRankedBarTree < > & pattern ) { automaton::InputDrivenNPDA < > res ( DefaultStateType ( 0 ), alphabet::BottomOfTheStackSymbol::instance < DefaultSymbolType > ( ) ); @@ -81,7 +82,7 @@ automaton::InputDrivenNPDA < > ExactSubtreeMatchingAutomaton::construct ( const return res; } -auto ExactSubtreeMatchingAutomatonPrefixRankedBarTree = ExactSubtreeMatchingAutomaton::RegistratorWrapper < automaton::InputDrivenNPDA < >, tree::PrefixRankedBarTree < > > ( ExactSubtreeMatchingAutomaton::construct ); +auto ExactSubtreeMatchingAutomatonPrefixRankedBarTree = registration::OverloadRegister < ExactSubtreeMatchingAutomaton, automaton::InputDrivenNPDA < >, tree::PrefixRankedBarTree < > > ( ExactSubtreeMatchingAutomaton::construct ); DefaultStateType constructRecursive ( const std::tree < std::ranked_symbol < > > & node, automaton::NFTA < > & res, int & nextState ) { std::vector < DefaultStateType > states; @@ -106,7 +107,7 @@ automaton::NFTA < > ExactSubtreeMatchingAutomaton::construct ( const tree::Ranke return res; } -auto ExactSubtreeMatchingAutomatonRankedTree = ExactSubtreeMatchingAutomaton::RegistratorWrapper < automaton::NFTA < >, tree::RankedTree < > > ( ExactSubtreeMatchingAutomaton::construct ); +auto ExactSubtreeMatchingAutomatonRankedTree = registration::OverloadRegister < ExactSubtreeMatchingAutomaton, automaton::NFTA < >, tree::RankedTree < > > ( ExactSubtreeMatchingAutomaton::construct ); } /* namespace exact */ diff --git a/alib2algo/src/arbology/exact/ExactTreePatternAutomaton.cpp b/alib2algo/src/arbology/exact/ExactTreePatternAutomaton.cpp index be08b6bc07..9771dd8a36 100644 --- a/alib2algo/src/arbology/exact/ExactTreePatternAutomaton.cpp +++ b/alib2algo/src/arbology/exact/ExactTreePatternAutomaton.cpp @@ -13,6 +13,7 @@ #include <automaton/PDA/InputDrivenNPDA.h> #include <deque> +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -59,7 +60,7 @@ automaton::InputDrivenNPDA < > ExactTreePatternAutomaton::construct ( const tree return res; } -auto ExactTreePatternAutomatonPrefixRankedTree = ExactTreePatternAutomaton::RegistratorWrapper < automaton::InputDrivenNPDA < >, tree::PrefixRankedTree < > > ( ExactTreePatternAutomaton::construct ); +auto ExactTreePatternAutomatonPrefixRankedTree = registration::OverloadRegister < ExactTreePatternAutomaton, automaton::InputDrivenNPDA < >, tree::PrefixRankedTree < > > ( ExactTreePatternAutomaton::construct ); } /* namespace exact */ diff --git a/alib2algo/src/arbology/exact/KnuthMorrisPratt.cpp b/alib2algo/src/arbology/exact/KnuthMorrisPratt.cpp index 8810d77956..8ac67d5dad 100644 --- a/alib2algo/src/arbology/exact/KnuthMorrisPratt.cpp +++ b/alib2algo/src/arbology/exact/KnuthMorrisPratt.cpp @@ -16,6 +16,7 @@ #include <tree/ranked/PrefixRankedPattern.h> #include <map> +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -29,7 +30,7 @@ std::set < unsigned > KnuthMorrisPratt::match ( const tree::PrefixRankedBarTree return match ( subject, tree::PrefixRankedBarPattern < > ( pattern ) ); } -auto KnuthMorrisPrattPrefixRankedBarTreePrefixRankedBarTree = KnuthMorrisPratt::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarTree < > > ( KnuthMorrisPratt::match ); +auto KnuthMorrisPrattPrefixRankedBarTreePrefixRankedBarTree = registration::OverloadRegister < KnuthMorrisPratt, std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarTree < > > ( KnuthMorrisPratt::match ); std::set < unsigned > KnuthMorrisPratt::match ( const tree::PrefixRankedBarTree < > & subject, const tree::PrefixRankedBarPattern < > & pattern ) { std::set < unsigned > occ; @@ -72,13 +73,13 @@ std::set < unsigned > KnuthMorrisPratt::match ( const tree::PrefixRankedBarTree return occ; } -auto KnuthMorrisPrattPrefixRankedBarTreePrefixRankedBarPattern = KnuthMorrisPratt::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarPattern < > > ( KnuthMorrisPratt::match ); +auto KnuthMorrisPrattPrefixRankedBarTreePrefixRankedBarPattern = registration::OverloadRegister < KnuthMorrisPratt, std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarPattern < > > ( KnuthMorrisPratt::match ); std::set < unsigned > KnuthMorrisPratt::match ( const tree::PrefixRankedTree < > & subject, const tree::PrefixRankedTree < > & pattern ) { return match ( subject, tree::PrefixRankedPattern < > ( pattern ) ); } -auto KnuthMorrisPrattPrefixRankedTreePrefixRankedTree = KnuthMorrisPratt::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedTree < > > ( KnuthMorrisPratt::match ); +auto KnuthMorrisPrattPrefixRankedTreePrefixRankedTree = registration::OverloadRegister < KnuthMorrisPratt, std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedTree < > > ( KnuthMorrisPratt::match ); std::set < unsigned > KnuthMorrisPratt::match ( const tree::PrefixRankedTree < > & subject, const tree::PrefixRankedPattern < > & pattern ) { std::set < unsigned > occ; @@ -121,7 +122,7 @@ std::set < unsigned > KnuthMorrisPratt::match ( const tree::PrefixRankedTree < > return occ; } -auto KnuthMorrisPrattPrefixRankedTreePrefixRankedPattern = KnuthMorrisPratt::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedPattern < > > ( KnuthMorrisPratt::match ); +auto KnuthMorrisPrattPrefixRankedTreePrefixRankedPattern = registration::OverloadRegister < KnuthMorrisPratt, std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedPattern < > > ( KnuthMorrisPratt::match ); } /* namespace exact */ diff --git a/alib2algo/src/arbology/exact/ReversedBoyerMooreHorspool.cpp b/alib2algo/src/arbology/exact/ReversedBoyerMooreHorspool.cpp index 8535cf8561..7df9b027dd 100644 --- a/alib2algo/src/arbology/exact/ReversedBoyerMooreHorspool.cpp +++ b/alib2algo/src/arbology/exact/ReversedBoyerMooreHorspool.cpp @@ -6,6 +6,7 @@ */ #include "ReversedBoyerMooreHorspool.h" +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -15,12 +16,12 @@ std::set < unsigned > ReversedBoyerMooreHorspool::match ( const tree::Tree & sub return dispatch ( subject.getData ( ), pattern.getData ( ) ); } -auto ReversedBoyerMooreHorspoolPrefixRankedBarTreePrefixRankedBarTree = ReversedBoyerMooreHorspool::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarTree < > > ( ReversedBoyerMooreHorspool::match ); -auto ReversedBoyerMooreHorspoolPrefixRankedBarTreePrefixRankedBarPattern = ReversedBoyerMooreHorspool::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarPattern < > > ( ReversedBoyerMooreHorspool::match ); -auto ReversedBoyerMooreHorspoolPrefixRankedBarTreePrefixRankedBarNonlinearPattern = ReversedBoyerMooreHorspool::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarNonlinearPattern < > > ( ReversedBoyerMooreHorspool::match ); -auto ReversedBoyerMooreHorspoolPrefixRankedBarTreePrefixRankedTree = ReversedBoyerMooreHorspool::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedTree < > > ( ReversedBoyerMooreHorspool::match ); -auto ReversedBoyerMooreHorspoolPrefixRankedBarTreePrefixRankedPattern = ReversedBoyerMooreHorspool::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedPattern < > > ( ReversedBoyerMooreHorspool::match ); -auto ReversedBoyerMooreHorspoolPrefixRankedBarTreePrefixRankedNonlinearPattern = ReversedBoyerMooreHorspool::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedNonlinearPattern < > > ( ReversedBoyerMooreHorspool::match ); +auto ReversedBoyerMooreHorspoolPrefixRankedBarTreePrefixRankedBarTree = registration::OverloadRegister < ReversedBoyerMooreHorspool, std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarTree < > > ( ReversedBoyerMooreHorspool::match ); +auto ReversedBoyerMooreHorspoolPrefixRankedBarTreePrefixRankedBarPattern = registration::OverloadRegister < ReversedBoyerMooreHorspool, std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarPattern < > > ( ReversedBoyerMooreHorspool::match ); +auto ReversedBoyerMooreHorspoolPrefixRankedBarTreePrefixRankedBarNonlinearPattern = registration::OverloadRegister < ReversedBoyerMooreHorspool, std::set < unsigned >, tree::PrefixRankedBarTree < >, tree::PrefixRankedBarNonlinearPattern < > > ( ReversedBoyerMooreHorspool::match ); +auto ReversedBoyerMooreHorspoolPrefixRankedBarTreePrefixRankedTree = registration::OverloadRegister < ReversedBoyerMooreHorspool, std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedTree < > > ( ReversedBoyerMooreHorspool::match ); +auto ReversedBoyerMooreHorspoolPrefixRankedBarTreePrefixRankedPattern = registration::OverloadRegister < ReversedBoyerMooreHorspool, std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedPattern < > > ( ReversedBoyerMooreHorspool::match ); +auto ReversedBoyerMooreHorspoolPrefixRankedBarTreePrefixRankedNonlinearPattern = registration::OverloadRegister < ReversedBoyerMooreHorspool, std::set < unsigned >, tree::PrefixRankedTree < >, tree::PrefixRankedNonlinearPattern < > > ( ReversedBoyerMooreHorspool::match ); } /* namespace exact */ diff --git a/alib2algo/src/arbology/indexing/CompressedBitParallelIndexConstruction.cpp b/alib2algo/src/arbology/indexing/CompressedBitParallelIndexConstruction.cpp index e1019f6e80..d2a8d13ff5 100644 --- a/alib2algo/src/arbology/indexing/CompressedBitParallelIndexConstruction.cpp +++ b/alib2algo/src/arbology/indexing/CompressedBitParallelIndexConstruction.cpp @@ -6,6 +6,7 @@ */ #include "CompressedBitParallelIndexConstruction.h" +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -15,9 +16,9 @@ indexes::arbology::CompressedBitParallelTreeIndex < std::ranked_symbol < Default return dispatch ( tree.getData ( ) ); } -auto compressedBitParallelIndexConstructionPrefixRankedTree = CompressedBitParallelIndexConstruction::RegistratorWrapper < indexes::arbology::CompressedBitParallelTreeIndex < std::ranked_symbol < DefaultSymbolType, DefaultRankType > >, tree::PrefixRankedTree < > > ( CompressedBitParallelIndexConstruction::construct ); +auto compressedBitParallelIndexConstructionPrefixRankedTree = registration::OverloadRegister < CompressedBitParallelIndexConstruction, indexes::arbology::CompressedBitParallelTreeIndex < std::ranked_symbol < DefaultSymbolType, DefaultRankType > >, tree::PrefixRankedTree < > > ( CompressedBitParallelIndexConstruction::construct ); -auto compressedBitParallelIndexConstructionPrefixRankedBarTree = CompressedBitParallelIndexConstruction::RegistratorWrapper < indexes::arbology::CompressedBitParallelTreeIndex < std::ranked_symbol < DefaultSymbolType, DefaultRankType > >, tree::PrefixRankedBarTree < > > ( CompressedBitParallelIndexConstruction::construct ); +auto compressedBitParallelIndexConstructionPrefixRankedBarTree = registration::OverloadRegister < CompressedBitParallelIndexConstruction, indexes::arbology::CompressedBitParallelTreeIndex < std::ranked_symbol < DefaultSymbolType, DefaultRankType > >, tree::PrefixRankedBarTree < > > ( CompressedBitParallelIndexConstruction::construct ); } /* namespace indexing */ diff --git a/alib2algo/src/arbology/indexing/FullAndLinearIndexConstruction.cpp b/alib2algo/src/arbology/indexing/FullAndLinearIndexConstruction.cpp index e29d4d88be..98897749f2 100644 --- a/alib2algo/src/arbology/indexing/FullAndLinearIndexConstruction.cpp +++ b/alib2algo/src/arbology/indexing/FullAndLinearIndexConstruction.cpp @@ -6,6 +6,7 @@ */ #include "FullAndLinearIndexConstruction.h" +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -15,8 +16,8 @@ indexes::arbology::FullAndLinearIndex < std::ranked_symbol < DefaultSymbolType, return dispatch ( tree.getData ( ) ); } -auto fullAndLinearIndexConstructionPrefixRankedTree = FullAndLinearIndexConstruction::RegistratorWrapper < indexes::arbology::FullAndLinearIndex < std::ranked_symbol < DefaultSymbolType, DefaultRankType > >, tree::PrefixRankedTree < > > ( FullAndLinearIndexConstruction::construct ); -auto fullAndLinearIndexConstructionPrefixRankedBarTree = FullAndLinearIndexConstruction::RegistratorWrapper < indexes::arbology::FullAndLinearIndex < std::ranked_symbol < DefaultSymbolType, DefaultRankType > >, tree::PrefixRankedBarTree < > > ( FullAndLinearIndexConstruction::construct ); +auto fullAndLinearIndexConstructionPrefixRankedTree = registration::OverloadRegister < FullAndLinearIndexConstruction, indexes::arbology::FullAndLinearIndex < std::ranked_symbol < DefaultSymbolType, DefaultRankType > >, tree::PrefixRankedTree < > > ( FullAndLinearIndexConstruction::construct ); +auto fullAndLinearIndexConstructionPrefixRankedBarTree = registration::OverloadRegister < FullAndLinearIndexConstruction, indexes::arbology::FullAndLinearIndex < std::ranked_symbol < DefaultSymbolType, DefaultRankType > >, tree::PrefixRankedBarTree < > > ( FullAndLinearIndexConstruction::construct ); } /* namespace indexing */ diff --git a/alib2algo/src/arbology/indexing/NonlinearFullAndLinearIndexConstruction.cpp b/alib2algo/src/arbology/indexing/NonlinearFullAndLinearIndexConstruction.cpp index 63fbe97096..46521fb84f 100644 --- a/alib2algo/src/arbology/indexing/NonlinearFullAndLinearIndexConstruction.cpp +++ b/alib2algo/src/arbology/indexing/NonlinearFullAndLinearIndexConstruction.cpp @@ -6,6 +6,7 @@ */ #include "NonlinearFullAndLinearIndexConstruction.h" +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -15,8 +16,8 @@ indexes::arbology::NonlinearFullAndLinearIndex < std::ranked_symbol < DefaultSym return dispatch ( tree.getData ( ) ); } -auto nonlinearFullAndLinearIndexConstructionPrefixRankedTree = NonlinearFullAndLinearIndexConstruction::RegistratorWrapper < indexes::arbology::NonlinearFullAndLinearIndex < std::ranked_symbol < DefaultSymbolType, DefaultRankType > >, tree::PrefixRankedTree < > > ( NonlinearFullAndLinearIndexConstruction::construct ); -auto nonlinearFullAndLinearIndexConstructionPrefixRankedBarTree = NonlinearFullAndLinearIndexConstruction::RegistratorWrapper < indexes::arbology::NonlinearFullAndLinearIndex < std::ranked_symbol < DefaultSymbolType, DefaultRankType > >, tree::PrefixRankedBarTree < > > ( NonlinearFullAndLinearIndexConstruction::construct ); +auto nonlinearFullAndLinearIndexConstructionPrefixRankedTree = registration::OverloadRegister < NonlinearFullAndLinearIndexConstruction, indexes::arbology::NonlinearFullAndLinearIndex < std::ranked_symbol < DefaultSymbolType, DefaultRankType > >, tree::PrefixRankedTree < > > ( NonlinearFullAndLinearIndexConstruction::construct ); +auto nonlinearFullAndLinearIndexConstructionPrefixRankedBarTree = registration::OverloadRegister < NonlinearFullAndLinearIndexConstruction, indexes::arbology::NonlinearFullAndLinearIndex < std::ranked_symbol < DefaultSymbolType, DefaultRankType > >, tree::PrefixRankedBarTree < > > ( NonlinearFullAndLinearIndexConstruction::construct ); } /* namespace indexing */ diff --git a/alib2algo/src/arbology/query/CompressedBitParallelismPatterns.cpp b/alib2algo/src/arbology/query/CompressedBitParallelismPatterns.cpp index 1d6da3515b..54c98682af 100644 --- a/alib2algo/src/arbology/query/CompressedBitParallelismPatterns.cpp +++ b/alib2algo/src/arbology/query/CompressedBitParallelismPatterns.cpp @@ -8,6 +8,7 @@ #include "CompressedBitParallelismPatterns.h" #include <tree/ranked/PrefixRankedPattern.h> +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -17,8 +18,8 @@ std::set < unsigned > CompressedBitParallelismPatterns::query ( const indexes::a return dispatch ( compressedBitParallelIndex, tree.getData ( ) ); } -auto CompressedBitParallelismPatternsPrefixRankedPattern = CompressedBitParallelismPatterns::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedPattern < > > ( CompressedBitParallelismPatterns::query ); -auto CompressedBitParallelismPatternsPrefixRankedBarPattern = CompressedBitParallelismPatterns::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarPattern < > > ( CompressedBitParallelismPatterns::query ); +auto CompressedBitParallelismPatternsPrefixRankedPattern = registration::OverloadRegister < CompressedBitParallelismPatterns, std::set < unsigned >, tree::PrefixRankedPattern < > > ( CompressedBitParallelismPatterns::query ); +auto CompressedBitParallelismPatternsPrefixRankedBarPattern = registration::OverloadRegister < CompressedBitParallelismPatterns, std::set < unsigned >, tree::PrefixRankedBarPattern < > > ( CompressedBitParallelismPatterns::query ); } /* namespace query */ diff --git a/alib2algo/src/arbology/query/FullAndLinearIndexPatterns.cpp b/alib2algo/src/arbology/query/FullAndLinearIndexPatterns.cpp index dde3553975..39f76f30ce 100644 --- a/alib2algo/src/arbology/query/FullAndLinearIndexPatterns.cpp +++ b/alib2algo/src/arbology/query/FullAndLinearIndexPatterns.cpp @@ -8,6 +8,7 @@ #include "FullAndLinearIndexPatterns.h" #include <tree/ranked/PrefixRankedPattern.h> +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -17,8 +18,8 @@ std::set < unsigned > FullAndLinearIndexPatterns::query ( const indexes::arbolog return dispatch ( fullAndLinearIndex, tree.getData ( ) ); } -auto fullAndLinearIndexPatternsPrefixRankedPattern = FullAndLinearIndexPatterns::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedPattern < > > ( FullAndLinearIndexPatterns::query ); -auto fullAndLinearIndexPatternsPrefixRankedBarPattern = FullAndLinearIndexPatterns::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarPattern < > > ( FullAndLinearIndexPatterns::query ); +auto fullAndLinearIndexPatternsPrefixRankedPattern = registration::OverloadRegister < FullAndLinearIndexPatterns, std::set < unsigned >, tree::PrefixRankedPattern < > > ( FullAndLinearIndexPatterns::query ); +auto fullAndLinearIndexPatternsPrefixRankedBarPattern = registration::OverloadRegister < FullAndLinearIndexPatterns, std::set < unsigned >, tree::PrefixRankedBarPattern < > > ( FullAndLinearIndexPatterns::query ); } /* namespace query */ diff --git a/alib2algo/src/arbology/query/NonlinearFullAndLinearIndexPatterns.cpp b/alib2algo/src/arbology/query/NonlinearFullAndLinearIndexPatterns.cpp index 957011a4c6..e6533ca90e 100644 --- a/alib2algo/src/arbology/query/NonlinearFullAndLinearIndexPatterns.cpp +++ b/alib2algo/src/arbology/query/NonlinearFullAndLinearIndexPatterns.cpp @@ -8,6 +8,7 @@ #include "NonlinearFullAndLinearIndexPatterns.h" #include <tree/ranked/PrefixRankedPattern.h> +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -17,8 +18,8 @@ std::set < unsigned > NonlinearFullAndLinearIndexPatterns::query ( const indexes return dispatch ( nonlinearFullAndLinearIndex, tree.getData ( ) ); } -auto nonlinearFullAndLinearIndexPatternsPrefixRankedPattern = NonlinearFullAndLinearIndexPatterns::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedNonlinearPattern < > > ( NonlinearFullAndLinearIndexPatterns::query ); -auto nonlinearFullAndLinearIndexPatternsPrefixRankedBarPattern = NonlinearFullAndLinearIndexPatterns::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarNonlinearPattern < > > ( NonlinearFullAndLinearIndexPatterns::query ); +auto nonlinearFullAndLinearIndexPatternsPrefixRankedPattern = registration::OverloadRegister < NonlinearFullAndLinearIndexPatterns, std::set < unsigned >, tree::PrefixRankedNonlinearPattern < > > ( NonlinearFullAndLinearIndexPatterns::query ); +auto nonlinearFullAndLinearIndexPatternsPrefixRankedBarPattern = registration::OverloadRegister < NonlinearFullAndLinearIndexPatterns, std::set < unsigned >, tree::PrefixRankedBarNonlinearPattern < > > ( NonlinearFullAndLinearIndexPatterns::query ); } /* namespace query */ diff --git a/alib2algo/src/arbology/transform/BeginToEndIndex.cpp b/alib2algo/src/arbology/transform/BeginToEndIndex.cpp index 06031a5e83..af95b051ff 100644 --- a/alib2algo/src/arbology/transform/BeginToEndIndex.cpp +++ b/alib2algo/src/arbology/transform/BeginToEndIndex.cpp @@ -6,6 +6,7 @@ */ #include "BeginToEndIndex.h" +#include <registration/AlgoRegistration.hpp> namespace arbology { @@ -15,8 +16,8 @@ std::set < unsigned > BeginToEndIndex::transform ( const tree::Tree & subject, c return dispatch ( subject.getData ( ), indexes ); } -auto BeginToEndIndexPrefixRankedBarTreePrefixRankedBarTree = BeginToEndIndex::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarTree < > > ( BeginToEndIndex::transform ); -auto BeginToEndIndexPrefixRankedBarTreePrefixRankedBarPattern = BeginToEndIndex::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedTree < > > ( BeginToEndIndex::transform ); +auto BeginToEndIndexPrefixRankedBarTreePrefixRankedBarTree = registration::OverloadRegister < BeginToEndIndex, std::set < unsigned >, tree::PrefixRankedBarTree < > > ( BeginToEndIndex::transform ); +auto BeginToEndIndexPrefixRankedBarTreePrefixRankedBarPattern = registration::OverloadRegister < BeginToEndIndex, std::set < unsigned >, tree::PrefixRankedTree < > > ( BeginToEndIndex::transform ); } /* namespace transform */ diff --git a/alib2algo/src/automaton/convert/ToGrammar.cpp b/alib2algo/src/automaton/convert/ToGrammar.cpp index 469033cba8..24f5d08433 100644 --- a/alib2algo/src/automaton/convert/ToGrammar.cpp +++ b/alib2algo/src/automaton/convert/ToGrammar.cpp @@ -6,6 +6,7 @@ */ #include "ToGrammar.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -15,9 +16,9 @@ grammar::Grammar ToGrammar::convert(const automaton::Automaton& automaton) { return dispatch(automaton.getData()); } -auto ToGrammarNFA = ToGrammar::RegistratorWrapper<grammar::Grammar, automaton::NFA < > >(ToGrammar::convert); +auto ToGrammarNFA = registration::OverloadRegister < ToGrammar, grammar::Grammar, automaton::NFA < > >(ToGrammar::convert); -auto ToGrammarDFA = ToGrammar::RegistratorWrapper<grammar::Grammar, automaton::DFA < > >(ToGrammar::convert); +auto ToGrammarDFA = registration::OverloadRegister < ToGrammar, grammar::Grammar, automaton::DFA < > >(ToGrammar::convert); } /* namespace convert */ diff --git a/alib2algo/src/automaton/convert/ToGrammarLeftRG.cpp b/alib2algo/src/automaton/convert/ToGrammarLeftRG.cpp index 2814f5ae91..5b4eeafbe7 100644 --- a/alib2algo/src/automaton/convert/ToGrammarLeftRG.cpp +++ b/alib2algo/src/automaton/convert/ToGrammarLeftRG.cpp @@ -10,6 +10,7 @@ #include <common/createUnique.hpp> #include <alphabet/InitialSymbol.h> +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -64,7 +65,7 @@ grammar::LeftRG < > ToGrammarLeftRG::convert(const automaton::NFA < > & automato return grammar; } -auto ToGrammarLeftRGNFA = ToGrammarLeftRG::RegistratorWrapper<grammar::LeftRG < >, automaton::NFA < > >(ToGrammarLeftRG::convert); +auto ToGrammarLeftRGNFA = registration::OverloadRegister < ToGrammarLeftRG, grammar::LeftRG < >, automaton::NFA < > >(ToGrammarLeftRG::convert); grammar::LeftRG < > ToGrammarLeftRG::convert(const automaton::DFA<>& automaton) { std::map<DefaultStateType, DefaultSymbolType> nonterminalMap; @@ -109,7 +110,7 @@ grammar::LeftRG < > ToGrammarLeftRG::convert(const automaton::DFA<>& automaton) return grammar; } -auto ToGrammarLeftRGDFA = ToGrammarLeftRG::RegistratorWrapper<grammar::LeftRG < >, automaton::DFA<>>(ToGrammarLeftRG::convert); +auto ToGrammarLeftRGDFA = registration::OverloadRegister < ToGrammarLeftRG, grammar::LeftRG < >, automaton::DFA < > >( ToGrammarLeftRG::convert ); } /* namespace convert */ diff --git a/alib2algo/src/automaton/convert/ToGrammarRightRG.cpp b/alib2algo/src/automaton/convert/ToGrammarRightRG.cpp index da14f59c2c..7b89abb3c5 100644 --- a/alib2algo/src/automaton/convert/ToGrammarRightRG.cpp +++ b/alib2algo/src/automaton/convert/ToGrammarRightRG.cpp @@ -7,6 +7,7 @@ #include "ToGrammarRightRG.h" #include <common/createUnique.hpp> +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -57,7 +58,7 @@ grammar::RightRG < > ToGrammarRightRG::convert(const automaton::NFA < > & automa return grammar; } -auto ToGrammarRightRGNFA = ToGrammarRightRG::RegistratorWrapper<grammar::RightRG < >, automaton::NFA < > >(ToGrammarRightRG::convert); +auto ToGrammarRightRGNFA = registration::OverloadRegister < ToGrammarRightRG, grammar::RightRG < >, automaton::NFA < > >(ToGrammarRightRG::convert); grammar::RightRG < > ToGrammarRightRG::convert(const automaton::DFA<>& automaton) { std::map<DefaultStateType, DefaultSymbolType> nonterminalMap; @@ -100,7 +101,7 @@ grammar::RightRG < > ToGrammarRightRG::convert(const automaton::DFA<>& automaton return grammar; } -auto ToGrammarRightRGDFA = ToGrammarRightRG::RegistratorWrapper<grammar::RightRG < >, automaton::DFA<>>(ToGrammarRightRG::convert); +auto ToGrammarRightRGDFA = registration::OverloadRegister < ToGrammarRightRG, grammar::RightRG < >, automaton::DFA < > >( ToGrammarRightRG::convert ); } /* namespace convert */ diff --git a/alib2algo/src/automaton/convert/ToPostfixPushdownAutomaton.cpp b/alib2algo/src/automaton/convert/ToPostfixPushdownAutomaton.cpp index 00b4a2bda6..4113c7adb1 100644 --- a/alib2algo/src/automaton/convert/ToPostfixPushdownAutomaton.cpp +++ b/alib2algo/src/automaton/convert/ToPostfixPushdownAutomaton.cpp @@ -19,7 +19,7 @@ #include <automaton/PDA/DPDA.h> #include <automaton/PDA/NPDA.h> -#include <factory/XmlDataFactory.hpp> +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -101,8 +101,8 @@ automaton::NPDA < > ToPostfixPushdownAutomaton::convert ( const automaton::NFTA return automaton; } -auto ToAutomatonDFTA = ToPostfixPushdownAutomaton::RegistratorWrapper < automaton::DPDA < >, automaton::DFTA < > > ( ToPostfixPushdownAutomaton::convert ); -auto ToAutomatonNFTA = ToPostfixPushdownAutomaton::RegistratorWrapper < automaton::NPDA < >, automaton::NFTA < > > ( ToPostfixPushdownAutomaton::convert ); +auto ToAutomatonDFTA = registration::OverloadRegister < ToPostfixPushdownAutomaton, automaton::DPDA < >, automaton::DFTA < > > ( ToPostfixPushdownAutomaton::convert ); +auto ToAutomatonNFTA = registration::OverloadRegister < ToPostfixPushdownAutomaton, automaton::NPDA < >, automaton::NFTA < > > ( ToPostfixPushdownAutomaton::convert ); } /* namespace convert */ diff --git a/alib2algo/src/automaton/convert/ToRegExp.cpp b/alib2algo/src/automaton/convert/ToRegExp.cpp index cd9f595146..70c4788526 100644 --- a/alib2algo/src/automaton/convert/ToRegExp.cpp +++ b/alib2algo/src/automaton/convert/ToRegExp.cpp @@ -6,6 +6,7 @@ */ #include "ToRegExp.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -15,12 +16,12 @@ regexp::RegExp ToRegExp::convert(const automaton::Automaton& automaton) { return dispatch(automaton.getData()); } -auto ToRegExpEpsilonNFA = ToRegExp::RegistratorWrapper<regexp::RegExp, automaton::EpsilonNFA < > >(ToRegExp::convert); -auto ToRegExpMultiInitialStateNFA = ToRegExp::RegistratorWrapper<regexp::RegExp, automaton::MultiInitialStateNFA < > >(ToRegExp::convert); -auto ToRegExpNFA = ToRegExp::RegistratorWrapper<regexp::RegExp, automaton::NFA < > >(ToRegExp::convert); -auto ToRegExpDFA = ToRegExp::RegistratorWrapper<regexp::RegExp, automaton::DFA<>>(ToRegExp::convert); -auto ToRegExpExtendedNFA = ToRegExp::RegistratorWrapper<regexp::RegExp, automaton::ExtendedNFA < > >(ToRegExp::convert); -auto ToRegExpCompactNFA = ToRegExp::RegistratorWrapper<regexp::RegExp, automaton::CompactNFA < > >(ToRegExp::convert); +auto ToRegExpEpsilonNFA = registration::OverloadRegister < ToRegExp, regexp::RegExp, automaton::EpsilonNFA < > > ( ToRegExp::convert ); +auto ToRegExpMultiInitialStateNFA = registration::OverloadRegister < ToRegExp, regexp::RegExp, automaton::MultiInitialStateNFA < > > ( ToRegExp::convert ); +auto ToRegExpNFA = registration::OverloadRegister < ToRegExp, regexp::RegExp, automaton::NFA < > > ( ToRegExp::convert ); +auto ToRegExpDFA = registration::OverloadRegister < ToRegExp, regexp::RegExp, automaton::DFA < > > ( ToRegExp::convert ); +auto ToRegExpExtendedNFA = registration::OverloadRegister < ToRegExp, regexp::RegExp, automaton::ExtendedNFA < > > ( ToRegExp::convert ); +auto ToRegExpCompactNFA = registration::OverloadRegister < ToRegExp, regexp::RegExp, automaton::CompactNFA < > > ( ToRegExp::convert ); } /* namespace convert */ diff --git a/alib2algo/src/automaton/convert/ToRegExpAlgebraic.cpp b/alib2algo/src/automaton/convert/ToRegExpAlgebraic.cpp index 0284791628..4a08999697 100644 --- a/alib2algo/src/automaton/convert/ToRegExpAlgebraic.cpp +++ b/alib2algo/src/automaton/convert/ToRegExpAlgebraic.cpp @@ -14,6 +14,7 @@ #include "../../equations/RightRegularEquationSolver.h" #include <regexp/unbounded/UnboundedRegExpElements.h> +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -50,7 +51,7 @@ regexp::UnboundedRegExp < > ToRegExpAlgebraic::convert( const automaton::Epsilon return solver.solve( DefaultSymbolType( automaton.getInitialState() ) ); } -auto ToRegExpAlgebraicEpsilonNFA = ToRegExpAlgebraic::RegistratorWrapper<regexp::UnboundedRegExp < >, automaton::EpsilonNFA < > >(ToRegExpAlgebraic::convert); +auto ToRegExpAlgebraicEpsilonNFA = registration::OverloadRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, automaton::EpsilonNFA < > > ( ToRegExpAlgebraic::convert ); regexp::UnboundedRegExp < > ToRegExpAlgebraic::convert( const automaton::MultiInitialStateNFA < > & automaton ) { equations::RightRegularEquationSolver < DefaultSymbolType > solver; @@ -81,7 +82,7 @@ regexp::UnboundedRegExp < > ToRegExpAlgebraic::convert( const automaton::MultiIn return regexp::UnboundedRegExp < > { regexp::UnboundedRegExpStructure < DefaultSymbolType > ( alternation ) }; } -auto ToRegExpAlgebraicMultiInitialStateNFA = ToRegExpAlgebraic::RegistratorWrapper<regexp::UnboundedRegExp < >, automaton::MultiInitialStateNFA < > >(ToRegExpAlgebraic::convert); +auto ToRegExpAlgebraicMultiInitialStateNFA = registration::OverloadRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, automaton::MultiInitialStateNFA < > > ( ToRegExpAlgebraic::convert ); regexp::UnboundedRegExp < > ToRegExpAlgebraic::convert( const automaton::NFA < > & automaton ) { equations::RightRegularEquationSolver < DefaultSymbolType > solver; @@ -104,7 +105,7 @@ regexp::UnboundedRegExp < > ToRegExpAlgebraic::convert( const automaton::NFA < > return solver.solve( DefaultSymbolType( automaton.getInitialState() ) ); } -auto ToRegExpAlgebraicNFA = ToRegExpAlgebraic::RegistratorWrapper<regexp::UnboundedRegExp < >, automaton::NFA < > >(ToRegExpAlgebraic::convert); +auto ToRegExpAlgebraicNFA = registration::OverloadRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, automaton::NFA < > > ( ToRegExpAlgebraic::convert ); regexp::UnboundedRegExp < > ToRegExpAlgebraic::convert( const automaton::DFA < > & automaton ) { equations::RightRegularEquationSolver < DefaultSymbolType > solver; @@ -125,7 +126,7 @@ regexp::UnboundedRegExp < > ToRegExpAlgebraic::convert( const automaton::DFA < > return solver.solve( DefaultSymbolType( automaton.getInitialState() ) ); } -auto ToRegExpAlgebraicDFA = ToRegExpAlgebraic::RegistratorWrapper<regexp::UnboundedRegExp < >, automaton::DFA < > >(ToRegExpAlgebraic::convert); +auto ToRegExpAlgebraicDFA = registration::OverloadRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, automaton::DFA < > > ( ToRegExpAlgebraic::convert ); } /* namespace convert */ diff --git a/alib2algo/src/automaton/convert/ToRegExpStateElimination.cpp b/alib2algo/src/automaton/convert/ToRegExpStateElimination.cpp index 4620ee7b60..493de15cd2 100644 --- a/alib2algo/src/automaton/convert/ToRegExpStateElimination.cpp +++ b/alib2algo/src/automaton/convert/ToRegExpStateElimination.cpp @@ -15,6 +15,7 @@ #include <common/createUnique.hpp> #include <label/FinalStateLabel.h> +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -48,12 +49,12 @@ regexp::UnboundedRegExp < > ToRegExpStateElimination::convert(const T& automaton return regexp::UnboundedRegExp < > (regexp::simplify::RegExpOptimize::optimize(initialToFinalState)); } -auto ToRegExpStateEliminationEpsilonNFA = ToRegExpStateElimination::RegistratorWrapper<regexp::UnboundedRegExp < >, automaton::EpsilonNFA < > >(ToRegExpStateElimination::convert); -auto ToRegExpStateEliminationMultiInitialStateNFA = ToRegExpStateElimination::RegistratorWrapper<regexp::UnboundedRegExp < >, automaton::MultiInitialStateNFA < > >(ToRegExpStateElimination::convert); -auto ToRegExpStateEliminationNFA = ToRegExpStateElimination::RegistratorWrapper<regexp::UnboundedRegExp < >, automaton::NFA < > >(ToRegExpStateElimination::convert); -auto ToRegExpStateEliminationDFA = ToRegExpStateElimination::RegistratorWrapper<regexp::UnboundedRegExp < >, automaton::DFA<>>(ToRegExpStateElimination::convert); -auto ToRegExpStateEliminationExtendedNFA = ToRegExpStateElimination::RegistratorWrapper<regexp::UnboundedRegExp < >, automaton::ExtendedNFA < > >(ToRegExpStateElimination::convert); -auto ToRegExpStateEliminationCompactNFA = ToRegExpStateElimination::RegistratorWrapper<regexp::UnboundedRegExp < >, automaton::CompactNFA < > >(ToRegExpStateElimination::convert); +auto ToRegExpStateEliminationEpsilonNFA = registration::OverloadRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, automaton::EpsilonNFA < > >(ToRegExpStateElimination::convert); +auto ToRegExpStateEliminationMultiInitialStateNFA = registration::OverloadRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, automaton::MultiInitialStateNFA < > >(ToRegExpStateElimination::convert); +auto ToRegExpStateEliminationNFA = registration::OverloadRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, automaton::NFA < > >(ToRegExpStateElimination::convert); +auto ToRegExpStateEliminationDFA = registration::OverloadRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, automaton::DFA < > >(ToRegExpStateElimination::convert); +auto ToRegExpStateEliminationExtendedNFA = registration::OverloadRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, automaton::ExtendedNFA < > >(ToRegExpStateElimination::convert); +auto ToRegExpStateEliminationCompactNFA = registration::OverloadRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, automaton::CompactNFA < > >(ToRegExpStateElimination::convert); automaton::ExtendedNFA < > ToRegExpStateElimination::eliminateState(const automaton::ExtendedNFA < > & extendedAutomaton, const DefaultStateType& q) { automaton::ExtendedNFA < > newAutomaton(extendedAutomaton.getInitialState()); // sure that q is neither initial nor final (follows from step 2 - extending ExtendedNFA) diff --git a/alib2algo/src/automaton/determinize/Determinize.cpp b/alib2algo/src/automaton/determinize/Determinize.cpp index cf64deb03e..cf2b32c8d8 100644 --- a/alib2algo/src/automaton/determinize/Determinize.cpp +++ b/alib2algo/src/automaton/determinize/Determinize.cpp @@ -20,6 +20,7 @@ #include <automaton/TM/OneTapeDTM.h> #include <automaton/TA/DFTA.h> #include "automaton/PDA/RealTimeHeightDeterministicNPDA.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -35,37 +36,37 @@ DFA<> Determinize::determinize(const automaton::DFA<>& automaton) { return automaton; } -auto DeterminizeDFA = Determinize::RegistratorWrapper<automaton::DFA<>, automaton::DFA<>>(Determinize::determinize); +auto DeterminizeDFA = registration::OverloadRegister < Determinize, automaton::DFA<>, automaton::DFA<> >(Determinize::determinize); DPDA < > Determinize::determinize(const automaton::DPDA < > & automaton) { return automaton; } -auto DeterminizeDPDA = Determinize::RegistratorWrapper<automaton::DPDA < >, automaton::DPDA < > >(Determinize::determinize); +auto DeterminizeDPDA = registration::OverloadRegister < Determinize, automaton::DPDA < >, automaton::DPDA < > >(Determinize::determinize); SinglePopDPDA < > Determinize::determinize(const automaton::SinglePopDPDA < > & automaton) { return automaton; } -auto DeterminizeSinglePopDPDA = Determinize::RegistratorWrapper<automaton::SinglePopDPDA < >, automaton::SinglePopDPDA < > >(Determinize::determinize); +auto DeterminizeSinglePopDPDA = registration::OverloadRegister < Determinize, automaton::SinglePopDPDA < >, automaton::SinglePopDPDA < > >(Determinize::determinize); InputDrivenDPDA < > Determinize::determinize(const automaton::InputDrivenDPDA < > & automaton) { return automaton; } -auto DeterminizeInputDrivenDPDA = Determinize::RegistratorWrapper<automaton::InputDrivenDPDA < >, automaton::InputDrivenDPDA < > >(Determinize::determinize); +auto DeterminizeInputDrivenDPDA = registration::OverloadRegister < Determinize, automaton::InputDrivenDPDA < >, automaton::InputDrivenDPDA < > >(Determinize::determinize); VisiblyPushdownDPDA < > Determinize::determinize(const automaton::VisiblyPushdownDPDA < > & automaton) { return automaton; } -auto DeterminizeVisiblyPushdownDPDA = Determinize::RegistratorWrapper<automaton::VisiblyPushdownDPDA < >, automaton::VisiblyPushdownDPDA < > >(Determinize::determinize); +auto DeterminizeVisiblyPushdownDPDA = registration::OverloadRegister < Determinize, automaton::VisiblyPushdownDPDA < >, automaton::VisiblyPushdownDPDA < > >(Determinize::determinize); RealTimeHeightDeterministicDPDA < > Determinize::determinize(const automaton::RealTimeHeightDeterministicDPDA < > & automaton) { return automaton; } -auto DeterminizeRealTimeHeightDeterministicDPDA = Determinize::RegistratorWrapper<automaton::RealTimeHeightDeterministicDPDA < >, automaton::RealTimeHeightDeterministicDPDA < > >(Determinize::determinize); +auto DeterminizeRealTimeHeightDeterministicDPDA = registration::OverloadRegister < Determinize, automaton::RealTimeHeightDeterministicDPDA < >, automaton::RealTimeHeightDeterministicDPDA < > >(Determinize::determinize); DPDA < > Determinize::determinize(const automaton::NPDA < > & automaton) { automaton::RealTimeHeightDeterministicNPDA < > rhpda = automaton::PDAToRHPDA::convert(automaton); @@ -73,24 +74,24 @@ DPDA < > Determinize::determinize(const automaton::NPDA < > & automaton) { return automaton::RHPDAToPDA::convert(dpda); } -auto DeterminizeNPDA = Determinize::RegistratorWrapper<automaton::DPDA < >, automaton::NPDA < > >(Determinize::determinize); +auto DeterminizeNPDA = registration::OverloadRegister < Determinize, automaton::DPDA < >, automaton::NPDA < > >(Determinize::determinize); OneTapeDTM<> Determinize::determinize(const automaton::OneTapeDTM<>& automaton) { return automaton; } -auto DeterminizeOneTapeDTM = Determinize::RegistratorWrapper<automaton::OneTapeDTM<>, automaton::OneTapeDTM<>>(Determinize::determinize); +auto DeterminizeOneTapeDTM = registration::OverloadRegister < Determinize, automaton::OneTapeDTM<>, automaton::OneTapeDTM < > >(Determinize::determinize); DFTA < > Determinize::determinize(const automaton::DFTA < > & automaton) { return automaton; } -auto DeterminizeDFTA = Determinize::RegistratorWrapper<automaton::DFTA < >, automaton::DFTA < > >(Determinize::determinize); +auto DeterminizeDFTA = registration::OverloadRegister < Determinize, automaton::DFTA < >, automaton::DFTA < > >(Determinize::determinize); -auto DeterminizeMultiInitialStateNFA = Determinize::RegistratorWrapper < automaton::DFA < DefaultSymbolType, std::set < DefaultStateType > >, automaton::MultiInitialStateNFA < > > ( Determinize::determinize ); -auto DeterminizeNFA = Determinize::RegistratorWrapper < automaton::DFA < DefaultSymbolType, std::set < DefaultStateType > >, automaton::NFA < > > ( Determinize::determinize ); +auto DeterminizeMultiInitialStateNFA = registration::OverloadRegister < Determinize, automaton::DFA < DefaultSymbolType, std::set < DefaultStateType > >, automaton::MultiInitialStateNFA < > > ( Determinize::determinize ); +auto DeterminizeNFA = registration::OverloadRegister < Determinize, automaton::DFA < DefaultSymbolType, std::set < DefaultStateType > >, automaton::NFA < > > ( Determinize::determinize ); } /* namespace determinize */ diff --git a/alib2algo/src/automaton/determinize/DeterminizeIDPDAPart.cxx b/alib2algo/src/automaton/determinize/DeterminizeIDPDAPart.cxx index 315c108ae4..76a803cbaa 100644 --- a/alib2algo/src/automaton/determinize/DeterminizeIDPDAPart.cxx +++ b/alib2algo/src/automaton/determinize/DeterminizeIDPDAPart.cxx @@ -70,7 +70,7 @@ automaton::InputDrivenDPDA < > Determinize::determinize ( const automaton::Input return res; } -auto DeterminizeInputDrivenNPDA = Determinize::RegistratorWrapper < automaton::InputDrivenDPDA < >, automaton::InputDrivenNPDA < > > ( Determinize::determinize ); +auto DeterminizeInputDrivenNPDA = registration::OverloadRegister < Determinize, automaton::InputDrivenDPDA < >, automaton::InputDrivenNPDA < > > ( Determinize::determinize ); } /* namespace determinize */ diff --git a/alib2algo/src/automaton/determinize/DeterminizeNFTAPart.cxx b/alib2algo/src/automaton/determinize/DeterminizeNFTAPart.cxx index 6ab425afba..63b2c78a8a 100644 --- a/alib2algo/src/automaton/determinize/DeterminizeNFTAPart.cxx +++ b/alib2algo/src/automaton/determinize/DeterminizeNFTAPart.cxx @@ -94,7 +94,7 @@ DFTA < > Determinize::determinize(const NFTA < > & nfta) { return res; } -auto DeterminizeNFTA = Determinize::RegistratorWrapper<automaton::DFTA < >, automaton::NFTA < > >( Determinize::determinize ); +auto DeterminizeNFTA = registration::OverloadRegister < Determinize, automaton::DFTA < >, automaton::NFTA < > > ( Determinize::determinize ); } /* namespace determinize */ diff --git a/alib2algo/src/automaton/determinize/DeterminizeRHDPDAPart.cxx b/alib2algo/src/automaton/determinize/DeterminizeRHDPDAPart.cxx index 3291c4d564..ea9c065ff8 100644 --- a/alib2algo/src/automaton/determinize/DeterminizeRHDPDAPart.cxx +++ b/alib2algo/src/automaton/determinize/DeterminizeRHDPDAPart.cxx @@ -277,7 +277,7 @@ automaton::RealTimeHeightDeterministicDPDA < > Determinize::determinize(const au return d; } -auto DeterminizeRealTimeHeightDeterministicNPDA = Determinize::RegistratorWrapper<automaton::RealTimeHeightDeterministicDPDA < >, automaton::RealTimeHeightDeterministicNPDA < > >( Determinize::determinize ); +auto DeterminizeRealTimeHeightDeterministicNPDA = registration::OverloadRegister < Determinize, automaton::RealTimeHeightDeterministicDPDA < >, automaton::RealTimeHeightDeterministicNPDA < > > ( Determinize::determinize ); } /* namespace determinize */ diff --git a/alib2algo/src/automaton/determinize/DeterminizeVPAPart.cxx b/alib2algo/src/automaton/determinize/DeterminizeVPAPart.cxx index 547bd16379..031355d259 100644 --- a/alib2algo/src/automaton/determinize/DeterminizeVPAPart.cxx +++ b/alib2algo/src/automaton/determinize/DeterminizeVPAPart.cxx @@ -205,7 +205,7 @@ automaton::VisiblyPushdownDPDA < > Determinize::determinize(const automaton::Vis return d; } -auto DeterminizeVisiblyPushdownNPDA = Determinize::RegistratorWrapper<automaton::VisiblyPushdownDPDA < >, automaton::VisiblyPushdownNPDA < > >( Determinize::determinize ); +auto DeterminizeVisiblyPushdownNPDA = registration::OverloadRegister < Determinize, automaton::VisiblyPushdownDPDA < >, automaton::VisiblyPushdownNPDA < > > ( Determinize::determinize ); } /* namespace determinize */ diff --git a/alib2algo/src/automaton/generate/RandomizeAutomaton.cpp b/alib2algo/src/automaton/generate/RandomizeAutomaton.cpp index 1e3b2d8b8d..bb02784f74 100644 --- a/alib2algo/src/automaton/generate/RandomizeAutomaton.cpp +++ b/alib2algo/src/automaton/generate/RandomizeAutomaton.cpp @@ -7,15 +7,16 @@ #include "RandomizeAutomaton.h" #include <automaton/Automaton.h> +#include <registration/AlgoRegistration.hpp> namespace automaton { namespace generate { -auto RandomizeAutomatonDFA = RandomizeAutomaton::RegistratorWrapper < automaton::DFA < >, automaton::DFA < > > ( RandomizeAutomaton::randomize ); -auto RandomizeAutomatonMultiInitialStateNFA = RandomizeAutomaton::RegistratorWrapper < automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < > > ( RandomizeAutomaton::randomize ); -auto RandomizeAutomatonNFA = RandomizeAutomaton::RegistratorWrapper < automaton::NFA < >, automaton::NFA < > > ( RandomizeAutomaton::randomize ); -auto RandomizeAutomatonEpsilonNFA = RandomizeAutomaton::RegistratorWrapper < automaton::EpsilonNFA < >, automaton::EpsilonNFA < > > ( RandomizeAutomaton::randomize ); +auto RandomizeAutomatonDFA = registration::OverloadRegister < RandomizeAutomaton, automaton::DFA < >, automaton::DFA < > > ( RandomizeAutomaton::randomize ); +auto RandomizeAutomatonMultiInitialStateNFA = registration::OverloadRegister < RandomizeAutomaton, automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < > > ( RandomizeAutomaton::randomize ); +auto RandomizeAutomatonNFA = registration::OverloadRegister < RandomizeAutomaton, automaton::NFA < >, automaton::NFA < > > ( RandomizeAutomaton::randomize ); +auto RandomizeAutomatonEpsilonNFA = registration::OverloadRegister < RandomizeAutomaton, automaton::EpsilonNFA < >, automaton::EpsilonNFA < > > ( RandomizeAutomaton::randomize ); automaton::Automaton RandomizeAutomaton::randomize ( const automaton::Automaton & automaton ) { return dispatch ( automaton.getData ( ) ); diff --git a/alib2algo/src/automaton/properties/AllEpsilonClosure.cpp b/alib2algo/src/automaton/properties/AllEpsilonClosure.cpp index 064c765b37..78a9c1522c 100644 --- a/alib2algo/src/automaton/properties/AllEpsilonClosure.cpp +++ b/alib2algo/src/automaton/properties/AllEpsilonClosure.cpp @@ -6,20 +6,21 @@ */ #include "AllEpsilonClosure.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { namespace properties { -auto AllEpsilonClosureEpsilonNFA = AllEpsilonClosure::RegistratorWrapper<std::map<DefaultStateType, std::set<DefaultStateType>>, automaton::EpsilonNFA < > >(AllEpsilonClosure::allEpsilonClosure); -auto AllEpsilonClosureMultiInitialStateNFA = AllEpsilonClosure::RegistratorWrapper<std::map<DefaultStateType, std::set<DefaultStateType>>, automaton::MultiInitialStateNFA < > >(AllEpsilonClosure::allEpsilonClosure); -auto AllEpsilonClosureNFA = AllEpsilonClosure::RegistratorWrapper<std::map<DefaultStateType, std::set<DefaultStateType>>, automaton::NFA < > >(AllEpsilonClosure::allEpsilonClosure); -auto AllEpsilonClosureDFA = AllEpsilonClosure::RegistratorWrapper<std::map<DefaultStateType, std::set<DefaultStateType>>, automaton::DFA<>>(AllEpsilonClosure::allEpsilonClosure); -auto AllEpsilonClosureExtendedNFA = AllEpsilonClosure::RegistratorWrapper<std::map<DefaultStateType, std::set<DefaultStateType>>, automaton::ExtendedNFA < > >(AllEpsilonClosure::allEpsilonClosure); -auto AllEpsilonClosureCompactNFA = AllEpsilonClosure::RegistratorWrapper<std::map<DefaultStateType, std::set<DefaultStateType>>, automaton::CompactNFA < > >(AllEpsilonClosure::allEpsilonClosure); +auto AllEpsilonClosureEpsilonNFA = registration::OverloadRegister < AllEpsilonClosure, std::map < DefaultStateType, std::set < DefaultStateType > >, automaton::EpsilonNFA < > > ( AllEpsilonClosure::allEpsilonClosure ); +auto AllEpsilonClosureMultiInitialStateNFA = registration::OverloadRegister < AllEpsilonClosure, std::map < DefaultStateType, std::set < DefaultStateType > >, automaton::MultiInitialStateNFA < > > ( AllEpsilonClosure::allEpsilonClosure ); +auto AllEpsilonClosureNFA = registration::OverloadRegister < AllEpsilonClosure, std::map < DefaultStateType, std::set < DefaultStateType > >, automaton::NFA < > > ( AllEpsilonClosure::allEpsilonClosure ); +auto AllEpsilonClosureDFA = registration::OverloadRegister < AllEpsilonClosure, std::map < DefaultStateType, std::set < DefaultStateType > >, automaton::DFA < > > ( AllEpsilonClosure::allEpsilonClosure ); +auto AllEpsilonClosureExtendedNFA = registration::OverloadRegister < AllEpsilonClosure, std::map < DefaultStateType, std::set < DefaultStateType > >, automaton::ExtendedNFA < > > ( AllEpsilonClosure::allEpsilonClosure ); +auto AllEpsilonClosureCompactNFA = registration::OverloadRegister < AllEpsilonClosure, std::map < DefaultStateType, std::set < DefaultStateType > >, automaton::CompactNFA < > > ( AllEpsilonClosure::allEpsilonClosure ); -std::map<DefaultStateType, std::set<DefaultStateType>> AllEpsilonClosure::allEpsilonClosure(const Automaton& automaton) { - return dispatch(automaton.getData()); +std::map < DefaultStateType, std::set < DefaultStateType > > AllEpsilonClosure::allEpsilonClosure ( const Automaton& automaton ) { + return dispatch ( automaton.getData ( ) ); } } /* namespace properties */ diff --git a/alib2algo/src/automaton/properties/EpsilonClosure.cpp b/alib2algo/src/automaton/properties/EpsilonClosure.cpp index 6061c6c0ad..3b7f9dfb9b 100644 --- a/alib2algo/src/automaton/properties/EpsilonClosure.cpp +++ b/alib2algo/src/automaton/properties/EpsilonClosure.cpp @@ -6,19 +6,20 @@ */ #include "EpsilonClosure.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { namespace properties { -auto EpsilonClosureEpsilonNFA = EpsilonClosure::RegistratorWrapper<std::set<DefaultStateType>, automaton::EpsilonNFA < > >(EpsilonClosure::epsilonClosure); -auto EpsilonClosureMultiInitialStateNFA = EpsilonClosure::RegistratorWrapper<std::set<DefaultStateType>, automaton::MultiInitialStateNFA < > >(EpsilonClosure::epsilonClosure); -auto EpsilonClosureNFA = EpsilonClosure::RegistratorWrapper<std::set<DefaultStateType>, automaton::NFA < > >(EpsilonClosure::epsilonClosure); -auto EpsilonClosureDFA = EpsilonClosure::RegistratorWrapper<std::set<DefaultStateType>, automaton::DFA<>>(EpsilonClosure::epsilonClosure); -auto EpsilonClosureExtendedNFA = EpsilonClosure::RegistratorWrapper<std::set<DefaultStateType>, automaton::ExtendedNFA < > >(EpsilonClosure::epsilonClosure); -auto EpsilonClosureCompactNFA = EpsilonClosure::RegistratorWrapper<std::set<DefaultStateType>, automaton::CompactNFA < > >(EpsilonClosure::epsilonClosure); +auto EpsilonClosureEpsilonNFA = registration::OverloadRegister < EpsilonClosure, std::set < DefaultStateType >, automaton::EpsilonNFA < > > ( EpsilonClosure::epsilonClosure ); +auto EpsilonClosureMultiInitialStateNFA = registration::OverloadRegister < EpsilonClosure, std::set < DefaultStateType >, automaton::MultiInitialStateNFA < > > ( EpsilonClosure::epsilonClosure ); +auto EpsilonClosureNFA = registration::OverloadRegister < EpsilonClosure, std::set < DefaultStateType >, automaton::NFA < > > ( EpsilonClosure::epsilonClosure ); +auto EpsilonClosureDFA = registration::OverloadRegister < EpsilonClosure, std::set < DefaultStateType >, automaton::DFA < > > ( EpsilonClosure::epsilonClosure ); +auto EpsilonClosureExtendedNFA = registration::OverloadRegister < EpsilonClosure, std::set < DefaultStateType >, automaton::ExtendedNFA < > > ( EpsilonClosure::epsilonClosure ); +auto EpsilonClosureCompactNFA = registration::OverloadRegister < EpsilonClosure, std::set < DefaultStateType >, automaton::CompactNFA < > > ( EpsilonClosure::epsilonClosure ); -std::set<DefaultStateType> EpsilonClosure::epsilonClosure(const Automaton& automaton, const DefaultStateType& q) { +std::set < DefaultStateType > EpsilonClosure::epsilonClosure(const Automaton& automaton, const DefaultStateType& q) { return dispatch(automaton.getData(), q); } diff --git a/alib2algo/src/automaton/properties/ReachableStates.cpp b/alib2algo/src/automaton/properties/ReachableStates.cpp index 5130b8555c..10657e4c92 100644 --- a/alib2algo/src/automaton/properties/ReachableStates.cpp +++ b/alib2algo/src/automaton/properties/ReachableStates.cpp @@ -6,6 +6,7 @@ */ #include "ReachableStates.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -15,12 +16,12 @@ std::set<DefaultStateType> ReachableStates::reachableStates(const Automaton& aut return dispatch(automaton.getData()); } -auto ReachableStatesEpsilonNFA = ReachableStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::EpsilonNFA < > >(ReachableStates::reachableStates); -auto ReachableStatesNFA = ReachableStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::NFA < > >(ReachableStates::reachableStates); -auto ReachableStatesCompactNFA = ReachableStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::CompactNFA < > >(ReachableStates::reachableStates); -auto ReachableStatesExtendedNFA = ReachableStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::ExtendedNFA < > >(ReachableStates::reachableStates); -auto ReachableStatesMultiInitialStateNFA = ReachableStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::MultiInitialStateNFA < > >(ReachableStates::reachableStates); -auto ReachableStatesDFA = ReachableStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::DFA<>>(ReachableStates::reachableStates); +auto ReachableStatesEpsilonNFA = registration::OverloadRegister < ReachableStates, std::set < DefaultStateType >, automaton::EpsilonNFA < > > ( ReachableStates::reachableStates ); +auto ReachableStatesNFA = registration::OverloadRegister < ReachableStates, std::set < DefaultStateType >, automaton::NFA < > > ( ReachableStates::reachableStates ); +auto ReachableStatesCompactNFA = registration::OverloadRegister < ReachableStates, std::set < DefaultStateType >, automaton::CompactNFA < > > ( ReachableStates::reachableStates ); +auto ReachableStatesExtendedNFA = registration::OverloadRegister < ReachableStates, std::set < DefaultStateType >, automaton::ExtendedNFA < > > ( ReachableStates::reachableStates ); +auto ReachableStatesMultiInitialStateNFA = registration::OverloadRegister < ReachableStates, std::set < DefaultStateType >, automaton::MultiInitialStateNFA < > > ( ReachableStates::reachableStates ); +auto ReachableStatesDFA = registration::OverloadRegister < ReachableStates, std::set < DefaultStateType >, automaton::DFA < > > ( ReachableStates::reachableStates ); } /* namespace properties */ diff --git a/alib2algo/src/automaton/properties/UsefullStates.cpp b/alib2algo/src/automaton/properties/UsefullStates.cpp index 353e9c23a5..9d5e6f30de 100644 --- a/alib2algo/src/automaton/properties/UsefullStates.cpp +++ b/alib2algo/src/automaton/properties/UsefullStates.cpp @@ -6,21 +6,22 @@ */ #include "UsefullStates.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { namespace properties { -std::set<DefaultStateType> UsefullStates::usefullStates(const Automaton& automaton) { +std::set < DefaultStateType > UsefullStates::usefullStates(const Automaton& automaton) { return dispatch(automaton.getData()); } -auto UsefullStatesEpsilonNFA = UsefullStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::EpsilonNFA < > >(UsefullStates::usefullStates); -auto UsefullStatesNFA = UsefullStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::NFA < > >(UsefullStates::usefullStates); -auto UsefullStatesCompactNFA = UsefullStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::CompactNFA < > >(UsefullStates::usefullStates); -auto UsefullStatesExtendedNFA = UsefullStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::ExtendedNFA < > >(UsefullStates::usefullStates); -auto UsefullStatesMultiInitialStateNFA = UsefullStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::MultiInitialStateNFA < > >(UsefullStates::usefullStates); -auto UsefullStatesDFA = UsefullStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::DFA<>>(UsefullStates::usefullStates); +auto UsefullStatesEpsilonNFA = registration::OverloadRegister < UsefullStates, std::set < DefaultStateType >, automaton::EpsilonNFA < > > ( UsefullStates::usefullStates ); +auto UsefullStatesNFA = registration::OverloadRegister < UsefullStates, std::set < DefaultStateType >, automaton::NFA < > > ( UsefullStates::usefullStates ); +auto UsefullStatesCompactNFA = registration::OverloadRegister < UsefullStates, std::set < DefaultStateType >, automaton::CompactNFA < > > ( UsefullStates::usefullStates ); +auto UsefullStatesExtendedNFA = registration::OverloadRegister < UsefullStates, std::set < DefaultStateType >, automaton::ExtendedNFA < > > ( UsefullStates::usefullStates ); +auto UsefullStatesMultiInitialStateNFA = registration::OverloadRegister < UsefullStates, std::set < DefaultStateType >, automaton::MultiInitialStateNFA < > > ( UsefullStates::usefullStates ); +auto UsefullStatesDFA = registration::OverloadRegister < UsefullStates, std::set < DefaultStateType >, automaton::DFA < > > ( UsefullStates::usefullStates ); } /* namespace properties */ diff --git a/alib2algo/src/automaton/run/Accept.cpp b/alib2algo/src/automaton/run/Accept.cpp index 9252ee6c4c..5b76d09db4 100644 --- a/alib2algo/src/automaton/run/Accept.cpp +++ b/alib2algo/src/automaton/run/Accept.cpp @@ -6,6 +6,7 @@ */ #include "Accept.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -23,15 +24,15 @@ bool Accept::accept ( const automaton::Automaton & automaton, const tree::Ranked return dispatch ( automaton.getData ( ), tree ); } -auto AcceptDFALinearString = Accept::RegistratorWrapper < bool, automaton::DFA < >, string::LinearString < > > ( Accept::accept ); -auto AcceptNFALinearString = Accept::RegistratorWrapper < bool, automaton::NFA < > , string::LinearString < > > ( Accept::accept ); -auto AcceptDFTARankedTree = Accept::RegistratorWrapper < bool, automaton::DFTA < >, tree::RankedTree < > > ( Accept::accept ); -auto AcceptNFTARankedTree = Accept::RegistratorWrapper < bool, automaton::NFTA < >, tree::RankedTree < > > ( Accept::accept ); -auto AcceptInputDrivenDPDALinearString = Accept::RegistratorWrapper < bool, automaton::InputDrivenDPDA < >, string::LinearString < > > ( Accept::accept ); -auto AcceptVisiblyPushdownDPDALinearString = Accept::RegistratorWrapper < bool, automaton::VisiblyPushdownDPDA < >, string::LinearString < > > ( Accept::accept ); -auto AcceptRealTimeHeightDeterministicDPDALinearString = Accept::RegistratorWrapper < bool, automaton::RealTimeHeightDeterministicDPDA < >, string::LinearString < > > ( Accept::accept ); -auto AcceptDPDALinearString = Accept::RegistratorWrapper < bool, automaton::DPDA < >, string::LinearString < > > ( Accept::accept ); -auto AcceptNPDTALinearString = Accept::RegistratorWrapper < bool, automaton::NPDTA < >, string::LinearString < > > ( Accept::accept ); +auto AcceptDFALinearString = registration::OverloadRegister < Accept, bool, automaton::DFA < >, string::LinearString < > > ( Accept::accept ); +auto AcceptNFALinearString = registration::OverloadRegister < Accept, bool, automaton::NFA < >, string::LinearString < > > ( Accept::accept ); +auto AcceptDFTARankedTree = registration::OverloadRegister < Accept, bool, automaton::DFTA < >, tree::RankedTree < > > ( Accept::accept ); +auto AcceptNFTARankedTree = registration::OverloadRegister < Accept, bool, automaton::NFTA < >, tree::RankedTree < > > ( Accept::accept ); +auto AcceptInputDrivenDPDALinearString = registration::OverloadRegister < Accept, bool, automaton::InputDrivenDPDA < >, string::LinearString < > > ( Accept::accept ); +auto AcceptVisiblyPushdownDPDALinearString = registration::OverloadRegister < Accept, bool, automaton::VisiblyPushdownDPDA < >, string::LinearString < > > ( Accept::accept ); +auto AcceptRealTimeHeightDeterministicDPDALinearString = registration::OverloadRegister < Accept, bool, automaton::RealTimeHeightDeterministicDPDA < >, string::LinearString < > > ( Accept::accept ); +auto AcceptDPDALinearString = registration::OverloadRegister < Accept, bool, automaton::DPDA < >, string::LinearString < > > ( Accept::accept ); +auto AcceptNPDTALinearString = registration::OverloadRegister < Accept, bool, automaton::NPDTA < >, string::LinearString < > > ( Accept::accept ); } /* namespace run */ diff --git a/alib2algo/src/automaton/run/Occurrences.cpp b/alib2algo/src/automaton/run/Occurrences.cpp index ef7b2f57bd..2dc4ae662f 100644 --- a/alib2algo/src/automaton/run/Occurrences.cpp +++ b/alib2algo/src/automaton/run/Occurrences.cpp @@ -6,6 +6,7 @@ */ #include "Occurrences.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -23,12 +24,12 @@ std::set < unsigned > Occurrences::occurrences ( const automaton::Automaton & au return dispatch ( automaton.getData ( ), tree ); } -auto OccurrencesDFALinearString = Occurrences::RegistratorWrapper < std::set < unsigned >, automaton::DFA < >, string::LinearString < > > ( Occurrences::occurrences ); -auto OccurrencesDFTARankedTree = Occurrences::RegistratorWrapper < std::set < unsigned >, automaton::DFTA < >, tree::RankedTree < > > ( Occurrences::occurrences ); -auto OccurrencesInputDrivenDPDALinearString = Occurrences::RegistratorWrapper < std::set < unsigned >, automaton::InputDrivenDPDA < >, string::LinearString < > > ( Occurrences::occurrences ); -auto OccurrencesVisiblyPushdownDPDALinearString = Occurrences::RegistratorWrapper < std::set < unsigned >, automaton::VisiblyPushdownDPDA < >, string::LinearString < > > ( Occurrences::occurrences ); -auto OccurrencesRealTimeHeightDeterministicDPDALinearString = Occurrences::RegistratorWrapper < std::set < unsigned >, automaton::RealTimeHeightDeterministicDPDA < >, string::LinearString < > > ( Occurrences::occurrences ); -auto OccurrencesDPDALinearString = Occurrences::RegistratorWrapper < std::set < unsigned >, automaton::DPDA < >, string::LinearString < > > ( Occurrences::occurrences ); +auto OccurrencesDFALinearString = registration::OverloadRegister < Occurrences, std::set < unsigned >, automaton::DFA < >, string::LinearString < > > ( Occurrences::occurrences ); +auto OccurrencesDFTARankedTree = registration::OverloadRegister < Occurrences, std::set < unsigned >, automaton::DFTA < >, tree::RankedTree < > > ( Occurrences::occurrences ); +auto OccurrencesInputDrivenDPDALinearString = registration::OverloadRegister < Occurrences, std::set < unsigned >, automaton::InputDrivenDPDA < >, string::LinearString < > > ( Occurrences::occurrences ); +auto OccurrencesVisiblyPushdownDPDALinearString = registration::OverloadRegister < Occurrences, std::set < unsigned >, automaton::VisiblyPushdownDPDA < >, string::LinearString < > > ( Occurrences::occurrences ); +auto OccurrencesRealTimeHeightDeterministicDPDALinearString = registration::OverloadRegister < Occurrences, std::set < unsigned >, automaton::RealTimeHeightDeterministicDPDA < >, string::LinearString < > > ( Occurrences::occurrences ); +auto OccurrencesDPDALinearString = registration::OverloadRegister < Occurrences, std::set < unsigned >, automaton::DPDA < >, string::LinearString < > > ( Occurrences::occurrences ); } /* namespace run */ diff --git a/alib2algo/src/automaton/run/Result.cpp b/alib2algo/src/automaton/run/Result.cpp index f6bbb9005c..67a4f7e953 100644 --- a/alib2algo/src/automaton/run/Result.cpp +++ b/alib2algo/src/automaton/run/Result.cpp @@ -6,6 +6,7 @@ */ #include "Result.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -15,12 +16,12 @@ DefaultStateType Result::result ( const automaton::Automaton & automaton, const return dispatch ( automaton.getData ( ), object.getData ( ), failLabel ); } -auto ResultDFALinearString = Result::RegistratorWrapper < DefaultStateType, automaton::DFA < >, string::LinearString < > > ( Result::result ); -auto ResultDFTARankedTree = Result::RegistratorWrapper < DefaultStateType, automaton::DFTA < >, tree::RankedTree < > > ( Result::result ); -auto ResultInputDrivenDPDALinearString = Result::RegistratorWrapper < DefaultStateType, automaton::InputDrivenDPDA < >, string::LinearString < > > ( Result::result ); -auto ResultVisiblyPushdownDPDALinearString = Result::RegistratorWrapper < DefaultStateType, automaton::VisiblyPushdownDPDA < >, string::LinearString < > > ( Result::result ); -auto ResultRealTimeHeightDeterministicDPDALinearString = Result::RegistratorWrapper < DefaultStateType, automaton::RealTimeHeightDeterministicDPDA < >, string::LinearString < > > ( Result::result ); -auto ResultDPDALinearString = Result::RegistratorWrapper < DefaultStateType, automaton::DPDA < >, string::LinearString < > > ( Result::result ); +auto ResultDFALinearString = registration::OverloadRegister < Result, DefaultStateType, automaton::DFA < >, string::LinearString < > > ( Result::result ); +auto ResultDFTARankedTree = registration::OverloadRegister < Result, DefaultStateType, automaton::DFTA < >, tree::RankedTree < > > ( Result::result ); +auto ResultInputDrivenDPDALinearString = registration::OverloadRegister < Result, DefaultStateType, automaton::InputDrivenDPDA < >, string::LinearString < > > ( Result::result ); +auto ResultVisiblyPushdownDPDALinearString = registration::OverloadRegister < Result, DefaultStateType, automaton::VisiblyPushdownDPDA < >, string::LinearString < > > ( Result::result ); +auto ResultRealTimeHeightDeterministicDPDALinearString = registration::OverloadRegister < Result, DefaultStateType, automaton::RealTimeHeightDeterministicDPDA < >, string::LinearString < > > ( Result::result ); +auto ResultDPDALinearString = registration::OverloadRegister < Result, DefaultStateType, automaton::DPDA < >, string::LinearString < > > ( Result::result ); } /* namespace run */ diff --git a/alib2algo/src/automaton/run/Translate.cpp b/alib2algo/src/automaton/run/Translate.cpp index fb1bebc5c3..9c39641621 100644 --- a/alib2algo/src/automaton/run/Translate.cpp +++ b/alib2algo/src/automaton/run/Translate.cpp @@ -6,6 +6,7 @@ */ #include "Translate.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -19,7 +20,7 @@ std::set < string::LinearString < > > Translate::translate ( const automaton::Au return dispatch ( automaton.getData ( ), string ); } -auto TranslateNPDTALinearString = Translate::RegistratorWrapper < std::set < string::LinearString < > >, automaton::NPDTA < >, string::LinearString < > > ( Translate::translate ); +auto TranslateNPDTALinearString = registration::OverloadRegister < Translate, std::set < string::LinearString < > >, automaton::NPDTA < >, string::LinearString < > > ( Translate::translate ); } /* namespace run */ diff --git a/alib2algo/src/automaton/simplify/EpsilonRemoverIncoming.cpp b/alib2algo/src/automaton/simplify/EpsilonRemoverIncoming.cpp index 417297655e..93f04298f8 100644 --- a/alib2algo/src/automaton/simplify/EpsilonRemoverIncoming.cpp +++ b/alib2algo/src/automaton/simplify/EpsilonRemoverIncoming.cpp @@ -6,15 +6,16 @@ */ #include "EpsilonRemoverIncoming.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { namespace simplify { -auto EpsilonRemoverIncomingDFA = EpsilonRemoverIncoming::RegistratorWrapper<automaton::DFA<>, automaton::DFA<>>(EpsilonRemoverIncoming::remove); -auto EpsilonRemoverIncomingMultiInitialStateNFA = EpsilonRemoverIncoming::RegistratorWrapper<automaton::MultiInitialStateNFA < > , automaton::MultiInitialStateNFA < > >(EpsilonRemoverIncoming::remove); -auto EpsilonRemoverIncomingNFA = EpsilonRemoverIncoming::RegistratorWrapper<automaton::NFA < > , automaton::NFA < > >(EpsilonRemoverIncoming::remove); -auto EpsilonRemoverIncomingEpsilonNFA = EpsilonRemoverIncoming::RegistratorWrapper<automaton::NFA < > , automaton::EpsilonNFA < > >(EpsilonRemoverIncoming::remove); +auto EpsilonRemoverIncomingDFA = registration::OverloadRegister < EpsilonRemoverIncoming, automaton::DFA < >, automaton::DFA < > > ( EpsilonRemoverIncoming::remove ); +auto EpsilonRemoverIncomingMultiInitialStateNFA = registration::OverloadRegister < EpsilonRemoverIncoming, automaton::MultiInitialStateNFA < > , automaton::MultiInitialStateNFA < > > ( EpsilonRemoverIncoming::remove ); +auto EpsilonRemoverIncomingNFA = registration::OverloadRegister < EpsilonRemoverIncoming, automaton::NFA < > , automaton::NFA < > > ( EpsilonRemoverIncoming::remove ); +auto EpsilonRemoverIncomingEpsilonNFA = registration::OverloadRegister < EpsilonRemoverIncoming, automaton::NFA < > , automaton::EpsilonNFA < > > ( EpsilonRemoverIncoming::remove ); automaton::Automaton EpsilonRemoverIncoming::remove(const automaton::Automaton& automaton) { return dispatch(automaton.getData()); diff --git a/alib2algo/src/automaton/simplify/EpsilonRemoverOutgoing.cpp b/alib2algo/src/automaton/simplify/EpsilonRemoverOutgoing.cpp index 2168d23ba9..0bcb7fc489 100644 --- a/alib2algo/src/automaton/simplify/EpsilonRemoverOutgoing.cpp +++ b/alib2algo/src/automaton/simplify/EpsilonRemoverOutgoing.cpp @@ -6,15 +6,16 @@ */ #include "EpsilonRemoverOutgoing.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { namespace simplify { -auto EpsilonRemoverOutgoingDFA = EpsilonRemoverOutgoing::RegistratorWrapper<automaton::DFA<>, automaton::DFA<>>(EpsilonRemoverOutgoing::remove); -auto EpsilonRemoverOutgoingMultiInitialStateNFA = EpsilonRemoverOutgoing::RegistratorWrapper<automaton::MultiInitialStateNFA < > , automaton::MultiInitialStateNFA < > >(EpsilonRemoverOutgoing::remove); -auto EpsilonRemoverOutgoingNFA = EpsilonRemoverOutgoing::RegistratorWrapper<automaton::NFA < > , automaton::NFA < > >(EpsilonRemoverOutgoing::remove); -auto EpsilonRemoverOutgoingEpsilonNFA = EpsilonRemoverOutgoing::RegistratorWrapper<automaton::MultiInitialStateNFA < > , automaton::EpsilonNFA < > >(EpsilonRemoverOutgoing::remove); +auto EpsilonRemoverOutgoingDFA = registration::OverloadRegister < EpsilonRemoverOutgoing, automaton::DFA < >, automaton::DFA < > > ( EpsilonRemoverOutgoing::remove ); +auto EpsilonRemoverOutgoingMultiInitialStateNFA = registration::OverloadRegister < EpsilonRemoverOutgoing, automaton::MultiInitialStateNFA < > , automaton::MultiInitialStateNFA < > > ( EpsilonRemoverOutgoing::remove ); +auto EpsilonRemoverOutgoingNFA = registration::OverloadRegister < EpsilonRemoverOutgoing, automaton::NFA < > , automaton::NFA < > > ( EpsilonRemoverOutgoing::remove ); +auto EpsilonRemoverOutgoingEpsilonNFA = registration::OverloadRegister < EpsilonRemoverOutgoing, automaton::MultiInitialStateNFA < > , automaton::EpsilonNFA < > > ( EpsilonRemoverOutgoing::remove ); automaton::Automaton EpsilonRemoverOutgoing::remove(const automaton::Automaton& automaton) { return dispatch(automaton.getData()); diff --git a/alib2algo/src/automaton/simplify/Minimize.cpp b/alib2algo/src/automaton/simplify/Minimize.cpp index 110d208996..55d2cd267f 100644 --- a/alib2algo/src/automaton/simplify/Minimize.cpp +++ b/alib2algo/src/automaton/simplify/Minimize.cpp @@ -6,6 +6,7 @@ */ #include "Minimize.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -15,8 +16,8 @@ automaton::Automaton Minimize::minimize(const automaton::Automaton& automaton) { return dispatch(automaton.getData()); } -auto MinimizeNFA = Minimize::RegistratorWrapper<automaton::DFA<>, automaton::DFA<>>( Minimize::minimize ); -auto MinimizeNFTA = Minimize::RegistratorWrapper<automaton::DFTA<>, automaton::DFTA<>>( Minimize::minimize ); +auto MinimizeNFA = registration::OverloadRegister < Minimize, automaton::DFA < >, automaton::DFA < > >( Minimize::minimize ); +auto MinimizeNFTA = registration::OverloadRegister < Minimize, automaton::DFTA < >, automaton::DFTA < > >( Minimize::minimize ); } /* namespace simplify */ diff --git a/alib2algo/src/automaton/simplify/MinimizeBrzozowski.cpp b/alib2algo/src/automaton/simplify/MinimizeBrzozowski.cpp index 7cac064e2c..a7977c9ce4 100644 --- a/alib2algo/src/automaton/simplify/MinimizeBrzozowski.cpp +++ b/alib2algo/src/automaton/simplify/MinimizeBrzozowski.cpp @@ -6,6 +6,7 @@ */ #include "MinimizeBrzozowski.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -17,8 +18,8 @@ automaton::Automaton MinimizeBrzozowski::minimize(const automaton::Automaton& au return res; } -auto MinimizeBrzozowskiDFA = MinimizeBrzozowski::RegistratorWrapper<automaton::DFA < DefaultSymbolType, std::set < std::set < DefaultStateType > > >, automaton::DFA < > >(MinimizeBrzozowski::minimize); -auto MinimizeBrzozowskiNFA = MinimizeBrzozowski::RegistratorWrapper<automaton::DFA < DefaultSymbolType, std::set < std::set < DefaultStateType > > >, automaton::NFA < > >(MinimizeBrzozowski::minimize); +auto MinimizeBrzozowskiDFA = registration::OverloadRegister < MinimizeBrzozowski, automaton::DFA < DefaultSymbolType, std::set < std::set < DefaultStateType > > >, automaton::DFA < > > ( MinimizeBrzozowski::minimize ); +auto MinimizeBrzozowskiNFA = registration::OverloadRegister < MinimizeBrzozowski, automaton::DFA < DefaultSymbolType, std::set < std::set < DefaultStateType > > >, automaton::NFA < > > ( MinimizeBrzozowski::minimize ); } /* namespace simplify */ diff --git a/alib2algo/src/automaton/simplify/Normalize.cpp b/alib2algo/src/automaton/simplify/Normalize.cpp index 3701f1a3ae..88a29a072c 100644 --- a/alib2algo/src/automaton/simplify/Normalize.cpp +++ b/alib2algo/src/automaton/simplify/Normalize.cpp @@ -6,6 +6,7 @@ */ #include "Normalize.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -17,8 +18,8 @@ automaton::Automaton Normalize::normalize(const automaton::Automaton& automaton) return res; } -auto NormalizeDFA = Normalize::RegistratorWrapper<automaton::DFA < DefaultSymbolType, unsigned >, automaton::DFA < > >(Normalize::normalize); -auto NormalizeDPDA = Normalize::RegistratorWrapper<automaton::DPDA < DefaultSymbolType, DefaultEpsilonType, unsigned, unsigned >, automaton::DPDA < > >(Normalize::normalize); +auto NormalizeDFA = registration::OverloadRegister < Normalize, automaton::DFA < DefaultSymbolType, unsigned >, automaton::DFA < > > ( Normalize::normalize ); +auto NormalizeDPDA = registration::OverloadRegister < Normalize, automaton::DPDA < DefaultSymbolType, DefaultEpsilonType, unsigned, unsigned >, automaton::DPDA < > > ( Normalize::normalize ); } /* namespace simplify */ diff --git a/alib2algo/src/automaton/simplify/Rename.cpp b/alib2algo/src/automaton/simplify/Rename.cpp index 969cfce116..7c8040a0b4 100644 --- a/alib2algo/src/automaton/simplify/Rename.cpp +++ b/alib2algo/src/automaton/simplify/Rename.cpp @@ -14,6 +14,7 @@ #include <algorithm> #include <sstream> #include <iostream> +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -50,7 +51,7 @@ automaton::DFA<> Rename::rename(const automaton::DFA<>& fsm) { return result; } -auto RenameDFA = Rename::RegistratorWrapper<automaton::DFA<>, automaton::DFA<>>(Rename::rename); +auto RenameDFA = registration::OverloadRegister < Rename, automaton::DFA < >, automaton::DFA < > > ( Rename::rename ); automaton::DPDA < > Rename::rename(const automaton::DPDA < > & pda) { int counterState = 0; @@ -92,7 +93,7 @@ automaton::DPDA < > Rename::rename(const automaton::DPDA < > & pda) { return result; } -auto RenameDPDA = Rename::RegistratorWrapper<automaton::DPDA < >, automaton::DPDA < > >(Rename::rename); +auto RenameDPDA = registration::OverloadRegister < Rename, automaton::DPDA < >, automaton::DPDA < > > ( Rename::rename ); automaton::SinglePopDPDA < > Rename::rename(const automaton::SinglePopDPDA < > & pda) { int counterState = 0; @@ -133,7 +134,7 @@ automaton::SinglePopDPDA < > Rename::rename(const automaton::SinglePopDPDA < > & return result; } -auto RenameSinglePopDPDA = Rename::RegistratorWrapper<automaton::SinglePopDPDA < >, automaton::SinglePopDPDA < > >(Rename::rename); +auto RenameSinglePopDPDA = registration::OverloadRegister < Rename, automaton::SinglePopDPDA < >, automaton::SinglePopDPDA < > > ( Rename::rename ); automaton::InputDrivenDPDA < > Rename::rename(const automaton::InputDrivenDPDA < > & pda) { int counter = 0; @@ -182,7 +183,7 @@ automaton::InputDrivenDPDA < > Rename::rename(const automaton::InputDrivenDPDA < return result; } -auto RenameInputDrivenDPDA = Rename::RegistratorWrapper<automaton::InputDrivenDPDA < >, automaton::InputDrivenDPDA < > >(Rename::rename); +auto RenameInputDrivenDPDA = registration::OverloadRegister < Rename, automaton::InputDrivenDPDA < >, automaton::InputDrivenDPDA < > > ( Rename::rename ); automaton::VisiblyPushdownDPDA < > Rename::rename(const automaton::VisiblyPushdownDPDA < > & pda) { int counterState = 0; @@ -229,7 +230,7 @@ automaton::VisiblyPushdownDPDA < > Rename::rename(const automaton::VisiblyPushdo return result; } -auto RenameVisiblyPushdownDPDA = Rename::RegistratorWrapper<automaton::VisiblyPushdownDPDA < >, automaton::VisiblyPushdownDPDA < > >(Rename::rename); +auto RenameVisiblyPushdownDPDA = registration::OverloadRegister < Rename, automaton::VisiblyPushdownDPDA < >, automaton::VisiblyPushdownDPDA < > > ( Rename::rename ); automaton::RealTimeHeightDeterministicDPDA < > Rename::rename(const automaton::RealTimeHeightDeterministicDPDA < > & pda) { int counterState = 0; @@ -274,7 +275,7 @@ automaton::RealTimeHeightDeterministicDPDA < > Rename::rename(const automaton::R return result; } -auto RenameRealTimeHeightDeterministicDPDA = Rename::RegistratorWrapper<automaton::RealTimeHeightDeterministicDPDA < >, automaton::RealTimeHeightDeterministicDPDA < > >(Rename::rename); +auto RenameRealTimeHeightDeterministicDPDA = registration::OverloadRegister < Rename, automaton::RealTimeHeightDeterministicDPDA < >, automaton::RealTimeHeightDeterministicDPDA < > > ( Rename::rename ); } /* namespace simplify */ diff --git a/alib2algo/src/automaton/simplify/SingleInitialState.cpp b/alib2algo/src/automaton/simplify/SingleInitialState.cpp index 9e93035417..ae0e27ccfa 100644 --- a/alib2algo/src/automaton/simplify/SingleInitialState.cpp +++ b/alib2algo/src/automaton/simplify/SingleInitialState.cpp @@ -6,6 +6,7 @@ */ #include "SingleInitialState.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -15,12 +16,12 @@ automaton::Automaton SingleInitialState::convert(const Automaton& automaton) { return dispatch(automaton.getData()); } -auto SingleInitialStateMultiInitialStateNFA = SingleInitialState::RegistratorWrapper<automaton::NFA < >, automaton::MultiInitialStateNFA < > >(SingleInitialState::convert); -auto SingleInitialStateDFA = SingleInitialState::RegistratorWrapper<automaton::DFA < >, automaton::DFA < > >(SingleInitialState::convert); -auto SingleInitialStateEpsilonNFA = SingleInitialState::RegistratorWrapper<automaton::EpsilonNFA < >, automaton::EpsilonNFA < > >(SingleInitialState::convert); -auto SingleInitialStateNFA = SingleInitialState::RegistratorWrapper<automaton::NFA < > , automaton::NFA < > >(SingleInitialState::convert); -auto SingleInitialStateCompactNFA = SingleInitialState::RegistratorWrapper<automaton::CompactNFA < >, automaton::CompactNFA < > >(SingleInitialState::convert); -auto SingleInitialStateExtendedNFA = SingleInitialState::RegistratorWrapper<automaton::ExtendedNFA < >, automaton::ExtendedNFA < > >(SingleInitialState::convert); +auto SingleInitialStateMultiInitialStateNFA = registration::OverloadRegister < SingleInitialState, automaton::NFA < >, automaton::MultiInitialStateNFA < > > ( SingleInitialState::convert ); +auto SingleInitialStateDFA = registration::OverloadRegister < SingleInitialState, automaton::DFA < >, automaton::DFA < > > ( SingleInitialState::convert ); +auto SingleInitialStateEpsilonNFA = registration::OverloadRegister < SingleInitialState, automaton::EpsilonNFA < >, automaton::EpsilonNFA < > > ( SingleInitialState::convert ); +auto SingleInitialStateNFA = registration::OverloadRegister < SingleInitialState, automaton::NFA < > , automaton::NFA < > > ( SingleInitialState::convert ); +auto SingleInitialStateCompactNFA = registration::OverloadRegister < SingleInitialState, automaton::CompactNFA < >, automaton::CompactNFA < > > ( SingleInitialState::convert ); +auto SingleInitialStateExtendedNFA = registration::OverloadRegister < SingleInitialState, automaton::ExtendedNFA < >, automaton::ExtendedNFA < > > ( SingleInitialState::convert ); } /* namespace simplify */ diff --git a/alib2algo/src/automaton/simplify/Total.cpp b/alib2algo/src/automaton/simplify/Total.cpp index 4dd40fe3cc..decea974d7 100644 --- a/alib2algo/src/automaton/simplify/Total.cpp +++ b/alib2algo/src/automaton/simplify/Total.cpp @@ -6,6 +6,7 @@ */ #include "Total.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -15,8 +16,8 @@ automaton::Automaton Total::total(const Automaton& automaton) { return dispatch(automaton.getData()); } -auto TotalNFA = Total::RegistratorWrapper<automaton::NFA < >, automaton::NFA < > >(Total::total); -auto TotalDFA = Total::RegistratorWrapper<automaton::DFA < >, automaton::DFA < > >(Total::total); +auto TotalNFA = registration::OverloadRegister < Total, automaton::NFA < >, automaton::NFA < > > ( Total::total ); +auto TotalDFA = registration::OverloadRegister < Total, automaton::DFA < >, automaton::DFA < > > ( Total::total ); } /* namespace simplify */ diff --git a/alib2algo/src/automaton/simplify/Trim.cpp b/alib2algo/src/automaton/simplify/Trim.cpp index 5e639c8453..e52e9e2e00 100644 --- a/alib2algo/src/automaton/simplify/Trim.cpp +++ b/alib2algo/src/automaton/simplify/Trim.cpp @@ -13,18 +13,19 @@ #include <automaton/FSM/NFA.h> #include <automaton/FSM/DFA.h> #include <automaton/TA/DFTA.h> +#include <registration/AlgoRegistration.hpp> namespace automaton { namespace simplify { -auto TrimDFA = Trim::RegistratorWrapper<automaton::DFA<>, automaton::DFA<>>(Trim::trim); -auto TrimNFA = Trim::RegistratorWrapper<automaton::NFA < > , automaton::NFA < > >(Trim::trim); -auto TrimMultiInitialStateNFA = Trim::RegistratorWrapper<automaton::MultiInitialStateNFA < > , automaton::MultiInitialStateNFA < > >(Trim::trim); -auto TrimEpsilonNFA = Trim::RegistratorWrapper<automaton::EpsilonNFA < >, automaton::EpsilonNFA < > >(Trim::trim); -auto TrimCompactNFA = Trim::RegistratorWrapper<automaton::CompactNFA < >, automaton::CompactNFA < > >(Trim::trim); -auto TrimExtendedNFA = Trim::RegistratorWrapper<automaton::ExtendedNFA < >, automaton::ExtendedNFA < > >(Trim::trim); -auto TrimDFTA = Trim::RegistratorWrapper<automaton::DFTA<>, automaton::DFTA<>>(Trim::trim); +auto TrimDFA = registration::OverloadRegister < Trim, automaton::DFA < >, automaton::DFA < > > ( Trim::trim ); +auto TrimNFA = registration::OverloadRegister < Trim, automaton::NFA < > , automaton::NFA < > >( Trim::trim ); +auto TrimMultiInitialStateNFA = registration::OverloadRegister < Trim, automaton::MultiInitialStateNFA < > , automaton::MultiInitialStateNFA < > > ( Trim::trim ); +auto TrimEpsilonNFA = registration::OverloadRegister < Trim, automaton::EpsilonNFA < >, automaton::EpsilonNFA < > > ( Trim::trim ); +auto TrimCompactNFA = registration::OverloadRegister < Trim, automaton::CompactNFA < >, automaton::CompactNFA < > > ( Trim::trim ); +auto TrimExtendedNFA = registration::OverloadRegister < Trim, automaton::ExtendedNFA < >, automaton::ExtendedNFA < > > ( Trim::trim ); +auto TrimDFTA = registration::OverloadRegister < Trim, automaton::DFTA < >, automaton::DFTA < > > ( Trim::trim ); automaton::Automaton Trim::trim(const automaton::Automaton& automaton) { return dispatch(automaton.getData()); diff --git a/alib2algo/src/automaton/simplify/UnreachableStatesRemover.cpp b/alib2algo/src/automaton/simplify/UnreachableStatesRemover.cpp index 39701c6f10..e0050a01e0 100644 --- a/alib2algo/src/automaton/simplify/UnreachableStatesRemover.cpp +++ b/alib2algo/src/automaton/simplify/UnreachableStatesRemover.cpp @@ -6,18 +6,19 @@ */ #include "UnreachableStatesRemover.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { namespace simplify { -auto UnreachableStatesRemoverEpsilonNFA = UnreachableStatesRemover::RegistratorWrapper<automaton::EpsilonNFA < >, automaton::EpsilonNFA < > >(UnreachableStatesRemover::remove); -auto UnreachableStatesRemoverNFA = UnreachableStatesRemover::RegistratorWrapper<automaton::NFA < > , automaton::NFA < > >(UnreachableStatesRemover::remove); -auto UnreachableStatesRemoverCompactNFA = UnreachableStatesRemover::RegistratorWrapper<automaton::CompactNFA < >, automaton::CompactNFA < > >(UnreachableStatesRemover::remove); -auto UnreachableStatesRemoverExtendedNFA = UnreachableStatesRemover::RegistratorWrapper<automaton::ExtendedNFA < >, automaton::ExtendedNFA < > >(UnreachableStatesRemover::remove); -auto UnreachableStatesRemoverDFA = UnreachableStatesRemover::RegistratorWrapper<automaton::DFA<>, automaton::DFA<>>(UnreachableStatesRemover::remove); -auto UnreachableStatesRemoverMultiInitialStateNFA = UnreachableStatesRemover::RegistratorWrapper<automaton::MultiInitialStateNFA < > , automaton::MultiInitialStateNFA < > >(UnreachableStatesRemover::remove); -auto UnreachableStatesRemoverDFTA = UnreachableStatesRemover::RegistratorWrapper<automaton::DFTA<>, automaton::DFTA < > >(UnreachableStatesRemover::remove); +auto UnreachableStatesRemoverEpsilonNFA = registration::OverloadRegister < UnreachableStatesRemover, automaton::EpsilonNFA < >, automaton::EpsilonNFA < > > ( UnreachableStatesRemover::remove ); +auto UnreachableStatesRemoverNFA = registration::OverloadRegister < UnreachableStatesRemover, automaton::NFA < > , automaton::NFA < > > ( UnreachableStatesRemover::remove ); +auto UnreachableStatesRemoverCompactNFA = registration::OverloadRegister < UnreachableStatesRemover, automaton::CompactNFA < >, automaton::CompactNFA < > > ( UnreachableStatesRemover::remove ); +auto UnreachableStatesRemoverExtendedNFA = registration::OverloadRegister < UnreachableStatesRemover, automaton::ExtendedNFA < >, automaton::ExtendedNFA < > > ( UnreachableStatesRemover::remove ); +auto UnreachableStatesRemoverDFA = registration::OverloadRegister < UnreachableStatesRemover, automaton::DFA < >, automaton::DFA < > > ( UnreachableStatesRemover::remove ); +auto UnreachableStatesRemoverMultiInitialStateNFA = registration::OverloadRegister < UnreachableStatesRemover, automaton::MultiInitialStateNFA < > , automaton::MultiInitialStateNFA < > > ( UnreachableStatesRemover::remove ); +auto UnreachableStatesRemoverDFTA = registration::OverloadRegister < UnreachableStatesRemover, automaton::DFTA < >, automaton::DFTA < > > ( UnreachableStatesRemover::remove ); automaton::Automaton UnreachableStatesRemover::remove(const automaton::Automaton& automaton) { return dispatch(automaton.getData()); diff --git a/alib2algo/src/automaton/simplify/UselessStatesRemover.cpp b/alib2algo/src/automaton/simplify/UselessStatesRemover.cpp index 8b008413f2..190ec3c0c6 100644 --- a/alib2algo/src/automaton/simplify/UselessStatesRemover.cpp +++ b/alib2algo/src/automaton/simplify/UselessStatesRemover.cpp @@ -6,18 +6,19 @@ */ #include "UselessStatesRemover.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { namespace simplify { -auto UselessStatesRemoverEpsilonNFA = UselessStatesRemover::RegistratorWrapper<automaton::EpsilonNFA < >, automaton::EpsilonNFA < > >(UselessStatesRemover::remove); -auto UselessStatesRemoverNFA = UselessStatesRemover::RegistratorWrapper<automaton::NFA < > , automaton::NFA < > >(UselessStatesRemover::remove); -auto UselessStatesRemoverCompactNFA = UselessStatesRemover::RegistratorWrapper<automaton::CompactNFA < >, automaton::CompactNFA < > >(UselessStatesRemover::remove); -auto UselessStatesRemoverExtendedNFA = UselessStatesRemover::RegistratorWrapper<automaton::ExtendedNFA < >, automaton::ExtendedNFA < > >(UselessStatesRemover::remove); -auto UselessStatesRemoverDFA = UselessStatesRemover::RegistratorWrapper<automaton::DFA<>, automaton::DFA<>>(UselessStatesRemover::remove); -auto UselessStatesRemoverMultiInitialStateNFA = UselessStatesRemover::RegistratorWrapper<automaton::MultiInitialStateNFA < > , automaton::MultiInitialStateNFA < > >(UselessStatesRemover::remove); -auto UselessStatesRemoverDFTA = UselessStatesRemover::RegistratorWrapper<automaton::DFTA<>, automaton::DFTA<>>(UselessStatesRemover::remove); +auto UselessStatesRemoverEpsilonNFA = registration::OverloadRegister < UselessStatesRemover, automaton::EpsilonNFA < >, automaton::EpsilonNFA < > > ( UselessStatesRemover::remove ); +auto UselessStatesRemoverNFA = registration::OverloadRegister < UselessStatesRemover, automaton::NFA < > , automaton::NFA < > > ( UselessStatesRemover::remove ); +auto UselessStatesRemoverCompactNFA = registration::OverloadRegister < UselessStatesRemover, automaton::CompactNFA < >, automaton::CompactNFA < > > ( UselessStatesRemover::remove ); +auto UselessStatesRemoverExtendedNFA = registration::OverloadRegister < UselessStatesRemover, automaton::ExtendedNFA < >, automaton::ExtendedNFA < > > ( UselessStatesRemover::remove ); +auto UselessStatesRemoverDFA = registration::OverloadRegister < UselessStatesRemover, automaton::DFA < >, automaton::DFA < > > ( UselessStatesRemover::remove ); +auto UselessStatesRemoverMultiInitialStateNFA = registration::OverloadRegister < UselessStatesRemover, automaton::MultiInitialStateNFA < > , automaton::MultiInitialStateNFA < > > ( UselessStatesRemover::remove ); +auto UselessStatesRemoverDFTA = registration::OverloadRegister < UselessStatesRemover, automaton::DFTA < >, automaton::DFTA < > > ( UselessStatesRemover::remove ); automaton::Automaton UselessStatesRemover::remove(const automaton::Automaton& automaton) { return dispatch(automaton.getData()); diff --git a/alib2algo/src/automaton/transform/AutomataConcatenation.cpp b/alib2algo/src/automaton/transform/AutomataConcatenation.cpp index 8494c78826..fb3641c2df 100644 --- a/alib2algo/src/automaton/transform/AutomataConcatenation.cpp +++ b/alib2algo/src/automaton/transform/AutomataConcatenation.cpp @@ -6,6 +6,7 @@ */ #include "AutomataConcatenation.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -15,8 +16,8 @@ automaton::Automaton AutomataConcatenation::concatenation(const automaton::Autom return dispatch(first.getData(), second.getData()); } -auto AutomataConcatenationNFA = AutomataConcatenation::RegistratorWrapper<automaton::NFA < > , automaton::NFA < > >(AutomataConcatenation::concatenation); -auto AutomataConcatenationDFA = AutomataConcatenation::RegistratorWrapper<automaton::NFA < > , automaton::DFA < > >(AutomataConcatenation::concatenation); +auto AutomataConcatenationNFA = registration::OverloadRegister < AutomataConcatenation, automaton::NFA < >, automaton::NFA < > > ( AutomataConcatenation::concatenation ); +auto AutomataConcatenationDFA = registration::OverloadRegister < AutomataConcatenation, automaton::NFA < >, automaton::DFA < > > ( AutomataConcatenation::concatenation ); } /* namespace transform */ diff --git a/alib2algo/src/automaton/transform/AutomataConcatenationEpsilonTransition.cpp b/alib2algo/src/automaton/transform/AutomataConcatenationEpsilonTransition.cpp index a4c7a46399..989e9821c7 100644 --- a/alib2algo/src/automaton/transform/AutomataConcatenationEpsilonTransition.cpp +++ b/alib2algo/src/automaton/transform/AutomataConcatenationEpsilonTransition.cpp @@ -7,6 +7,7 @@ #include "AutomataConcatenationEpsilonTransition.h" #include <common/DefaultStateType.h> +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -16,9 +17,9 @@ automaton::Automaton AutomataConcatenationEpsilonTransition::concatenation(const return dispatch(first.getData(), second.getData()); } -auto AutomataConcatenationEpsilonTransitionDFA = AutomataConcatenationEpsilonTransition::RegistratorWrapper<automaton::EpsilonNFA < >, automaton::DFA < > >(AutomataConcatenationEpsilonTransition::concatenation); -auto AutomataConcatenationEpsilonTransitionNFA = AutomataConcatenationEpsilonTransition::RegistratorWrapper<automaton::EpsilonNFA < >, automaton::NFA < > >(AutomataConcatenationEpsilonTransition::concatenation); -auto AutomataConcatenationEpsilonTransitionEpsilonNFA = AutomataConcatenationEpsilonTransition::RegistratorWrapper<automaton::EpsilonNFA < > , automaton::EpsilonNFA < > >(AutomataConcatenationEpsilonTransition::concatenation); +auto AutomataConcatenationEpsilonTransitionDFA = registration::OverloadRegister < AutomataConcatenationEpsilonTransition, automaton::EpsilonNFA < >, automaton::DFA < > > ( AutomataConcatenationEpsilonTransition::concatenation ); +auto AutomataConcatenationEpsilonTransitionNFA = registration::OverloadRegister < AutomataConcatenationEpsilonTransition, automaton::EpsilonNFA < >, automaton::NFA < > > ( AutomataConcatenationEpsilonTransition::concatenation ); +auto AutomataConcatenationEpsilonTransitionEpsilonNFA = registration::OverloadRegister < AutomataConcatenationEpsilonTransition, automaton::EpsilonNFA < > , automaton::EpsilonNFA < > > ( AutomataConcatenationEpsilonTransition::concatenation ); } /* namespace transform */ diff --git a/alib2algo/src/automaton/transform/AutomataIntersectionCartesianProduct.cpp b/alib2algo/src/automaton/transform/AutomataIntersectionCartesianProduct.cpp index 23641c1250..f5feba0822 100644 --- a/alib2algo/src/automaton/transform/AutomataIntersectionCartesianProduct.cpp +++ b/alib2algo/src/automaton/transform/AutomataIntersectionCartesianProduct.cpp @@ -7,6 +7,7 @@ #include "AutomataIntersectionCartesianProduct.h" #include <common/DefaultStatesPairType.h> +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -18,8 +19,8 @@ automaton::Automaton AutomataIntersectionCartesianProduct::intersection(const au return res; } -auto AutomataIntersectionCartesianProductDFA = AutomataIntersectionCartesianProduct::RegistratorWrapper<automaton::DFA < DefaultSymbolType, std::pair < DefaultStateType, DefaultStateType > >, automaton::DFA < > >(AutomataIntersectionCartesianProduct::intersection); -auto AutomataIntersectionCartesianProductNFA = AutomataIntersectionCartesianProduct::RegistratorWrapper<automaton::NFA < DefaultSymbolType, std::pair < DefaultStateType, DefaultStateType > >, automaton::NFA < > >(AutomataIntersectionCartesianProduct::intersection); +auto AutomataIntersectionCartesianProductDFA = registration::OverloadRegister < AutomataIntersectionCartesianProduct, automaton::DFA < DefaultSymbolType, std::pair < DefaultStateType, DefaultStateType > >, automaton::DFA < > > ( AutomataIntersectionCartesianProduct::intersection ); +auto AutomataIntersectionCartesianProductNFA = registration::OverloadRegister < AutomataIntersectionCartesianProduct, automaton::NFA < DefaultSymbolType, std::pair < DefaultStateType, DefaultStateType > >, automaton::NFA < > > ( AutomataIntersectionCartesianProduct::intersection ); } /* namespace transform */ diff --git a/alib2algo/src/automaton/transform/AutomataUnionCartesianProduct.cpp b/alib2algo/src/automaton/transform/AutomataUnionCartesianProduct.cpp index b1a7e17486..901d836686 100644 --- a/alib2algo/src/automaton/transform/AutomataUnionCartesianProduct.cpp +++ b/alib2algo/src/automaton/transform/AutomataUnionCartesianProduct.cpp @@ -8,6 +8,7 @@ #include "AutomataUnionCartesianProduct.h" #include <exception/CommonException.h> #include <common/DefaultStatesPairType.h> +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -19,8 +20,8 @@ automaton::Automaton AutomataUnionCartesianProduct::unification(const automaton: return res; } -auto AutomataUnionCartesianProductDFA = AutomataUnionCartesianProduct::RegistratorWrapper<automaton::DFA < DefaultSymbolType, std::pair < DefaultStateType, DefaultStateType > >, automaton::DFA < > >(AutomataUnionCartesianProduct::unification); -auto AutomataUnionCartesianProductNFA = AutomataUnionCartesianProduct::RegistratorWrapper<automaton::NFA < DefaultSymbolType, std::pair < DefaultStateType, DefaultStateType > >, automaton::NFA < > >(AutomataUnionCartesianProduct::unification); +auto AutomataUnionCartesianProductDFA = registration::OverloadRegister < AutomataUnionCartesianProduct, automaton::DFA < DefaultSymbolType, std::pair < DefaultStateType, DefaultStateType > >, automaton::DFA < > > ( AutomataUnionCartesianProduct::unification ); +auto AutomataUnionCartesianProductNFA = registration::OverloadRegister < AutomataUnionCartesianProduct, automaton::NFA < DefaultSymbolType, std::pair < DefaultStateType, DefaultStateType > >, automaton::NFA < > > ( AutomataUnionCartesianProduct::unification ); } /* namespace transform */ diff --git a/alib2algo/src/automaton/transform/AutomataUnionEpsilonTransition.cpp b/alib2algo/src/automaton/transform/AutomataUnionEpsilonTransition.cpp index bba6f9ceec..77bcccf9a9 100644 --- a/alib2algo/src/automaton/transform/AutomataUnionEpsilonTransition.cpp +++ b/alib2algo/src/automaton/transform/AutomataUnionEpsilonTransition.cpp @@ -8,6 +8,7 @@ #include "AutomataUnionEpsilonTransition.h" #include <label/InitialStateLabel.h> #include <common/createUnique.hpp> +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -17,9 +18,9 @@ automaton::Automaton AutomataUnionEpsilonTransition::unification(const automaton return dispatch(first.getData(), second.getData()); } -auto AutomataUnionEpsilonTransitionEpsilonNFA = AutomataUnionEpsilonTransition::RegistratorWrapper<automaton::EpsilonNFA < >, automaton::EpsilonNFA < > >(AutomataUnionEpsilonTransition::unification); -auto AutomataUnionEpsilonTransitionNFA = AutomataUnionEpsilonTransition::RegistratorWrapper<automaton::EpsilonNFA < >, automaton::NFA < > >(AutomataUnionEpsilonTransition::unification); -auto AutomataUnionEpsilonTransitionDFA = AutomataUnionEpsilonTransition::RegistratorWrapper<automaton::EpsilonNFA < >, automaton::DFA < > >(AutomataUnionEpsilonTransition::unification); +auto AutomataUnionEpsilonTransitionEpsilonNFA = registration::OverloadRegister < AutomataUnionEpsilonTransition, automaton::EpsilonNFA < >, automaton::EpsilonNFA < > > ( AutomataUnionEpsilonTransition::unification ); +auto AutomataUnionEpsilonTransitionNFA = registration::OverloadRegister < AutomataUnionEpsilonTransition, automaton::EpsilonNFA < >, automaton::NFA < > > ( AutomataUnionEpsilonTransition::unification ); +auto AutomataUnionEpsilonTransitionDFA = registration::OverloadRegister < AutomataUnionEpsilonTransition, automaton::EpsilonNFA < >, automaton::DFA < > > ( AutomataUnionEpsilonTransition::unification ); } /* namespace transform */ diff --git a/alib2algo/src/automaton/transform/AutomatonIteration.cpp b/alib2algo/src/automaton/transform/AutomatonIteration.cpp index c079d65a95..f3646df4b1 100644 --- a/alib2algo/src/automaton/transform/AutomatonIteration.cpp +++ b/alib2algo/src/automaton/transform/AutomatonIteration.cpp @@ -7,6 +7,7 @@ #include "AutomatonIteration.h" #include <common/createUnique.hpp> +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -16,8 +17,8 @@ automaton::Automaton AutomatonIteration::iteration(const automaton::Automaton& a return dispatch(automaton.getData()); } -auto AutomatonIterationDFA = AutomatonIteration::RegistratorWrapper < automaton::NFA < >, automaton::DFA < > > ( AutomatonIteration::iteration ); -auto AutomatonIterationNFA = AutomatonIteration::RegistratorWrapper < automaton::NFA < >, automaton::NFA < > > (AutomatonIteration::iteration); +auto AutomatonIterationDFA = registration::OverloadRegister < AutomatonIteration, automaton::NFA < >, automaton::DFA < > > ( AutomatonIteration::iteration ); +auto AutomatonIterationNFA = registration::OverloadRegister < AutomatonIteration, automaton::NFA < >, automaton::NFA < > > ( AutomatonIteration::iteration ); } /* namespace transform */ diff --git a/alib2algo/src/automaton/transform/AutomatonIterationEpsilonTransition.cpp b/alib2algo/src/automaton/transform/AutomatonIterationEpsilonTransition.cpp index 67d92430ae..fea903fdb9 100644 --- a/alib2algo/src/automaton/transform/AutomatonIterationEpsilonTransition.cpp +++ b/alib2algo/src/automaton/transform/AutomatonIterationEpsilonTransition.cpp @@ -7,6 +7,7 @@ #include "AutomatonIterationEpsilonTransition.h" #include <common/createUnique.hpp> +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -16,9 +17,9 @@ automaton::Automaton AutomatonIterationEpsilonTransition::iteration(const automa return dispatch(automaton.getData()); } -auto AutomatonIterationEpsilonTransitionDFA = AutomatonIterationEpsilonTransition::RegistratorWrapper<automaton::EpsilonNFA < >, automaton::DFA < > >(AutomatonIterationEpsilonTransition::iteration); -auto AutomatonIterationEpsilonTransitionNFA = AutomatonIterationEpsilonTransition::RegistratorWrapper<automaton::EpsilonNFA < >, automaton::NFA < > >(AutomatonIterationEpsilonTransition::iteration); -auto AutomatonIterationEpsilonTransitionEpsilonNFA = AutomatonIterationEpsilonTransition::RegistratorWrapper<automaton::EpsilonNFA < >, automaton::EpsilonNFA < > >(AutomatonIterationEpsilonTransition::iteration); +auto AutomatonIterationEpsilonTransitionDFA = registration::OverloadRegister < AutomatonIterationEpsilonTransition, automaton::EpsilonNFA < >, automaton::DFA < > > ( AutomatonIterationEpsilonTransition::iteration ); +auto AutomatonIterationEpsilonTransitionNFA = registration::OverloadRegister < AutomatonIterationEpsilonTransition, automaton::EpsilonNFA < >, automaton::NFA < > > ( AutomatonIterationEpsilonTransition::iteration ); +auto AutomatonIterationEpsilonTransitionEpsilonNFA = registration::OverloadRegister < AutomatonIterationEpsilonTransition, automaton::EpsilonNFA < >, automaton::EpsilonNFA < > > ( AutomatonIterationEpsilonTransition::iteration ); } /* namespace transform */ diff --git a/alib2algo/src/automaton/transform/Compaction.cpp b/alib2algo/src/automaton/transform/Compaction.cpp index 32e58355f5..a0ece87258 100644 --- a/alib2algo/src/automaton/transform/Compaction.cpp +++ b/alib2algo/src/automaton/transform/Compaction.cpp @@ -6,6 +6,7 @@ */ #include "Compaction.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -15,9 +16,9 @@ automaton::Automaton Compaction::convert(const automaton::Automaton& automaton) return dispatch(automaton.getData()); } -auto CompactionCompactNFA = Compaction::RegistratorWrapper<automaton::CompactNFA < >, automaton::CompactNFA < > >(Compaction::convert); -auto CompactionDFA = Compaction::RegistratorWrapper<automaton::CompactNFA < >, automaton::DFA < > >(Compaction::convert); -auto CompactionNFA = Compaction::RegistratorWrapper<automaton::CompactNFA < >, automaton::NFA < > >(Compaction::convert); +auto CompactionCompactNFA = registration::OverloadRegister < Compaction, automaton::CompactNFA < >, automaton::CompactNFA < > > ( Compaction::convert ); +auto CompactionDFA = registration::OverloadRegister < Compaction, automaton::CompactNFA < >, automaton::DFA < > > ( Compaction::convert ); +auto CompactionNFA = registration::OverloadRegister < Compaction, automaton::CompactNFA < >, automaton::NFA < > > ( Compaction::convert ); } /* namespace transform */ diff --git a/alib2algo/src/automaton/transform/PDAToRHPDA.cpp b/alib2algo/src/automaton/transform/PDAToRHPDA.cpp index 11dd7ea3af..870eecdde9 100644 --- a/alib2algo/src/automaton/transform/PDAToRHPDA.cpp +++ b/alib2algo/src/automaton/transform/PDAToRHPDA.cpp @@ -22,6 +22,7 @@ #include <common/createUnique.hpp> #include <registration/CastRegistration.hpp> +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -29,13 +30,13 @@ automaton::RealTimeHeightDeterministicDPDA < > PDAToRHPDA::convert ( const autom return pda; } -auto PDAToRHPDARealTimeHeightDeterministicDPDA = PDAToRHPDA::RegistratorWrapper < automaton::RealTimeHeightDeterministicDPDA < >, automaton::RealTimeHeightDeterministicDPDA < > > ( PDAToRHPDA::convert ); +auto PDAToRHPDARealTimeHeightDeterministicDPDA = registration::OverloadRegister < PDAToRHPDA, automaton::RealTimeHeightDeterministicDPDA < >, automaton::RealTimeHeightDeterministicDPDA < > > ( PDAToRHPDA::convert ); automaton::RealTimeHeightDeterministicNPDA < > PDAToRHPDA::convert ( const automaton::RealTimeHeightDeterministicNPDA < > & pda ) { return pda; } -auto PDAToRHPDARealTimeHeightDeterministicNPDA = PDAToRHPDA::RegistratorWrapper < automaton::RealTimeHeightDeterministicNPDA < >, automaton::RealTimeHeightDeterministicNPDA < > > ( PDAToRHPDA::convert ); +auto PDAToRHPDARealTimeHeightDeterministicNPDA = registration::OverloadRegister < PDAToRHPDA, automaton::RealTimeHeightDeterministicNPDA < >, automaton::RealTimeHeightDeterministicNPDA < > > ( PDAToRHPDA::convert ); automaton::RealTimeHeightDeterministicDPDA < > PDAToRHPDA::convert ( const automaton::DPDA < > & pda ) { DefaultStateType q0 = common::createUnique ( label::InitialStateLabel::instance < DefaultStateType > ( ), pda.getStates ( ) ); @@ -111,7 +112,7 @@ automaton::RealTimeHeightDeterministicDPDA < > PDAToRHPDA::convert ( const autom return res; } -auto PDAToRHPDADPDA = PDAToRHPDA::RegistratorWrapper < automaton::RealTimeHeightDeterministicDPDA < >, automaton::DPDA < > > ( PDAToRHPDA::convert ); +auto PDAToRHPDADPDA = registration::OverloadRegister < PDAToRHPDA, automaton::RealTimeHeightDeterministicDPDA < >, automaton::DPDA < > > ( PDAToRHPDA::convert ); automaton::RealTimeHeightDeterministicNPDA < > PDAToRHPDA::convert ( const automaton::NPDA < > & pda ) { RealTimeHeightDeterministicNPDA < > res ( alphabet::BottomOfTheStackSymbol::instance < DefaultSymbolType > ( ) ); @@ -185,7 +186,7 @@ automaton::RealTimeHeightDeterministicNPDA < > PDAToRHPDA::convert ( const autom return res; } -auto PDAToRHPDANPDA = PDAToRHPDA::RegistratorWrapper < automaton::RealTimeHeightDeterministicNPDA < >, automaton::NPDA < > > ( PDAToRHPDA::convert ); +auto PDAToRHPDANPDA = registration::OverloadRegister < PDAToRHPDA, automaton::RealTimeHeightDeterministicNPDA < >, automaton::NPDA < > > ( PDAToRHPDA::convert ); automaton::Automaton PDAToRHPDA::convert ( const Automaton & automaton ) { return dispatch ( automaton.getData ( ) ); diff --git a/alib2algo/src/automaton/transform/RHPDAToPDA.cpp b/alib2algo/src/automaton/transform/RHPDAToPDA.cpp index 2a618e9173..b300d21fdf 100644 --- a/alib2algo/src/automaton/transform/RHPDAToPDA.cpp +++ b/alib2algo/src/automaton/transform/RHPDAToPDA.cpp @@ -21,6 +21,7 @@ #include <iostream> #include <registration/CastRegistration.hpp> +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -155,7 +156,7 @@ automaton::DPDA < > RHPDAToPDA::convert ( const automaton::RealTimeHeightDetermi return res; } -auto RHPDAToPDARealTimeHeightDeterministicDPDA = RHPDAToPDA::RegistratorWrapper < automaton::DPDA < >, automaton::RealTimeHeightDeterministicDPDA < > > ( RHPDAToPDA::convert ); +auto RHPDAToPDARealTimeHeightDeterministicDPDA = registration::OverloadRegister < RHPDAToPDA, automaton::DPDA < >, automaton::RealTimeHeightDeterministicDPDA < > > ( RHPDAToPDA::convert ); // This may not work correctly -- generation of initial state and initial symbol automaton::NPDA < > RHPDAToPDA::convert ( const automaton::RealTimeHeightDeterministicNPDA < > & pda ) { @@ -271,7 +272,7 @@ automaton::NPDA < > RHPDAToPDA::convert ( const automaton::RealTimeHeightDetermi return res; } -auto RHPDAToPDARealTimeHeightDeterministicNPDA = RHPDAToPDA::RegistratorWrapper < automaton::NPDA < >, automaton::RealTimeHeightDeterministicNPDA < > > ( RHPDAToPDA::convert ); +auto RHPDAToPDARealTimeHeightDeterministicNPDA = registration::OverloadRegister < RHPDAToPDA, automaton::NPDA < >, automaton::RealTimeHeightDeterministicNPDA < > > ( RHPDAToPDA::convert ); automaton::Automaton RHPDAToPDA::convert ( const Automaton & automaton ) { return dispatch ( automaton.getData ( ) ); diff --git a/alib2algo/src/automaton/transform/Reverse.cpp b/alib2algo/src/automaton/transform/Reverse.cpp index ed567ffa4b..de1af487f4 100644 --- a/alib2algo/src/automaton/transform/Reverse.cpp +++ b/alib2algo/src/automaton/transform/Reverse.cpp @@ -6,6 +6,7 @@ */ #include "Reverse.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -15,9 +16,9 @@ automaton::Automaton Reverse::convert(const Automaton& automaton) { return dispatch(automaton.getData()); } -auto ReverseDFA = Reverse::RegistratorWrapper<automaton::MultiInitialStateNFA < > , automaton::DFA<>>(Reverse::convert); -auto ReverseNFA = Reverse::RegistratorWrapper<automaton::MultiInitialStateNFA < > , automaton::NFA < > >(Reverse::convert); -auto ReverseMultiInitialStateNFA = Reverse::RegistratorWrapper<automaton::MultiInitialStateNFA < > , automaton::MultiInitialStateNFA < > >(Reverse::convert); +auto ReverseDFA = registration::OverloadRegister < Reverse, automaton::MultiInitialStateNFA < >, automaton::DFA < > > ( Reverse::convert ); +auto ReverseNFA = registration::OverloadRegister < Reverse, automaton::MultiInitialStateNFA < >, automaton::NFA < > > ( Reverse::convert ); +auto ReverseMultiInitialStateNFA = registration::OverloadRegister < Reverse, automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < > > ( Reverse::convert ); } /* namespace transform */ diff --git a/alib2algo/src/grammar/convert/ToAutomaton.cpp b/alib2algo/src/grammar/convert/ToAutomaton.cpp index 57e76a919a..2c214c1f1e 100644 --- a/alib2algo/src/grammar/convert/ToAutomaton.cpp +++ b/alib2algo/src/grammar/convert/ToAutomaton.cpp @@ -10,6 +10,7 @@ #include <label/InitialStateLabel.h> #include <label/FinalStateLabel.h> +#include <registration/AlgoRegistration.hpp> namespace grammar { @@ -60,7 +61,7 @@ automaton::NFA < > ToAutomaton::convert(const grammar::LeftRG < > & grammar) { return automaton; } -auto ToAutomatonLeftRG = ToAutomaton::RegistratorWrapper<automaton::NFA < > , grammar::LeftRG < > >(ToAutomaton::convert); +auto ToAutomatonLeftRG = registration::OverloadRegister < ToAutomaton, automaton::NFA < >, grammar::LeftRG < > > ( ToAutomaton::convert ); automaton::NFA < > ToAutomaton::convert(const grammar::RightRG < > & grammar) { std::map<DefaultSymbolType, DefaultStateType> stateMap; @@ -104,7 +105,7 @@ automaton::NFA < > ToAutomaton::convert(const grammar::RightRG < > & grammar) { return automaton; } -auto ToAutomatonRightRG = ToAutomaton::RegistratorWrapper<automaton::NFA < > , grammar::RightRG < > >(ToAutomaton::convert); +auto ToAutomatonRightRG = registration::OverloadRegister < ToAutomaton, automaton::NFA < >, grammar::RightRG < > > ( ToAutomaton::convert ); template <class T> automaton::NPDA < > ToAutomaton::convert(const T& grammar) { @@ -126,8 +127,8 @@ automaton::NPDA < > ToAutomaton::convert(const T& grammar) { return automaton; } -auto ToAutomatonCFG = ToAutomaton::RegistratorWrapper<automaton::NPDA < > , grammar::CFG < > >(ToAutomaton::convert); -auto ToAutomatonEpsilonFreeCFG = ToAutomaton::RegistratorWrapper<automaton::NPDA < >, grammar::EpsilonFreeCFG < > >(ToAutomaton::convert); +auto ToAutomatonCFG = registration::OverloadRegister < ToAutomaton, automaton::NPDA < >, grammar::CFG < > > ( ToAutomaton::convert ); +auto ToAutomatonEpsilonFreeCFG = registration::OverloadRegister < ToAutomaton, automaton::NPDA < >, grammar::EpsilonFreeCFG < > > ( ToAutomaton::convert ); } /* namespace convert */ diff --git a/alib2algo/src/grammar/convert/ToAutomatonBottomUp.cpp b/alib2algo/src/grammar/convert/ToAutomatonBottomUp.cpp index 20310099e7..3329e1c26e 100644 --- a/alib2algo/src/grammar/convert/ToAutomatonBottomUp.cpp +++ b/alib2algo/src/grammar/convert/ToAutomatonBottomUp.cpp @@ -5,6 +5,7 @@ * Author: Tomas Pecka */ #include "ToAutomatonBottomUp.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { @@ -14,8 +15,8 @@ automaton::Automaton ToAutomatonBottomUp::convert(const grammar::Grammar& gramma return dispatch(grammar.getData()); } -auto ToAutomatonBottomUpCFG = ToAutomatonBottomUp::RegistratorWrapper<automaton::NPDA < > , grammar::CFG < > >(ToAutomatonBottomUp::convert); -auto ToAutomatonBottomUpEpsilonFreeCFG = ToAutomatonBottomUp::RegistratorWrapper<automaton::NPDA < >, grammar::EpsilonFreeCFG < > >(ToAutomatonBottomUp::convert); +auto ToAutomatonBottomUpCFG = registration::OverloadRegister < ToAutomatonBottomUp, automaton::NPDA < >, grammar::CFG < > > ( ToAutomatonBottomUp::convert ); +auto ToAutomatonBottomUpEpsilonFreeCFG = registration::OverloadRegister < ToAutomatonBottomUp, automaton::NPDA < >, grammar::EpsilonFreeCFG < > > ( ToAutomatonBottomUp::convert ); } /* namespace convert */ diff --git a/alib2algo/src/grammar/convert/ToGrammarLeftRG.cpp b/alib2algo/src/grammar/convert/ToGrammarLeftRG.cpp index ab7ae99d68..33ae387e1d 100644 --- a/alib2algo/src/grammar/convert/ToGrammarLeftRG.cpp +++ b/alib2algo/src/grammar/convert/ToGrammarLeftRG.cpp @@ -6,6 +6,7 @@ */ #include "ToGrammarLeftRG.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { @@ -15,7 +16,7 @@ grammar::Grammar ToGrammarLeftRG::convert(const grammar::Grammar& grammar) { return dispatch(grammar.getData()); } -auto ToGrammarLeftRGRightRG = ToGrammarLeftRG::RegistratorWrapper<grammar::LeftRG < >, grammar::RightRG < > >(ToGrammarLeftRG::convert); +auto ToGrammarLeftRGRightRG = registration::OverloadRegister < ToGrammarLeftRG, grammar::LeftRG < >, grammar::RightRG < > > ( ToGrammarLeftRG::convert ); } /* namespace convert */ diff --git a/alib2algo/src/grammar/convert/ToGrammarRightRG.cpp b/alib2algo/src/grammar/convert/ToGrammarRightRG.cpp index 062ed8e822..4a549e9293 100644 --- a/alib2algo/src/grammar/convert/ToGrammarRightRG.cpp +++ b/alib2algo/src/grammar/convert/ToGrammarRightRG.cpp @@ -6,6 +6,7 @@ */ #include "ToGrammarRightRG.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { @@ -15,7 +16,7 @@ grammar::Grammar ToGrammarRightRG::convert(const grammar::Grammar& grammar) { return dispatch(grammar.getData()); } -auto ToGrammarRightRGLeftRG = ToGrammarRightRG::RegistratorWrapper<grammar::RightRG < >, grammar::LeftRG < > >(ToGrammarRightRG::convert); +auto ToGrammarRightRGLeftRG = registration::OverloadRegister < ToGrammarRightRG, grammar::RightRG < >, grammar::LeftRG < > > ( ToGrammarRightRG::convert ); } /* namespace convert */ diff --git a/alib2algo/src/grammar/convert/ToRegExp.cpp b/alib2algo/src/grammar/convert/ToRegExp.cpp index b4c7e4a280..692ad5161a 100644 --- a/alib2algo/src/grammar/convert/ToRegExp.cpp +++ b/alib2algo/src/grammar/convert/ToRegExp.cpp @@ -6,6 +6,7 @@ */ #include "ToRegExp.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { @@ -15,8 +16,8 @@ regexp::RegExp ToRegExp::convert(const grammar::Grammar& grammar) { return dispatch(grammar.getData()); } -auto ToRegExpRightRG = ToRegExp::RegistratorWrapper<regexp::RegExp, grammar::RightRG < > >(ToRegExp::convert); -auto ToRegExpLeftRG = ToRegExp::RegistratorWrapper<regexp::RegExp, grammar::LeftRG < > >(ToRegExp::convert); +auto ToRegExpRightRG = registration::OverloadRegister < ToRegExp, regexp::RegExp, grammar::RightRG < > > ( ToRegExp::convert ); +auto ToRegExpLeftRG = registration::OverloadRegister < ToRegExp, regexp::RegExp, grammar::LeftRG < > > ( ToRegExp::convert ); } /* namespace convert */ diff --git a/alib2algo/src/grammar/convert/ToRegExpAlgebraic.cpp b/alib2algo/src/grammar/convert/ToRegExpAlgebraic.cpp index a1203f3896..bb1c3d3027 100644 --- a/alib2algo/src/grammar/convert/ToRegExpAlgebraic.cpp +++ b/alib2algo/src/grammar/convert/ToRegExpAlgebraic.cpp @@ -6,6 +6,7 @@ */ #include "ToRegExpAlgebraic.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { @@ -15,8 +16,8 @@ regexp::RegExp ToRegExpAlgebraic::convert(const grammar::Grammar& grammar) { return dispatch(grammar.getData()); } -auto ToRegExpAlgebraicLeftRG = ToRegExpAlgebraic::RegistratorWrapper<regexp::UnboundedRegExp < >, grammar::LeftRG < > >(ToRegExpAlgebraic::convert); -auto ToRegExpAlgebraicRightRG = ToRegExpAlgebraic::RegistratorWrapper<regexp::UnboundedRegExp < >, grammar::RightRG < > >(ToRegExpAlgebraic::convert); +auto ToRegExpAlgebraicLeftRG = registration::OverloadRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, grammar::LeftRG < > > ( ToRegExpAlgebraic::convert ); +auto ToRegExpAlgebraicRightRG = registration::OverloadRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, grammar::RightRG < > > ( ToRegExpAlgebraic::convert ); } /* namespace convert */ diff --git a/alib2algo/src/grammar/generate/CockeYoungerKasami.cpp b/alib2algo/src/grammar/generate/CockeYoungerKasami.cpp index bc75619a6b..b1e57761d2 100644 --- a/alib2algo/src/grammar/generate/CockeYoungerKasami.cpp +++ b/alib2algo/src/grammar/generate/CockeYoungerKasami.cpp @@ -6,12 +6,13 @@ */ #include "CockeYoungerKasami.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { namespace generate { -auto CockeYoungerKasamiCNF = CockeYoungerKasami::RegistratorWrapper < bool, grammar::CNF < > > ( CockeYoungerKasami::generate ); +auto CockeYoungerKasamiCNF = registration::OverloadRegister < CockeYoungerKasami, bool, grammar::CNF < > > ( CockeYoungerKasami::generate ); bool CockeYoungerKasami::generate ( const grammar::Grammar & grammar, const string::LinearString < > & string ) { return dispatch ( grammar.getData ( ), string ); diff --git a/alib2algo/src/grammar/generate/GenerateUpToLength.cpp b/alib2algo/src/grammar/generate/GenerateUpToLength.cpp index 4ad8f0f544..687a2ecfe9 100644 --- a/alib2algo/src/grammar/generate/GenerateUpToLength.cpp +++ b/alib2algo/src/grammar/generate/GenerateUpToLength.cpp @@ -6,16 +6,17 @@ */ #include "GenerateUpToLength.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { namespace generate { -auto GenerateUpToLengthEpsilonFreeCFG = GenerateUpToLength::RegistratorWrapper<std::set<string::LinearString < >>, grammar::EpsilonFreeCFG < > >(GenerateUpToLength::generate); -auto GenerateUpToLengthGNF = GenerateUpToLength::RegistratorWrapper<std::set<string::LinearString < >>, grammar::GNF < > >(GenerateUpToLength::generate); -auto GenerateUpToLengthCNF = GenerateUpToLength::RegistratorWrapper<std::set<string::LinearString < >>, grammar::CNF < > >(GenerateUpToLength::generate); -auto GenerateUpToLengthLeftRG = GenerateUpToLength::RegistratorWrapper<std::set<string::LinearString < >>, grammar::LeftRG < > >(GenerateUpToLength::generate); -auto GenerateUpToLengthRightRG = GenerateUpToLength::RegistratorWrapper<std::set<string::LinearString < >>, grammar::RightRG < > >(GenerateUpToLength::generate); +auto GenerateUpToLengthEpsilonFreeCFG = registration::OverloadRegister < GenerateUpToLength, std::set < string::LinearString < > >, grammar::EpsilonFreeCFG < > > ( GenerateUpToLength::generate ); +auto GenerateUpToLengthGNF = registration::OverloadRegister < GenerateUpToLength, std::set < string::LinearString < > >, grammar::GNF < > > ( GenerateUpToLength::generate ); +auto GenerateUpToLengthCNF = registration::OverloadRegister < GenerateUpToLength, std::set < string::LinearString < > >, grammar::CNF < > > ( GenerateUpToLength::generate ); +auto GenerateUpToLengthLeftRG = registration::OverloadRegister < GenerateUpToLength, std::set < string::LinearString < > >, grammar::LeftRG < > > ( GenerateUpToLength::generate ); +auto GenerateUpToLengthRightRG = registration::OverloadRegister < GenerateUpToLength, std::set < string::LinearString < > >, grammar::RightRG < > > ( GenerateUpToLength::generate ); std::set<string::LinearString < >> GenerateUpToLength::generate(const grammar::Grammar& grammar, unsigned length) { return dispatch(grammar.getData(), length); diff --git a/alib2algo/src/grammar/generate/RandomGrammarFactory.cpp b/alib2algo/src/grammar/generate/RandomGrammarFactory.cpp index 316879b00c..aeb2b0672a 100644 --- a/alib2algo/src/grammar/generate/RandomGrammarFactory.cpp +++ b/alib2algo/src/grammar/generate/RandomGrammarFactory.cpp @@ -11,6 +11,7 @@ #include <algorithm> #include <random> +#include <registration/AlgoRegistration.hpp> namespace grammar { diff --git a/alib2algo/src/grammar/generate/RandomizeGrammar.cpp b/alib2algo/src/grammar/generate/RandomizeGrammar.cpp index 993b6476d8..b349b0d339 100644 --- a/alib2algo/src/grammar/generate/RandomizeGrammar.cpp +++ b/alib2algo/src/grammar/generate/RandomizeGrammar.cpp @@ -7,16 +7,17 @@ #include "RandomizeGrammar.h" #include <grammar/Grammar.h> +#include <registration/AlgoRegistration.hpp> namespace grammar { namespace generate { -auto RandomizeGrammarLeftRG = RandomizeGrammar::RegistratorWrapper < grammar::LeftRG < >, grammar::LeftRG < > > ( RandomizeGrammar::randomize ); -auto RandomizeGrammarLeftLG = RandomizeGrammar::RegistratorWrapper < grammar::LeftLG < >, grammar::LeftLG < > > ( RandomizeGrammar::randomize ); -auto RandomizeGrammarRightRG = RandomizeGrammar::RegistratorWrapper < grammar::RightRG < >, grammar::RightRG < > > ( RandomizeGrammar::randomize ); -auto RandomizeGrammarRightLG = RandomizeGrammar::RegistratorWrapper < grammar::RightLG < >, grammar::RightLG < > > ( RandomizeGrammar::randomize ); -auto RandomizeGrammarCFG = RandomizeGrammar::RegistratorWrapper < grammar::CFG < >, grammar::CFG < > > ( RandomizeGrammar::randomize ); +auto RandomizeGrammarLeftRG = registration::OverloadRegister < RandomizeGrammar, grammar::LeftRG < >, grammar::LeftRG < > > ( RandomizeGrammar::randomize ); +auto RandomizeGrammarLeftLG = registration::OverloadRegister < RandomizeGrammar, grammar::LeftLG < >, grammar::LeftLG < > > ( RandomizeGrammar::randomize ); +auto RandomizeGrammarRightRG = registration::OverloadRegister < RandomizeGrammar, grammar::RightRG < >, grammar::RightRG < > > ( RandomizeGrammar::randomize ); +auto RandomizeGrammarRightLG = registration::OverloadRegister < RandomizeGrammar, grammar::RightLG < >, grammar::RightLG < > > ( RandomizeGrammar::randomize ); +auto RandomizeGrammarCFG = registration::OverloadRegister < RandomizeGrammar, grammar::CFG < >, grammar::CFG < > > ( RandomizeGrammar::randomize ); grammar::Grammar RandomizeGrammar::randomize ( const grammar::Grammar & grammar ) { return dispatch ( grammar.getData ( ) ); diff --git a/alib2algo/src/grammar/properties/IsLanguageEmpty.cpp b/alib2algo/src/grammar/properties/IsLanguageEmpty.cpp index c0caf51f88..c510f9d62c 100644 --- a/alib2algo/src/grammar/properties/IsLanguageEmpty.cpp +++ b/alib2algo/src/grammar/properties/IsLanguageEmpty.cpp @@ -6,6 +6,7 @@ */ #include "IsLanguageEmpty.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { @@ -15,15 +16,15 @@ bool IsLanguageEmpty::isLanguageEmpty(const grammar::Grammar& grammar) { return dispatch(grammar.getData()); } -auto IsLanguageEmptyCFG = IsLanguageEmpty::RegistratorWrapper<bool, grammar::CFG < > >(IsLanguageEmpty::isLanguageEmpty); -auto IsLanguageEmptyEpsilonFreeCFG = IsLanguageEmpty::RegistratorWrapper<bool, grammar::EpsilonFreeCFG < > >(IsLanguageEmpty::isLanguageEmpty); -auto IsLanguageEmptyGNF = IsLanguageEmpty::RegistratorWrapper<bool, grammar::GNF < > >(IsLanguageEmpty::isLanguageEmpty); -auto IsLanguageEmptyCNF = IsLanguageEmpty::RegistratorWrapper<bool, grammar::CNF < > >(IsLanguageEmpty::isLanguageEmpty); -auto IsLanguageEmptyLG = IsLanguageEmpty::RegistratorWrapper<bool, grammar::LG < > >(IsLanguageEmpty::isLanguageEmpty); -auto IsLanguageEmptyLeftLG = IsLanguageEmpty::RegistratorWrapper<bool, grammar::LeftLG < > >(IsLanguageEmpty::isLanguageEmpty); -auto IsLanguageEmptyLeftRG = IsLanguageEmpty::RegistratorWrapper<bool, grammar::LeftRG < > >(IsLanguageEmpty::isLanguageEmpty); -auto IsLanguageEmptyRightLG = IsLanguageEmpty::RegistratorWrapper<bool, grammar::RightLG < > >(IsLanguageEmpty::isLanguageEmpty); -auto IsLanguageEmptyRightRG = IsLanguageEmpty::RegistratorWrapper<bool, grammar::RightRG < > >(IsLanguageEmpty::isLanguageEmpty); +auto IsLanguageEmptyCFG = registration::OverloadRegister < IsLanguageEmpty, bool, grammar::CFG < > > ( IsLanguageEmpty::isLanguageEmpty ); +auto IsLanguageEmptyEpsilonFreeCFG = registration::OverloadRegister < IsLanguageEmpty, bool, grammar::EpsilonFreeCFG < > > ( IsLanguageEmpty::isLanguageEmpty ); +auto IsLanguageEmptyGNF = registration::OverloadRegister < IsLanguageEmpty, bool, grammar::GNF < > > ( IsLanguageEmpty::isLanguageEmpty ); +auto IsLanguageEmptyCNF = registration::OverloadRegister < IsLanguageEmpty, bool, grammar::CNF < > > ( IsLanguageEmpty::isLanguageEmpty ); +auto IsLanguageEmptyLG = registration::OverloadRegister < IsLanguageEmpty, bool, grammar::LG < > > ( IsLanguageEmpty::isLanguageEmpty ); +auto IsLanguageEmptyLeftLG = registration::OverloadRegister < IsLanguageEmpty, bool, grammar::LeftLG < > > ( IsLanguageEmpty::isLanguageEmpty ); +auto IsLanguageEmptyLeftRG = registration::OverloadRegister < IsLanguageEmpty, bool, grammar::LeftRG < > > ( IsLanguageEmpty::isLanguageEmpty ); +auto IsLanguageEmptyRightLG = registration::OverloadRegister < IsLanguageEmpty, bool, grammar::RightLG < > > ( IsLanguageEmpty::isLanguageEmpty ); +auto IsLanguageEmptyRightRG = registration::OverloadRegister < IsLanguageEmpty, bool, grammar::RightRG < > > ( IsLanguageEmpty::isLanguageEmpty ); } /* namespace properties */ diff --git a/alib2algo/src/grammar/properties/IsLanguageGeneratingEpsilon.cpp b/alib2algo/src/grammar/properties/IsLanguageGeneratingEpsilon.cpp index d8666e129f..7c126e800c 100644 --- a/alib2algo/src/grammar/properties/IsLanguageGeneratingEpsilon.cpp +++ b/alib2algo/src/grammar/properties/IsLanguageGeneratingEpsilon.cpp @@ -6,6 +6,7 @@ */ #include "IsLanguageGeneratingEpsilon.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { @@ -15,15 +16,15 @@ bool IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon(const grammar::Gra return dispatch(grammar.getData()); } -auto IsLanguageGeneratingEpsilonCFG = IsLanguageGeneratingEpsilon::RegistratorWrapper<bool, grammar::CFG < > >(IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon); -auto IsLanguageGeneratingEpsilonEpsilonFreeCFG = IsLanguageGeneratingEpsilon::RegistratorWrapper<bool, grammar::EpsilonFreeCFG < > >(IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon); -auto IsLanguageGeneratingEpsilonGNF = IsLanguageGeneratingEpsilon::RegistratorWrapper<bool, grammar::GNF < > >(IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon); -auto IsLanguageGeneratingEpsilonCNF = IsLanguageGeneratingEpsilon::RegistratorWrapper<bool, grammar::CNF < > >(IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon); -auto IsLanguageGeneratingEpsilonLG = IsLanguageGeneratingEpsilon::RegistratorWrapper<bool, grammar::LG < > >(IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon); -auto IsLanguageGeneratingEpsilonLeftLG = IsLanguageGeneratingEpsilon::RegistratorWrapper<bool, grammar::LeftLG < > >(IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon); -auto IsLanguageGeneratingEpsilonLeftRG = IsLanguageGeneratingEpsilon::RegistratorWrapper<bool, grammar::LeftRG < > >(IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon); -auto IsLanguageGeneratingEpsilonRightLG = IsLanguageGeneratingEpsilon::RegistratorWrapper<bool, grammar::RightLG < > >(IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon); -auto IsLanguageGeneratingEpsilonRightRG = IsLanguageGeneratingEpsilon::RegistratorWrapper<bool, grammar::RightRG < > >(IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon); +auto IsLanguageGeneratingEpsilonCFG = registration::OverloadRegister < IsLanguageGeneratingEpsilon, bool, grammar::CFG < > > ( IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon ); +auto IsLanguageGeneratingEpsilonEpsilonFreeCFG = registration::OverloadRegister < IsLanguageGeneratingEpsilon, bool, grammar::EpsilonFreeCFG < > > ( IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon ); +auto IsLanguageGeneratingEpsilonGNF = registration::OverloadRegister < IsLanguageGeneratingEpsilon, bool, grammar::GNF < > > ( IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon ); +auto IsLanguageGeneratingEpsilonCNF = registration::OverloadRegister < IsLanguageGeneratingEpsilon, bool, grammar::CNF < > > ( IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon ); +auto IsLanguageGeneratingEpsilonLG = registration::OverloadRegister < IsLanguageGeneratingEpsilon, bool, grammar::LG < > > ( IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon ); +auto IsLanguageGeneratingEpsilonLeftLG = registration::OverloadRegister < IsLanguageGeneratingEpsilon, bool, grammar::LeftLG < > > ( IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon ); +auto IsLanguageGeneratingEpsilonLeftRG = registration::OverloadRegister < IsLanguageGeneratingEpsilon, bool, grammar::LeftRG < > > ( IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon ); +auto IsLanguageGeneratingEpsilonRightLG = registration::OverloadRegister < IsLanguageGeneratingEpsilon, bool, grammar::RightLG < > > ( IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon ); +auto IsLanguageGeneratingEpsilonRightRG = registration::OverloadRegister < IsLanguageGeneratingEpsilon, bool, grammar::RightRG < > > ( IsLanguageGeneratingEpsilon::isLanguageGeneratingEpsilon ); } /* namespace properties */ diff --git a/alib2algo/src/grammar/properties/NonterminalUnitRuleCycle.cpp b/alib2algo/src/grammar/properties/NonterminalUnitRuleCycle.cpp index ae446e2504..b9e0b06ae8 100644 --- a/alib2algo/src/grammar/properties/NonterminalUnitRuleCycle.cpp +++ b/alib2algo/src/grammar/properties/NonterminalUnitRuleCycle.cpp @@ -6,20 +6,21 @@ */ #include "NonterminalUnitRuleCycle.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { namespace properties { -auto NonterminalUnitRuleCycleCFG = NonterminalUnitRuleCycle::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::CFG < > >(NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle); -auto NonterminalUnitRuleCycleEpsilonFreeCFG = NonterminalUnitRuleCycle::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::EpsilonFreeCFG < > >(NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle); -auto NonterminalUnitRuleCycleGNF = NonterminalUnitRuleCycle::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::GNF < > >(NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle); -auto NonterminalUnitRuleCycleCNF = NonterminalUnitRuleCycle::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::CNF < > >(NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle); -auto NonterminalUnitRuleCycleLG = NonterminalUnitRuleCycle::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::LG < > >(NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle); -auto NonterminalUnitRuleCycleLeftLG = NonterminalUnitRuleCycle::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::LeftLG < > >(NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle); -auto NonterminalUnitRuleCycleLeftRG = NonterminalUnitRuleCycle::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::LeftRG < > >(NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle); -auto NonterminalUnitRuleCycleRightLG = NonterminalUnitRuleCycle::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::RightLG < > >(NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle); -auto NonterminalUnitRuleCycleRightRG = NonterminalUnitRuleCycle::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::RightRG < > >(NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle); +auto NonterminalUnitRuleCycleCFG = registration::OverloadRegister < NonterminalUnitRuleCycle, std::set < DefaultSymbolType >, grammar::CFG < > > ( NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle ); +auto NonterminalUnitRuleCycleEpsilonFreeCFG = registration::OverloadRegister < NonterminalUnitRuleCycle, std::set < DefaultSymbolType >, grammar::EpsilonFreeCFG < > > ( NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle ); +auto NonterminalUnitRuleCycleGNF = registration::OverloadRegister < NonterminalUnitRuleCycle, std::set < DefaultSymbolType >, grammar::GNF < > > ( NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle ); +auto NonterminalUnitRuleCycleCNF = registration::OverloadRegister < NonterminalUnitRuleCycle, std::set < DefaultSymbolType >, grammar::CNF < > > ( NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle ); +auto NonterminalUnitRuleCycleLG = registration::OverloadRegister < NonterminalUnitRuleCycle, std::set < DefaultSymbolType >, grammar::LG < > > ( NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle ); +auto NonterminalUnitRuleCycleLeftLG = registration::OverloadRegister < NonterminalUnitRuleCycle, std::set < DefaultSymbolType >, grammar::LeftLG < > > ( NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle ); +auto NonterminalUnitRuleCycleLeftRG = registration::OverloadRegister < NonterminalUnitRuleCycle, std::set < DefaultSymbolType >, grammar::LeftRG < > > ( NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle ); +auto NonterminalUnitRuleCycleRightLG = registration::OverloadRegister < NonterminalUnitRuleCycle, std::set < DefaultSymbolType >, grammar::RightLG < > > ( NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle ); +auto NonterminalUnitRuleCycleRightRG = registration::OverloadRegister < NonterminalUnitRuleCycle, std::set < DefaultSymbolType >, grammar::RightRG < > > ( NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle ); std::set<DefaultSymbolType> NonterminalUnitRuleCycle::getNonterminalUnitRuleCycle(const grammar::Grammar& grammar, const DefaultSymbolType& nonterminal) { return dispatch(grammar.getData(), nonterminal); diff --git a/alib2algo/src/grammar/properties/NullableNonterminals.cpp b/alib2algo/src/grammar/properties/NullableNonterminals.cpp index 3351dc152c..30eb6a5c78 100644 --- a/alib2algo/src/grammar/properties/NullableNonterminals.cpp +++ b/alib2algo/src/grammar/properties/NullableNonterminals.cpp @@ -6,20 +6,21 @@ */ #include "NullableNonterminals.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { namespace properties { -auto NullableNonterminalsCFG = NullableNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::CFG < > >(NullableNonterminals::getNullableNonterminals); -auto NullableNonterminalsEpsilonFreeCFG = NullableNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::EpsilonFreeCFG < > >(NullableNonterminals::getNullableNonterminals); -auto NullableNonterminalsGNF = NullableNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::GNF < > >(NullableNonterminals::getNullableNonterminals); -auto NullableNonterminalsCNF = NullableNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::CNF < > >(NullableNonterminals::getNullableNonterminals); -auto NullableNonterminalsLG = NullableNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::LG < > >(NullableNonterminals::getNullableNonterminals); -auto NullableNonterminalsLeftLG = NullableNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::LeftLG < > >(NullableNonterminals::getNullableNonterminals); -auto NullableNonterminalsLeftRG = NullableNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::LeftRG < > >(NullableNonterminals::getNullableNonterminals); -auto NullableNonterminalsRightLG = NullableNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::RightLG < > >(NullableNonterminals::getNullableNonterminals); -auto NullableNonterminalsRightRG = NullableNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::RightRG < > >(NullableNonterminals::getNullableNonterminals); +auto NullableNonterminalsCFG = registration::OverloadRegister < NullableNonterminals, std::set < DefaultSymbolType >, grammar::CFG < > > ( NullableNonterminals::getNullableNonterminals ); +auto NullableNonterminalsEpsilonFreeCFG = registration::OverloadRegister < NullableNonterminals, std::set < DefaultSymbolType >, grammar::EpsilonFreeCFG < > > ( NullableNonterminals::getNullableNonterminals ); +auto NullableNonterminalsGNF = registration::OverloadRegister < NullableNonterminals, std::set < DefaultSymbolType >, grammar::GNF < > > ( NullableNonterminals::getNullableNonterminals ); +auto NullableNonterminalsCNF = registration::OverloadRegister < NullableNonterminals, std::set < DefaultSymbolType >, grammar::CNF < > > ( NullableNonterminals::getNullableNonterminals ); +auto NullableNonterminalsLG = registration::OverloadRegister < NullableNonterminals, std::set < DefaultSymbolType >, grammar::LG < > > ( NullableNonterminals::getNullableNonterminals ); +auto NullableNonterminalsLeftLG = registration::OverloadRegister < NullableNonterminals, std::set < DefaultSymbolType >, grammar::LeftLG < > > ( NullableNonterminals::getNullableNonterminals ); +auto NullableNonterminalsLeftRG = registration::OverloadRegister < NullableNonterminals, std::set < DefaultSymbolType >, grammar::LeftRG < > > ( NullableNonterminals::getNullableNonterminals ); +auto NullableNonterminalsRightLG = registration::OverloadRegister < NullableNonterminals, std::set < DefaultSymbolType >, grammar::RightLG < > > ( NullableNonterminals::getNullableNonterminals ); +auto NullableNonterminalsRightRG = registration::OverloadRegister < NullableNonterminals, std::set < DefaultSymbolType >, grammar::RightRG < > > ( NullableNonterminals::getNullableNonterminals ); std::set<DefaultSymbolType> NullableNonterminals::getNullableNonterminals(const grammar::Grammar& grammar ) { return dispatch(grammar.getData()); diff --git a/alib2algo/src/grammar/properties/ProductiveNonterminals.cpp b/alib2algo/src/grammar/properties/ProductiveNonterminals.cpp index 9a4662866e..595e3f3af0 100644 --- a/alib2algo/src/grammar/properties/ProductiveNonterminals.cpp +++ b/alib2algo/src/grammar/properties/ProductiveNonterminals.cpp @@ -6,20 +6,21 @@ */ #include "ProductiveNonterminals.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { namespace properties { -auto ProductiveNonterminalsCFG = ProductiveNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::CFG < > >(ProductiveNonterminals::getProductiveNonterminals); -auto ProductiveNonterminalsEpsilonFreeCFG = ProductiveNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::EpsilonFreeCFG < > >(ProductiveNonterminals::getProductiveNonterminals); -auto ProductiveNonterminalsGNF = ProductiveNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::GNF < > >(ProductiveNonterminals::getProductiveNonterminals); -auto ProductiveNonterminalsCNF = ProductiveNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::CNF < > >(ProductiveNonterminals::getProductiveNonterminals); -auto ProductiveNonterminalsLG = ProductiveNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::LG < > >(ProductiveNonterminals::getProductiveNonterminals); -auto ProductiveNonterminalsLeftLG = ProductiveNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::LeftLG < > >(ProductiveNonterminals::getProductiveNonterminals); -auto ProductiveNonterminalsLeftRG = ProductiveNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::LeftRG < > >(ProductiveNonterminals::getProductiveNonterminals); -auto ProductiveNonterminalsRightLG = ProductiveNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::RightLG < > >(ProductiveNonterminals::getProductiveNonterminals); -auto ProductiveNonterminalsRightRG = ProductiveNonterminals::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::RightRG < > >(ProductiveNonterminals::getProductiveNonterminals); +auto ProductiveNonterminalsCFG = registration::OverloadRegister < ProductiveNonterminals, std::set < DefaultSymbolType >, grammar::CFG < > > ( ProductiveNonterminals::getProductiveNonterminals ); +auto ProductiveNonterminalsEpsilonFreeCFG = registration::OverloadRegister < ProductiveNonterminals, std::set < DefaultSymbolType >, grammar::EpsilonFreeCFG < > > ( ProductiveNonterminals::getProductiveNonterminals ); +auto ProductiveNonterminalsGNF = registration::OverloadRegister < ProductiveNonterminals, std::set < DefaultSymbolType >, grammar::GNF < > > ( ProductiveNonterminals::getProductiveNonterminals ); +auto ProductiveNonterminalsCNF = registration::OverloadRegister < ProductiveNonterminals, std::set < DefaultSymbolType >, grammar::CNF < > > ( ProductiveNonterminals::getProductiveNonterminals ); +auto ProductiveNonterminalsLG = registration::OverloadRegister < ProductiveNonterminals, std::set < DefaultSymbolType >, grammar::LG < > > ( ProductiveNonterminals::getProductiveNonterminals ); +auto ProductiveNonterminalsLeftLG = registration::OverloadRegister < ProductiveNonterminals, std::set < DefaultSymbolType >, grammar::LeftLG < > > ( ProductiveNonterminals::getProductiveNonterminals ); +auto ProductiveNonterminalsLeftRG = registration::OverloadRegister < ProductiveNonterminals, std::set < DefaultSymbolType >, grammar::LeftRG < > > ( ProductiveNonterminals::getProductiveNonterminals ); +auto ProductiveNonterminalsRightLG = registration::OverloadRegister < ProductiveNonterminals, std::set < DefaultSymbolType >, grammar::RightLG < > > ( ProductiveNonterminals::getProductiveNonterminals ); +auto ProductiveNonterminalsRightRG = registration::OverloadRegister < ProductiveNonterminals, std::set < DefaultSymbolType >, grammar::RightRG < > > ( ProductiveNonterminals::getProductiveNonterminals ); std::set<DefaultSymbolType> ProductiveNonterminals::getProductiveNonterminals(const grammar::Grammar& grammar ) { return dispatch(grammar.getData()); diff --git a/alib2algo/src/grammar/properties/RecursiveNonterminal.cpp b/alib2algo/src/grammar/properties/RecursiveNonterminal.cpp index 3830ae0018..afc32c0001 100644 --- a/alib2algo/src/grammar/properties/RecursiveNonterminal.cpp +++ b/alib2algo/src/grammar/properties/RecursiveNonterminal.cpp @@ -6,20 +6,21 @@ */ #include "RecursiveNonterminal.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { namespace properties { -auto RecursiveNonterminalCFG = RecursiveNonterminal::RegistratorWrapper < bool, grammar::CFG < > > ( RecursiveNonterminal::isNonterminalRecursive ); -auto RecursiveNonterminalEpsilonFreeCFG = RecursiveNonterminal::RegistratorWrapper < bool, grammar::EpsilonFreeCFG < > > ( RecursiveNonterminal::isNonterminalRecursive ); -auto RecursiveNonterminalGNF = RecursiveNonterminal::RegistratorWrapper < bool, grammar::GNF < > > ( RecursiveNonterminal::isNonterminalRecursive ); -auto RecursiveNonterminalCNF = RecursiveNonterminal::RegistratorWrapper < bool, grammar::CNF < > > ( RecursiveNonterminal::isNonterminalRecursive ); -auto RecursiveNonterminalLG = RecursiveNonterminal::RegistratorWrapper < bool, grammar::LG < > > ( RecursiveNonterminal::isNonterminalRecursive ); -auto RecursiveNonterminalLeftLG = RecursiveNonterminal::RegistratorWrapper < bool, grammar::LeftLG < > > ( RecursiveNonterminal::isNonterminalRecursive ); -auto RecursiveNonterminalLeftRG = RecursiveNonterminal::RegistratorWrapper < bool, grammar::LeftRG < > > ( RecursiveNonterminal::isNonterminalRecursive ); -auto RecursiveNonterminalRightLG = RecursiveNonterminal::RegistratorWrapper < bool, grammar::RightLG < > > ( RecursiveNonterminal::isNonterminalRecursive ); -auto RecursiveNonterminalRightRG = RecursiveNonterminal::RegistratorWrapper < bool, grammar::RightRG < > > ( RecursiveNonterminal::isNonterminalRecursive ); +auto RecursiveNonterminalCFG = registration::OverloadRegister < RecursiveNonterminal, bool, grammar::CFG < > > ( RecursiveNonterminal::isNonterminalRecursive ); +auto RecursiveNonterminalEpsilonFreeCFG = registration::OverloadRegister < RecursiveNonterminal, bool, grammar::EpsilonFreeCFG < > > ( RecursiveNonterminal::isNonterminalRecursive ); +auto RecursiveNonterminalGNF = registration::OverloadRegister < RecursiveNonterminal, bool, grammar::GNF < > > ( RecursiveNonterminal::isNonterminalRecursive ); +auto RecursiveNonterminalCNF = registration::OverloadRegister < RecursiveNonterminal, bool, grammar::CNF < > > ( RecursiveNonterminal::isNonterminalRecursive ); +auto RecursiveNonterminalLG = registration::OverloadRegister < RecursiveNonterminal, bool, grammar::LG < > > ( RecursiveNonterminal::isNonterminalRecursive ); +auto RecursiveNonterminalLeftLG = registration::OverloadRegister < RecursiveNonterminal, bool, grammar::LeftLG < > > ( RecursiveNonterminal::isNonterminalRecursive ); +auto RecursiveNonterminalLeftRG = registration::OverloadRegister < RecursiveNonterminal, bool, grammar::LeftRG < > > ( RecursiveNonterminal::isNonterminalRecursive ); +auto RecursiveNonterminalRightLG = registration::OverloadRegister < RecursiveNonterminal, bool, grammar::RightLG < > > ( RecursiveNonterminal::isNonterminalRecursive ); +auto RecursiveNonterminalRightRG = registration::OverloadRegister < RecursiveNonterminal, bool, grammar::RightRG < > > ( RecursiveNonterminal::isNonterminalRecursive ); bool RecursiveNonterminal::isNonterminalRecursive ( const grammar::Grammar & grammar, const DefaultSymbolType & nonterminal ) { return dispatch ( grammar.getData ( ), nonterminal ); diff --git a/alib2algo/src/grammar/properties/UnreachableSymbols.cpp b/alib2algo/src/grammar/properties/UnreachableSymbols.cpp index 51b47d3f4a..28e44eed4b 100644 --- a/alib2algo/src/grammar/properties/UnreachableSymbols.cpp +++ b/alib2algo/src/grammar/properties/UnreachableSymbols.cpp @@ -6,20 +6,21 @@ */ #include "UnreachableSymbols.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { namespace properties { -auto UnreachableSymbolsCFG = UnreachableSymbols::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::CFG < > >(UnreachableSymbols::getUnreachableSymbols); -auto UnreachableSymbolsEpsilonFreeCFG = UnreachableSymbols::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::EpsilonFreeCFG < > >(UnreachableSymbols::getUnreachableSymbols); -auto UnreachableSymbolsGNF = UnreachableSymbols::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::GNF < > >(UnreachableSymbols::getUnreachableSymbols); -auto UnreachableSymbolsCNF = UnreachableSymbols::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::CNF < > >(UnreachableSymbols::getUnreachableSymbols); -auto UnreachableSymbolsLG = UnreachableSymbols::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::LG < > >(UnreachableSymbols::getUnreachableSymbols); -auto UnreachableSymbolsLeftLG = UnreachableSymbols::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::LeftLG < > >(UnreachableSymbols::getUnreachableSymbols); -auto UnreachableSymbolsLeftRG = UnreachableSymbols::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::LeftRG < > >(UnreachableSymbols::getUnreachableSymbols); -auto UnreachableSymbolsRightLG = UnreachableSymbols::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::RightLG < > >(UnreachableSymbols::getUnreachableSymbols); -auto UnreachableSymbolsRightRG = UnreachableSymbols::RegistratorWrapper<std::set<DefaultSymbolType>, grammar::RightRG < > >(UnreachableSymbols::getUnreachableSymbols); +auto UnreachableSymbolsCFG = registration::OverloadRegister < UnreachableSymbols, std::set < DefaultSymbolType >, grammar::CFG < > > ( UnreachableSymbols::getUnreachableSymbols ); +auto UnreachableSymbolsEpsilonFreeCFG = registration::OverloadRegister < UnreachableSymbols, std::set < DefaultSymbolType >, grammar::EpsilonFreeCFG < > > ( UnreachableSymbols::getUnreachableSymbols ); +auto UnreachableSymbolsGNF = registration::OverloadRegister < UnreachableSymbols, std::set < DefaultSymbolType >, grammar::GNF < > > ( UnreachableSymbols::getUnreachableSymbols ); +auto UnreachableSymbolsCNF = registration::OverloadRegister < UnreachableSymbols, std::set < DefaultSymbolType >, grammar::CNF < > > ( UnreachableSymbols::getUnreachableSymbols ); +auto UnreachableSymbolsLG = registration::OverloadRegister < UnreachableSymbols, std::set < DefaultSymbolType >, grammar::LG < > > ( UnreachableSymbols::getUnreachableSymbols ); +auto UnreachableSymbolsLeftLG = registration::OverloadRegister < UnreachableSymbols, std::set < DefaultSymbolType >, grammar::LeftLG < > > ( UnreachableSymbols::getUnreachableSymbols ); +auto UnreachableSymbolsLeftRG = registration::OverloadRegister < UnreachableSymbols, std::set < DefaultSymbolType >, grammar::LeftRG < > > ( UnreachableSymbols::getUnreachableSymbols ); +auto UnreachableSymbolsRightLG = registration::OverloadRegister < UnreachableSymbols, std::set < DefaultSymbolType >, grammar::RightLG < > > ( UnreachableSymbols::getUnreachableSymbols ); +auto UnreachableSymbolsRightRG = registration::OverloadRegister < UnreachableSymbols, std::set < DefaultSymbolType >, grammar::RightRG < > > ( UnreachableSymbols::getUnreachableSymbols ); std::set < DefaultSymbolType > UnreachableSymbols::getUnreachableSymbols ( const grammar::Grammar & grammar ) { return dispatch ( grammar.getData ( ) ); diff --git a/alib2algo/src/grammar/simplify/EpsilonRemover.cpp b/alib2algo/src/grammar/simplify/EpsilonRemover.cpp index 76abf3b1ba..5c9fa06efa 100644 --- a/alib2algo/src/grammar/simplify/EpsilonRemover.cpp +++ b/alib2algo/src/grammar/simplify/EpsilonRemover.cpp @@ -6,20 +6,21 @@ */ #include "EpsilonRemover.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { namespace simplify { -auto EpsilonRemoverCFG = EpsilonRemover::RegistratorWrapper<grammar::EpsilonFreeCFG < >, grammar::CFG < > >(EpsilonRemover::remove); -auto EpsilonRemoverEpsilonFreeCFG = EpsilonRemover::RegistratorWrapper<grammar::EpsilonFreeCFG < >, grammar::EpsilonFreeCFG < > >(EpsilonRemover::remove); -auto EpsilonRemoverCNF = EpsilonRemover::RegistratorWrapper<grammar::CNF < >, grammar::CNF < > >(EpsilonRemover::remove); -auto EpsilonRemoverGNF = EpsilonRemover::RegistratorWrapper<grammar::GNF < >, grammar::GNF < > >(EpsilonRemover::remove); -auto EpsilonRemoverLG = EpsilonRemover::RegistratorWrapper<grammar::EpsilonFreeCFG < >, grammar::LG < > >(EpsilonRemover::remove); -auto EpsilonRemoverLeftLG = EpsilonRemover::RegistratorWrapper<grammar::EpsilonFreeCFG < >, grammar::LeftLG < > >(EpsilonRemover::remove); -auto EpsilonRemoverLeftRG = EpsilonRemover::RegistratorWrapper<grammar::LeftRG < >, grammar::LeftRG < > >(EpsilonRemover::remove); -auto EpsilonRemoverRightLG = EpsilonRemover::RegistratorWrapper<grammar::EpsilonFreeCFG < >, grammar::RightLG < > >(EpsilonRemover::remove); -auto EpsilonRemoverRightRG = EpsilonRemover::RegistratorWrapper<grammar::RightRG < >, grammar::RightRG < > >(EpsilonRemover::remove); +auto EpsilonRemoverCFG = registration::OverloadRegister < EpsilonRemover, grammar::EpsilonFreeCFG < >, grammar::CFG < > > ( EpsilonRemover::remove ); +auto EpsilonRemoverEpsilonFreeCFG = registration::OverloadRegister < EpsilonRemover, grammar::EpsilonFreeCFG < >, grammar::EpsilonFreeCFG < > > ( EpsilonRemover::remove ); +auto EpsilonRemoverCNF = registration::OverloadRegister < EpsilonRemover, grammar::CNF < >, grammar::CNF < > > ( EpsilonRemover::remove ); +auto EpsilonRemoverGNF = registration::OverloadRegister < EpsilonRemover, grammar::GNF < >, grammar::GNF < > > ( EpsilonRemover::remove ); +auto EpsilonRemoverLG = registration::OverloadRegister < EpsilonRemover, grammar::EpsilonFreeCFG < >, grammar::LG < > > ( EpsilonRemover::remove ); +auto EpsilonRemoverLeftLG = registration::OverloadRegister < EpsilonRemover, grammar::EpsilonFreeCFG < >, grammar::LeftLG < > > ( EpsilonRemover::remove ); +auto EpsilonRemoverLeftRG = registration::OverloadRegister < EpsilonRemover, grammar::LeftRG < >, grammar::LeftRG < > > ( EpsilonRemover::remove ); +auto EpsilonRemoverRightLG = registration::OverloadRegister < EpsilonRemover, grammar::EpsilonFreeCFG < >, grammar::RightLG < > > ( EpsilonRemover::remove ); +auto EpsilonRemoverRightRG = registration::OverloadRegister < EpsilonRemover, grammar::RightRG < >, grammar::RightRG < > > ( EpsilonRemover::remove ); grammar::Grammar EpsilonRemover::remove(const grammar::Grammar& grammar) { return dispatch(grammar.getData()); diff --git a/alib2algo/src/grammar/simplify/LeftRecursionRemover.cpp b/alib2algo/src/grammar/simplify/LeftRecursionRemover.cpp index 5758a2a683..13f9b113ae 100644 --- a/alib2algo/src/grammar/simplify/LeftRecursionRemover.cpp +++ b/alib2algo/src/grammar/simplify/LeftRecursionRemover.cpp @@ -6,18 +6,19 @@ */ #include "LeftRecursionRemover.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { namespace simplify { -auto LeftRecursionRemoverEpsilonFreeCFG = LeftRecursionRemover::RegistratorWrapper<grammar::EpsilonFreeCFG < >, grammar::EpsilonFreeCFG < > >(LeftRecursionRemover::remove); -auto LeftRecursionRemoverCNF = LeftRecursionRemover::RegistratorWrapper<grammar::EpsilonFreeCFG < >, grammar::CNF < > >(LeftRecursionRemover::remove); -auto LeftRecursionRemoverGNF = LeftRecursionRemover::RegistratorWrapper<grammar::GNF < >, grammar::GNF < > >(LeftRecursionRemover::remove); -auto LeftRecursionRemoverRightRG = LeftRecursionRemover::RegistratorWrapper<grammar::RightRG < >, grammar::RightRG < > >(LeftRecursionRemover::remove); -auto LeftRecursionRemoverRightLG = LeftRecursionRemover::RegistratorWrapper<grammar::RightLG < >, grammar::RightLG < > >(LeftRecursionRemover::remove); -auto LeftRecursionRemoverLeftRG = LeftRecursionRemover::RegistratorWrapper<grammar::RightRG < >, grammar::LeftRG < > >(LeftRecursionRemover::remove); -auto LeftRecursionRemoverLeftLG = LeftRecursionRemover::RegistratorWrapper<grammar::RightLG < >, grammar::LeftLG < > >(LeftRecursionRemover::remove); +auto LeftRecursionRemoverEpsilonFreeCFG = registration::OverloadRegister < LeftRecursionRemover, grammar::EpsilonFreeCFG < >, grammar::EpsilonFreeCFG < > > ( LeftRecursionRemover::remove ); +auto LeftRecursionRemoverCNF = registration::OverloadRegister < LeftRecursionRemover, grammar::EpsilonFreeCFG < >, grammar::CNF < > > ( LeftRecursionRemover::remove ); +auto LeftRecursionRemoverGNF = registration::OverloadRegister < LeftRecursionRemover, grammar::GNF < >, grammar::GNF < > > ( LeftRecursionRemover::remove ); +auto LeftRecursionRemoverRightRG = registration::OverloadRegister < LeftRecursionRemover, grammar::RightRG < >, grammar::RightRG < > > ( LeftRecursionRemover::remove ); +auto LeftRecursionRemoverRightLG = registration::OverloadRegister < LeftRecursionRemover, grammar::RightLG < >, grammar::RightLG < > > ( LeftRecursionRemover::remove ); +auto LeftRecursionRemoverLeftRG = registration::OverloadRegister < LeftRecursionRemover, grammar::RightRG < >, grammar::LeftRG < > > ( LeftRecursionRemover::remove ); +auto LeftRecursionRemoverLeftLG = registration::OverloadRegister < LeftRecursionRemover, grammar::RightLG < >, grammar::LeftLG < > > ( LeftRecursionRemover::remove ); grammar::Grammar LeftRecursionRemover::remove(const grammar::Grammar& grammar) { return dispatch(grammar.getData()); diff --git a/alib2algo/src/grammar/simplify/Rename.cpp b/alib2algo/src/grammar/simplify/Rename.cpp index 2978978cef..cb85195a1f 100644 --- a/alib2algo/src/grammar/simplify/Rename.cpp +++ b/alib2algo/src/grammar/simplify/Rename.cpp @@ -16,6 +16,7 @@ #include <vector> #include <hexavigesimal> +#include <registration/AlgoRegistration.hpp> namespace grammar { @@ -61,7 +62,7 @@ grammar::RightRG < > Rename::rename ( const grammar::RightRG < > & rrg ) { return result; } -auto RenameRightRG = Rename::RegistratorWrapper < grammar::RightRG < >, grammar::RightRG < > > ( Rename::rename ); +auto RenameRightRG = registration::OverloadRegister < Rename, grammar::RightRG < >, grammar::RightRG < > > ( Rename::rename ); grammar::LeftRG < > Rename::rename ( const grammar::LeftRG < > & rrg ) { int counter = 0; @@ -99,7 +100,7 @@ grammar::LeftRG < > Rename::rename ( const grammar::LeftRG < > & rrg ) { return result; } -auto RenameLeftRG = Rename::RegistratorWrapper < grammar::LeftRG < >, grammar::LeftRG < > > ( Rename::rename ); +auto RenameLeftRG = registration::OverloadRegister < Rename, grammar::LeftRG < >, grammar::LeftRG < > > ( Rename::rename ); } /* namespace simplify */ diff --git a/alib2algo/src/grammar/simplify/SimpleRulesRemover.cpp b/alib2algo/src/grammar/simplify/SimpleRulesRemover.cpp index dad3a970c9..575ad4aafd 100644 --- a/alib2algo/src/grammar/simplify/SimpleRulesRemover.cpp +++ b/alib2algo/src/grammar/simplify/SimpleRulesRemover.cpp @@ -6,6 +6,7 @@ */ #include "SimpleRulesRemover.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { @@ -15,15 +16,15 @@ grammar::Grammar SimpleRulesRemover::remove ( const grammar::Grammar & grammar ) return dispatch ( grammar.getData ( ) ); } -auto SimpleRulesRemoverCFG = SimpleRulesRemover::RegistratorWrapper<grammar::CFG < >, grammar::CFG < > >(SimpleRulesRemover::remove); -auto SimpleRulesRemoverEpsilonFreeCFG = SimpleRulesRemover::RegistratorWrapper<grammar::EpsilonFreeCFG < >, grammar::EpsilonFreeCFG < > >(SimpleRulesRemover::remove); -auto SimpleRulesRemoverCNF = SimpleRulesRemover::RegistratorWrapper<grammar::CNF < >, grammar::CNF < > >(SimpleRulesRemover::remove); -auto SimpleRulesRemoverGNF = SimpleRulesRemover::RegistratorWrapper<grammar::GNF < >, grammar::GNF < > >(SimpleRulesRemover::remove); -auto SimpleRulesRemoverLG = SimpleRulesRemover::RegistratorWrapper<grammar::LG < >, grammar::LG < > >(SimpleRulesRemover::remove); -auto SimpleRulesRemoverLeftLG = SimpleRulesRemover::RegistratorWrapper<grammar::LeftLG < >, grammar::LeftLG < > >(SimpleRulesRemover::remove); -auto SimpleRulesRemoverLeftRG = SimpleRulesRemover::RegistratorWrapper<grammar::LeftRG < >, grammar::LeftRG < > >(SimpleRulesRemover::remove); -auto SimpleRulesRemoverRightLG = SimpleRulesRemover::RegistratorWrapper<grammar::RightLG < >, grammar::RightLG < > >(SimpleRulesRemover::remove); -auto SimpleRulesRemoverRightRG = SimpleRulesRemover::RegistratorWrapper<grammar::RightRG < >, grammar::RightRG < > >(SimpleRulesRemover::remove); +auto SimpleRulesRemoverCFG = registration::OverloadRegister < SimpleRulesRemover, grammar::CFG < >, grammar::CFG < > > ( SimpleRulesRemover::remove ); +auto SimpleRulesRemoverEpsilonFreeCFG = registration::OverloadRegister < SimpleRulesRemover, grammar::EpsilonFreeCFG < >, grammar::EpsilonFreeCFG < > > ( SimpleRulesRemover::remove ); +auto SimpleRulesRemoverCNF = registration::OverloadRegister < SimpleRulesRemover, grammar::CNF < >, grammar::CNF < > > ( SimpleRulesRemover::remove ); +auto SimpleRulesRemoverGNF = registration::OverloadRegister < SimpleRulesRemover, grammar::GNF < >, grammar::GNF < > > ( SimpleRulesRemover::remove ); +auto SimpleRulesRemoverLG = registration::OverloadRegister < SimpleRulesRemover, grammar::LG < >, grammar::LG < > > ( SimpleRulesRemover::remove ); +auto SimpleRulesRemoverLeftLG = registration::OverloadRegister < SimpleRulesRemover, grammar::LeftLG < >, grammar::LeftLG < > > ( SimpleRulesRemover::remove ); +auto SimpleRulesRemoverLeftRG = registration::OverloadRegister < SimpleRulesRemover, grammar::LeftRG < >, grammar::LeftRG < > > ( SimpleRulesRemover::remove ); +auto SimpleRulesRemoverRightLG = registration::OverloadRegister < SimpleRulesRemover, grammar::RightLG < >, grammar::RightLG < > > ( SimpleRulesRemover::remove ); +auto SimpleRulesRemoverRightRG = registration::OverloadRegister < SimpleRulesRemover, grammar::RightRG < >, grammar::RightRG < > > ( SimpleRulesRemover::remove ); } /* namespace simplify */ diff --git a/alib2algo/src/grammar/simplify/ToCNF.cpp b/alib2algo/src/grammar/simplify/ToCNF.cpp index 5f527b0e51..de70a44cc9 100644 --- a/alib2algo/src/grammar/simplify/ToCNF.cpp +++ b/alib2algo/src/grammar/simplify/ToCNF.cpp @@ -12,6 +12,7 @@ #include <common/DefaultSymbolsPairType.h> #include <exception/CommonException.h> #include <common/createUnique.hpp> +#include <registration/AlgoRegistration.hpp> namespace grammar { @@ -121,55 +122,55 @@ grammar::CNF < > ToCNF::convert(const grammar::CFG < > & origGrammar) { return convertInternal(grammar::simplify::SimpleRulesRemover::remove(grammar::simplify::EpsilonRemover::remove(origGrammar))); } -auto ToCNFCFG = ToCNF::RegistratorWrapper<grammar::CNF < >, grammar::CFG < > >(ToCNF::convert); +auto ToCNFCFG = registration::OverloadRegister < ToCNF, grammar::CNF < >, grammar::CFG < > > ( ToCNF::convert ); grammar::CNF < > ToCNF::convert(const grammar::EpsilonFreeCFG < > & origGrammar) { return convertInternal(grammar::simplify::SimpleRulesRemover::remove(origGrammar)); } -auto ToCNFEpsilonFreeCFG = ToCNF::RegistratorWrapper<grammar::CNF < >, grammar::EpsilonFreeCFG < > >(ToCNF::convert); +auto ToCNFEpsilonFreeCFG = registration::OverloadRegister < ToCNF, grammar::CNF < >, grammar::EpsilonFreeCFG < > > ( ToCNF::convert ); grammar::CNF < > ToCNF::convert(const grammar::CNF < > & origGrammar) { return origGrammar; } -auto ToCNFCNF = ToCNF::RegistratorWrapper<grammar::CNF < >, grammar::CNF < > >(ToCNF::convert); +auto ToCNFCNF = registration::OverloadRegister < ToCNF, grammar::CNF < >, grammar::CNF < > > ( ToCNF::convert ); grammar::CNF < > ToCNF::convert(const grammar::GNF < > & origGrammar) { return convertInternal(origGrammar); } -auto ToCNFGNF = ToCNF::RegistratorWrapper<grammar::CNF < >, grammar::GNF < > >(ToCNF::convert); +auto ToCNFGNF = registration::OverloadRegister < ToCNF, grammar::CNF < >, grammar::GNF < > > ( ToCNF::convert ); grammar::CNF < > ToCNF::convert(const grammar::LG < > & origGrammar) { return convertInternal(grammar::simplify::SimpleRulesRemover::remove(grammar::simplify::EpsilonRemover::remove(origGrammar))); } -auto ToCNFLG = ToCNF::RegistratorWrapper<grammar::CNF < >, grammar::LG < > >(ToCNF::convert); +auto ToCNFLG = registration::OverloadRegister < ToCNF, grammar::CNF < >, grammar::LG < > > ( ToCNF::convert ); grammar::CNF < > ToCNF::convert(const grammar::LeftLG< > & origGrammar) { return convertInternal(grammar::simplify::SimpleRulesRemover::remove(grammar::simplify::EpsilonRemover::remove(origGrammar))); } -auto ToCNFLeftLG = ToCNF::RegistratorWrapper<grammar::CNF < >, grammar::LeftLG < > >(ToCNF::convert); +auto ToCNFLeftLG = registration::OverloadRegister < ToCNF, grammar::CNF < >, grammar::LeftLG < > > ( ToCNF::convert ); grammar::CNF < > ToCNF::convert(const grammar::LeftRG < > & origGrammar) { return convertInternal(origGrammar); } -auto ToCNFLeftRG = ToCNF::RegistratorWrapper<grammar::CNF < >, grammar::LeftRG < > >(ToCNF::convert); +auto ToCNFLeftRG = registration::OverloadRegister < ToCNF, grammar::CNF < >, grammar::LeftRG < > > ( ToCNF::convert ); grammar::CNF < > ToCNF::convert(const grammar::RightLG < > & origGrammar) { return convertInternal(grammar::simplify::SimpleRulesRemover::remove(grammar::simplify::EpsilonRemover::remove(origGrammar))); } -auto ToCNFRightLG = ToCNF::RegistratorWrapper<grammar::CNF < >, grammar::RightLG < > >(ToCNF::convert); +auto ToCNFRightLG = registration::OverloadRegister < ToCNF, grammar::CNF < >, grammar::RightLG < > > ( ToCNF::convert ); grammar::CNF < > ToCNF::convert(const grammar::RightRG < > & origGrammar) { return convertInternal(origGrammar); } -auto ToCNFRightRG = ToCNF::RegistratorWrapper<grammar::CNF < >, grammar::RightRG < > >(ToCNF::convert); +auto ToCNFRightRG = registration::OverloadRegister < ToCNF, grammar::CNF < >, grammar::RightRG < > > ( ToCNF::convert ); grammar::Grammar ToCNF::convert(const grammar::Grammar& grammar) { return dispatch(grammar.getData()); diff --git a/alib2algo/src/grammar/simplify/ToGNF.cpp b/alib2algo/src/grammar/simplify/ToGNF.cpp index 504937b475..557bc9ca1a 100644 --- a/alib2algo/src/grammar/simplify/ToGNF.cpp +++ b/alib2algo/src/grammar/simplify/ToGNF.cpp @@ -6,20 +6,21 @@ */ #include "ToGNF.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { namespace simplify { -auto ToGNFCFG = ToGNF::RegistratorWrapper<grammar::GNF < >, grammar::CFG < > >(ToGNF::convert); -auto ToGNFEpsilonFreeCFG = ToGNF::RegistratorWrapper<grammar::GNF < >, grammar::EpsilonFreeCFG < > >(ToGNF::convert); -auto ToGNFCNF = ToGNF::RegistratorWrapper<grammar::GNF < >, grammar::CNF < > >(ToGNF::convert); -auto ToGNFGNF = ToGNF::RegistratorWrapper<grammar::GNF < >, grammar::GNF < > >(ToGNF::convert); -auto ToGNFLG = ToGNF::RegistratorWrapper<grammar::GNF < >, grammar::LG < > >(ToGNF::convert); -auto ToGNFLeftLG = ToGNF::RegistratorWrapper<grammar::GNF < >, grammar::LeftLG < > >(ToGNF::convert); -auto ToGNFLeftRG = ToGNF::RegistratorWrapper<grammar::RightRG < >, grammar::LeftRG < > >(ToGNF::convert); -auto ToGNFRightLG = ToGNF::RegistratorWrapper<grammar::GNF < >, grammar::RightLG < > >(ToGNF::convert); -auto ToGNFRightRG = ToGNF::RegistratorWrapper<grammar::RightRG < >, grammar::RightRG < > >(ToGNF::convert); +auto ToGNFCFG = registration::OverloadRegister < ToGNF, grammar::GNF < >, grammar::CFG < > > ( ToGNF::convert ); +auto ToGNFEpsilonFreeCFG = registration::OverloadRegister < ToGNF, grammar::GNF < >, grammar::EpsilonFreeCFG < > > ( ToGNF::convert ); +auto ToGNFCNF = registration::OverloadRegister < ToGNF, grammar::GNF < >, grammar::CNF < > > ( ToGNF::convert ); +auto ToGNFGNF = registration::OverloadRegister < ToGNF, grammar::GNF < >, grammar::GNF < > > ( ToGNF::convert ); +auto ToGNFLG = registration::OverloadRegister < ToGNF, grammar::GNF < >, grammar::LG < > > ( ToGNF::convert ); +auto ToGNFLeftLG = registration::OverloadRegister < ToGNF, grammar::GNF < >, grammar::LeftLG < > > ( ToGNF::convert ); +auto ToGNFLeftRG = registration::OverloadRegister < ToGNF, grammar::RightRG < >, grammar::LeftRG < > > ( ToGNF::convert ); +auto ToGNFRightLG = registration::OverloadRegister < ToGNF, grammar::GNF < >, grammar::RightLG < > > ( ToGNF::convert ); +auto ToGNFRightRG = registration::OverloadRegister < ToGNF, grammar::RightRG < >, grammar::RightRG < > > ( ToGNF::convert ); grammar::Grammar ToGNF::convert(const grammar::Grammar& grammar) { return dispatch(grammar.getData()); diff --git a/alib2algo/src/grammar/simplify/Trim.cpp b/alib2algo/src/grammar/simplify/Trim.cpp index 046d7fae06..580585fc28 100644 --- a/alib2algo/src/grammar/simplify/Trim.cpp +++ b/alib2algo/src/grammar/simplify/Trim.cpp @@ -6,20 +6,21 @@ */ #include "Trim.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { namespace simplify { -auto TrimCFG = Trim::RegistratorWrapper<grammar::CFG < >, grammar::CFG < > >(Trim::trim); -auto TrimEpsilonFreeCFG = Trim::RegistratorWrapper<grammar::EpsilonFreeCFG < >, grammar::EpsilonFreeCFG < > >(Trim::trim); -auto TrimGNF = Trim::RegistratorWrapper<grammar::GNF < >, grammar::GNF < > >(Trim::trim); -auto TrimCNF = Trim::RegistratorWrapper<grammar::CNF < >, grammar::CNF < > >(Trim::trim); -auto TrimLG = Trim::RegistratorWrapper<grammar::LG < >, grammar::LG < > >(Trim::trim); -auto TrimLeftLG = Trim::RegistratorWrapper<grammar::LeftLG < >, grammar::LeftLG < > >(Trim::trim); -auto TrimLeftRG = Trim::RegistratorWrapper<grammar::LeftRG < >, grammar::LeftRG < > >(Trim::trim); -auto TrimRightLG = Trim::RegistratorWrapper<grammar::RightLG < >, grammar::RightLG < > >(Trim::trim); -auto TrimRightRG = Trim::RegistratorWrapper<grammar::RightRG < >, grammar::RightRG < > >(Trim::trim); +auto TrimCFG = registration::OverloadRegister < Trim, grammar::CFG < >, grammar::CFG < > > ( Trim::trim ); +auto TrimEpsilonFreeCFG = registration::OverloadRegister < Trim, grammar::EpsilonFreeCFG < >, grammar::EpsilonFreeCFG < > > ( Trim::trim ); +auto TrimGNF = registration::OverloadRegister < Trim, grammar::GNF < >, grammar::GNF < > > ( Trim::trim ); +auto TrimCNF = registration::OverloadRegister < Trim, grammar::CNF < >, grammar::CNF < > > ( Trim::trim ); +auto TrimLG = registration::OverloadRegister < Trim, grammar::LG < >, grammar::LG < > > ( Trim::trim ); +auto TrimLeftLG = registration::OverloadRegister < Trim, grammar::LeftLG < >, grammar::LeftLG < > > ( Trim::trim ); +auto TrimLeftRG = registration::OverloadRegister < Trim, grammar::LeftRG < >, grammar::LeftRG < > > ( Trim::trim ); +auto TrimRightLG = registration::OverloadRegister < Trim, grammar::RightLG < >, grammar::RightLG < > > ( Trim::trim ); +auto TrimRightRG = registration::OverloadRegister < Trim, grammar::RightRG < >, grammar::RightRG < > > ( Trim::trim ); grammar::Grammar Trim::trim(const grammar::Grammar& grammar) { return dispatch(grammar.getData()); diff --git a/alib2algo/src/grammar/simplify/UnproductiveSymbolsRemover.cpp b/alib2algo/src/grammar/simplify/UnproductiveSymbolsRemover.cpp index ba8d91e10f..13d2ffab63 100644 --- a/alib2algo/src/grammar/simplify/UnproductiveSymbolsRemover.cpp +++ b/alib2algo/src/grammar/simplify/UnproductiveSymbolsRemover.cpp @@ -6,20 +6,21 @@ */ #include "UnproductiveSymbolsRemover.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { namespace simplify { -auto UnproductiveSymbolsRemoverCFG = UnproductiveSymbolsRemover::RegistratorWrapper<grammar::CFG < >, grammar::CFG < > >(UnproductiveSymbolsRemover::remove); -auto UnproductiveSymbolsRemoverEpsilonFreeCFG = UnproductiveSymbolsRemover::RegistratorWrapper<grammar::EpsilonFreeCFG < >, grammar::EpsilonFreeCFG < > >(UnproductiveSymbolsRemover::remove); -auto UnproductiveSymbolsRemoverGNF = UnproductiveSymbolsRemover::RegistratorWrapper<grammar::GNF < >, grammar::GNF < > >(UnproductiveSymbolsRemover::remove); -auto UnproductiveSymbolsRemoverCNF = UnproductiveSymbolsRemover::RegistratorWrapper<grammar::CNF < >, grammar::CNF < > >(UnproductiveSymbolsRemover::remove); -auto UnproductiveSymbolsRemoverLG = UnproductiveSymbolsRemover::RegistratorWrapper<grammar::LG < >, grammar::LG < > >(UnproductiveSymbolsRemover::remove); -auto UnproductiveSymbolsRemoverLeftLG = UnproductiveSymbolsRemover::RegistratorWrapper<grammar::LeftLG < >, grammar::LeftLG < > >(UnproductiveSymbolsRemover::remove); -auto UnproductiveSymbolsRemoverLeftRG = UnproductiveSymbolsRemover::RegistratorWrapper<grammar::LeftRG < >, grammar::LeftRG < > >(UnproductiveSymbolsRemover::remove); -auto UnproductiveSymbolsRemoverRightLG = UnproductiveSymbolsRemover::RegistratorWrapper<grammar::RightLG < >, grammar::RightLG < > >(UnproductiveSymbolsRemover::remove); -auto UnproductiveSymbolsRemoverRightRG = UnproductiveSymbolsRemover::RegistratorWrapper<grammar::RightRG < >, grammar::RightRG < > >(UnproductiveSymbolsRemover::remove); +auto UnproductiveSymbolsRemoverCFG = registration::OverloadRegister < UnproductiveSymbolsRemover, grammar::CFG < >, grammar::CFG < > > ( UnproductiveSymbolsRemover::remove ); +auto UnproductiveSymbolsRemoverEpsilonFreeCFG = registration::OverloadRegister < UnproductiveSymbolsRemover, grammar::EpsilonFreeCFG < >, grammar::EpsilonFreeCFG < > > ( UnproductiveSymbolsRemover::remove ); +auto UnproductiveSymbolsRemoverGNF = registration::OverloadRegister < UnproductiveSymbolsRemover, grammar::GNF < >, grammar::GNF < > > ( UnproductiveSymbolsRemover::remove ); +auto UnproductiveSymbolsRemoverCNF = registration::OverloadRegister < UnproductiveSymbolsRemover, grammar::CNF < >, grammar::CNF < > > ( UnproductiveSymbolsRemover::remove ); +auto UnproductiveSymbolsRemoverLG = registration::OverloadRegister < UnproductiveSymbolsRemover, grammar::LG < >, grammar::LG < > > ( UnproductiveSymbolsRemover::remove ); +auto UnproductiveSymbolsRemoverLeftLG = registration::OverloadRegister < UnproductiveSymbolsRemover, grammar::LeftLG < >, grammar::LeftLG < > > ( UnproductiveSymbolsRemover::remove ); +auto UnproductiveSymbolsRemoverLeftRG = registration::OverloadRegister < UnproductiveSymbolsRemover, grammar::LeftRG < >, grammar::LeftRG < > > ( UnproductiveSymbolsRemover::remove ); +auto UnproductiveSymbolsRemoverRightLG = registration::OverloadRegister < UnproductiveSymbolsRemover, grammar::RightLG < >, grammar::RightLG < > > ( UnproductiveSymbolsRemover::remove ); +auto UnproductiveSymbolsRemoverRightRG = registration::OverloadRegister < UnproductiveSymbolsRemover, grammar::RightRG < >, grammar::RightRG < > > ( UnproductiveSymbolsRemover::remove ); grammar::Grammar UnproductiveSymbolsRemover::remove(const grammar::Grammar& grammar) { return dispatch(grammar.getData()); diff --git a/alib2algo/src/grammar/simplify/UnreachableSymbolsRemover.cpp b/alib2algo/src/grammar/simplify/UnreachableSymbolsRemover.cpp index 860b36a43a..34f7382693 100644 --- a/alib2algo/src/grammar/simplify/UnreachableSymbolsRemover.cpp +++ b/alib2algo/src/grammar/simplify/UnreachableSymbolsRemover.cpp @@ -6,20 +6,21 @@ */ #include "UnreachableSymbolsRemover.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { namespace simplify { -auto UnreachableSymbolsRemoverCFG = UnreachableSymbolsRemover::RegistratorWrapper<grammar::CFG < >, grammar::CFG < > >(UnreachableSymbolsRemover::remove); -auto UnreachableSymbolsRemoverEpsilonFreeCFG = UnreachableSymbolsRemover::RegistratorWrapper<grammar::EpsilonFreeCFG < >, grammar::EpsilonFreeCFG < > >(UnreachableSymbolsRemover::remove); -auto UnreachableSymbolsRemoverGNF = UnreachableSymbolsRemover::RegistratorWrapper<grammar::GNF < >, grammar::GNF < > >(UnreachableSymbolsRemover::remove); -auto UnreachableSymbolsRemoverCNF = UnreachableSymbolsRemover::RegistratorWrapper<grammar::CNF < >, grammar::CNF < > >(UnreachableSymbolsRemover::remove); -auto UnreachableSymbolsRemoverLG = UnreachableSymbolsRemover::RegistratorWrapper<grammar::LG < >, grammar::LG < > >(UnreachableSymbolsRemover::remove); -auto UnreachableSymbolsRemoverLeftLG = UnreachableSymbolsRemover::RegistratorWrapper<grammar::LeftLG < >, grammar::LeftLG < > >(UnreachableSymbolsRemover::remove); -auto UnreachableSymbolsRemoverLeftRG = UnreachableSymbolsRemover::RegistratorWrapper<grammar::LeftRG < >, grammar::LeftRG < > >(UnreachableSymbolsRemover::remove); -auto UnreachableSymbolsRemoverRightLG = UnreachableSymbolsRemover::RegistratorWrapper<grammar::RightLG < >, grammar::RightLG < > >(UnreachableSymbolsRemover::remove); -auto UnreachableSymbolsRemoverRightRG = UnreachableSymbolsRemover::RegistratorWrapper<grammar::RightRG < >, grammar::RightRG < > >(UnreachableSymbolsRemover::remove); +auto UnreachableSymbolsRemoverCFG = registration::OverloadRegister < UnreachableSymbolsRemover, grammar::CFG < >, grammar::CFG < > > ( UnreachableSymbolsRemover::remove ); +auto UnreachableSymbolsRemoverEpsilonFreeCFG = registration::OverloadRegister < UnreachableSymbolsRemover, grammar::EpsilonFreeCFG < >, grammar::EpsilonFreeCFG < > > ( UnreachableSymbolsRemover::remove ); +auto UnreachableSymbolsRemoverGNF = registration::OverloadRegister < UnreachableSymbolsRemover, grammar::GNF < >, grammar::GNF < > > ( UnreachableSymbolsRemover::remove ); +auto UnreachableSymbolsRemoverCNF = registration::OverloadRegister < UnreachableSymbolsRemover, grammar::CNF < >, grammar::CNF < > > ( UnreachableSymbolsRemover::remove ); +auto UnreachableSymbolsRemoverLG = registration::OverloadRegister < UnreachableSymbolsRemover, grammar::LG < >, grammar::LG < > > ( UnreachableSymbolsRemover::remove ); +auto UnreachableSymbolsRemoverLeftLG = registration::OverloadRegister < UnreachableSymbolsRemover, grammar::LeftLG < >, grammar::LeftLG < > > ( UnreachableSymbolsRemover::remove ); +auto UnreachableSymbolsRemoverLeftRG = registration::OverloadRegister < UnreachableSymbolsRemover, grammar::LeftRG < >, grammar::LeftRG < > > ( UnreachableSymbolsRemover::remove ); +auto UnreachableSymbolsRemoverRightLG = registration::OverloadRegister < UnreachableSymbolsRemover, grammar::RightLG < >, grammar::RightLG < > > ( UnreachableSymbolsRemover::remove ); +auto UnreachableSymbolsRemoverRightRG = registration::OverloadRegister < UnreachableSymbolsRemover, grammar::RightRG < >, grammar::RightRG < > > ( UnreachableSymbolsRemover::remove ); grammar::Grammar UnreachableSymbolsRemover::remove(const grammar::Grammar& grammar) { return dispatch(grammar.getData()); diff --git a/alib2algo/src/regexp/convert/ToAutomaton.cpp b/alib2algo/src/regexp/convert/ToAutomaton.cpp index e943f5b298..b24803b209 100644 --- a/alib2algo/src/regexp/convert/ToAutomaton.cpp +++ b/alib2algo/src/regexp/convert/ToAutomaton.cpp @@ -6,6 +6,7 @@ */ #include "ToAutomaton.h" +#include <registration/AlgoRegistration.hpp> namespace regexp { @@ -15,8 +16,8 @@ automaton::Automaton ToAutomaton::convert(const regexp::RegExp& regexp) { return dispatch(regexp.getData()); } -auto ToAutomatonFormalRegExp = ToAutomaton::RegistratorWrapper<automaton::Automaton, regexp::FormalRegExp < > >(ToAutomaton::convert); -auto ToAutomatonUnboundedRegExp = ToAutomaton::RegistratorWrapper<automaton::Automaton, regexp::UnboundedRegExp < > >( ToAutomaton::convert); +auto ToAutomatonFormalRegExp = registration::OverloadRegister < ToAutomaton, automaton::Automaton, regexp::FormalRegExp < > > ( ToAutomaton::convert ); +auto ToAutomatonUnboundedRegExp = registration::OverloadRegister < ToAutomaton, automaton::Automaton, regexp::UnboundedRegExp < > > ( ToAutomaton::convert ); } /* namespace convert */ diff --git a/alib2algo/src/regexp/convert/ToAutomatonDerivation.cpp b/alib2algo/src/regexp/convert/ToAutomatonDerivation.cpp index 188a9f70ca..1b38a425e5 100644 --- a/alib2algo/src/regexp/convert/ToAutomatonDerivation.cpp +++ b/alib2algo/src/regexp/convert/ToAutomatonDerivation.cpp @@ -18,6 +18,7 @@ #include "../transform/RegExpDerivation.h" #include "../simplify/RegExpOptimize.h" #include "../properties/RegExpEpsilon.h" +#include <registration/AlgoRegistration.hpp> namespace regexp { @@ -99,8 +100,8 @@ automaton::DFA<> ToAutomatonDerivation::convert(const T& regexp) { return automaton; } -auto ToAutomatonDerivationFormalRegExp = ToAutomatonDerivation::RegistratorWrapper<automaton::DFA<>, regexp::FormalRegExp < > >( ToAutomatonDerivation::convert); -auto ToAutomatonDerivationUnboundedRegExp = ToAutomatonDerivation::RegistratorWrapper<automaton::DFA<>, regexp::UnboundedRegExp < > >( ToAutomatonDerivation::convert); +auto ToAutomatonDerivationFormalRegExp = registration::OverloadRegister < ToAutomatonDerivation, automaton::DFA < >, regexp::FormalRegExp < > > ( ToAutomatonDerivation::convert ); +auto ToAutomatonDerivationUnboundedRegExp = registration::OverloadRegister < ToAutomatonDerivation, automaton::DFA < >, regexp::UnboundedRegExp < > > ( ToAutomatonDerivation::convert ); } /* namespace convert */ diff --git a/alib2algo/src/regexp/convert/ToAutomatonGlushkov.cpp b/alib2algo/src/regexp/convert/ToAutomatonGlushkov.cpp index 466669c8e9..54e9b8b8b4 100644 --- a/alib2algo/src/regexp/convert/ToAutomatonGlushkov.cpp +++ b/alib2algo/src/regexp/convert/ToAutomatonGlushkov.cpp @@ -19,6 +19,7 @@ #include "../properties/RegExpEpsilon.h" #include <exception/CommonException.h> +#include <registration/AlgoRegistration.hpp> namespace regexp { @@ -81,13 +82,13 @@ automaton::NFA < > ToAutomatonGlushkov::convert ( const regexp::UnboundedRegExp return automaton; } -auto ToAutomatonGlushkovUnboundedRegExp = ToAutomatonGlushkov::RegistratorWrapper < automaton::NFA < >, regexp::UnboundedRegExp < > > ( ToAutomatonGlushkov::convert ); +auto ToAutomatonGlushkovUnboundedRegExp = registration::OverloadRegister < ToAutomatonGlushkov, automaton::NFA < >, regexp::UnboundedRegExp < > > ( ToAutomatonGlushkov::convert ); automaton::NFA < > ToAutomatonGlushkov::convert ( const regexp::FormalRegExp < > & /* regexp */ ) { throw exception::CommonException ( "Glushkov: Converting FormalRegExp NYI" ); // TODO } -auto ToAutomatonGlushkovFormalRegExp = ToAutomatonGlushkov::RegistratorWrapper < automaton::NFA < >, regexp::FormalRegExp < > > ( ToAutomatonGlushkov::convert ); +auto ToAutomatonGlushkovFormalRegExp = registration::OverloadRegister < ToAutomatonGlushkov, automaton::NFA < >, regexp::FormalRegExp < > > ( ToAutomatonGlushkov::convert ); } /* namespace convert */ diff --git a/alib2algo/src/regexp/convert/ToAutomatonThompson.cpp b/alib2algo/src/regexp/convert/ToAutomatonThompson.cpp index 6f6a716d2e..a3b6e1b9c8 100644 --- a/alib2algo/src/regexp/convert/ToAutomatonThompson.cpp +++ b/alib2algo/src/regexp/convert/ToAutomatonThompson.cpp @@ -8,6 +8,7 @@ #include "regexp/unbounded/UnboundedRegExpElements.h" #include "regexp/formal/FormalRegExpElements.h" #include <tuple> +#include <registration/AlgoRegistration.hpp> namespace regexp { @@ -36,7 +37,7 @@ automaton::EpsilonNFA < > ToAutomatonThompson::convert(const regexp::FormalRegEx return automaton; } -auto ToAutomatonThompsonFormalRegExp = ToAutomatonThompson::RegistratorWrapper<automaton::EpsilonNFA < >, regexp::FormalRegExp < > >(ToAutomatonThompson::convert); +auto ToAutomatonThompsonFormalRegExp = registration::OverloadRegister < ToAutomatonThompson, automaton::EpsilonNFA < >, regexp::FormalRegExp < > > ( ToAutomatonThompson::convert ); automaton::EpsilonNFA < > ToAutomatonThompson::convert(const regexp::UnboundedRegExp < > & regexp) { //FIXME use actual algorithms that implement product alternation and iteration of re over automata and remove terrible TERRIBLE hack with dummy initial state @@ -57,7 +58,7 @@ automaton::EpsilonNFA < > ToAutomatonThompson::convert(const regexp::UnboundedRe return automaton; } -auto ToAutomatonThompsonUnboundedRegExp = ToAutomatonThompson::RegistratorWrapper<automaton::EpsilonNFA < >, regexp::UnboundedRegExp < > >(ToAutomatonThompson::convert); +auto ToAutomatonThompsonUnboundedRegExp = registration::OverloadRegister < ToAutomatonThompson, automaton::EpsilonNFA < >, regexp::UnboundedRegExp < > > ( ToAutomatonThompson::convert ); // ---------------------------------------------------------------------------- diff --git a/alib2algo/src/regexp/convert/ToGrammar.cpp b/alib2algo/src/regexp/convert/ToGrammar.cpp index 0b51d8f6eb..038582b6b5 100644 --- a/alib2algo/src/regexp/convert/ToGrammar.cpp +++ b/alib2algo/src/regexp/convert/ToGrammar.cpp @@ -6,6 +6,7 @@ */ #include "ToGrammar.h" +#include <registration/AlgoRegistration.hpp> namespace regexp { @@ -15,8 +16,8 @@ grammar::Grammar ToGrammar::convert(const regexp::RegExp& regexp) { return dispatch(regexp.getData()); } -auto ToGrammarFormalRegExp = ToGrammar::RegistratorWrapper<grammar::Grammar, regexp::FormalRegExp < > >(ToGrammar::convert); -auto ToGrammarUnboundedRegExp = ToGrammar::RegistratorWrapper<grammar::Grammar, regexp::UnboundedRegExp < > >(ToGrammar::convert); +auto ToGrammarFormalRegExp = registration::OverloadRegister < ToGrammar, grammar::Grammar, regexp::FormalRegExp < > > ( ToGrammar::convert ); +auto ToGrammarUnboundedRegExp = registration::OverloadRegister < ToGrammar, grammar::Grammar, regexp::UnboundedRegExp < > > ( ToGrammar::convert ); } /* namespace convert */ diff --git a/alib2algo/src/regexp/convert/ToGrammarRightRGDerivation.cpp b/alib2algo/src/regexp/convert/ToGrammarRightRGDerivation.cpp index 58eccfe3df..4bb6176bd6 100644 --- a/alib2algo/src/regexp/convert/ToGrammarRightRGDerivation.cpp +++ b/alib2algo/src/regexp/convert/ToGrammarRightRGDerivation.cpp @@ -18,6 +18,7 @@ #include "../simplify/RegExpOptimize.h" #include "../transform/RegExpDerivation.h" #include "../properties/RegExpEpsilon.h" +#include <registration/AlgoRegistration.hpp> namespace regexp { @@ -101,8 +102,8 @@ grammar::RightRG < > ToGrammarRightRGDerivation::convert(const T& regexp) { return grammar; } -auto ToGrammarRightRGDerivationUnboundedRegExp = ToGrammarRightRGDerivation::RegistratorWrapper<grammar::RightRG < >, regexp::UnboundedRegExp < > >(ToGrammarRightRGDerivation::convert); -auto ToGrammarRightRGDerivationFormalRegExp = ToGrammarRightRGDerivation::RegistratorWrapper<grammar::RightRG < >, regexp::FormalRegExp < > >(ToGrammarRightRGDerivation::convert); +auto ToGrammarRightRGDerivationUnboundedRegExp = registration::OverloadRegister < ToGrammarRightRGDerivation, grammar::RightRG < >, regexp::UnboundedRegExp < > > ( ToGrammarRightRGDerivation::convert ); +auto ToGrammarRightRGDerivationFormalRegExp = registration::OverloadRegister < ToGrammarRightRGDerivation, grammar::RightRG < >, regexp::FormalRegExp < > > ( ToGrammarRightRGDerivation::convert ); } /* namespace convert */ diff --git a/alib2algo/src/regexp/convert/ToGrammarRightRGGlushkov.cpp b/alib2algo/src/regexp/convert/ToGrammarRightRGGlushkov.cpp index d6c47e4031..be2eec8dee 100644 --- a/alib2algo/src/regexp/convert/ToGrammarRightRGGlushkov.cpp +++ b/alib2algo/src/regexp/convert/ToGrammarRightRGGlushkov.cpp @@ -18,6 +18,7 @@ #include "../properties/RegExpEpsilon.h" #include <exception/CommonException.h> +#include <registration/AlgoRegistration.hpp> namespace regexp { @@ -83,13 +84,13 @@ grammar::RightRG < > ToGrammarRightRGGlushkov::convert ( const regexp::Unbounded return grammar; } -auto ToGrammarRightRGGlushkovUnboundedRegExp = ToGrammarRightRGGlushkov::RegistratorWrapper < grammar::RightRG < >, regexp::UnboundedRegExp < > > ( ToGrammarRightRGGlushkov::convert ); +auto ToGrammarRightRGGlushkovUnboundedRegExp = registration::OverloadRegister < ToGrammarRightRGGlushkov, grammar::RightRG < >, regexp::UnboundedRegExp < > > ( ToGrammarRightRGGlushkov::convert ); grammar::RightRG < > ToGrammarRightRGGlushkov::convert ( const regexp::FormalRegExp < > & /* regexp */ ) { throw exception::CommonException ( "Glushkov: Converting FormalRegExp NYI" ); // TODO } -auto ToGrammarRightRGGlushkovFormalRegExp = ToGrammarRightRGGlushkov::RegistratorWrapper < grammar::RightRG < >, regexp::FormalRegExp < > > ( ToGrammarRightRGGlushkov::convert ); +auto ToGrammarRightRGGlushkovFormalRegExp = registration::OverloadRegister < ToGrammarRightRGGlushkov, grammar::RightRG < >, regexp::FormalRegExp < > > ( ToGrammarRightRGGlushkov::convert ); } /* namespace convert */ diff --git a/alib2algo/src/regexp/properties/RegExpEmpty.cpp b/alib2algo/src/regexp/properties/RegExpEmpty.cpp index f1a432c477..3d1f5d579f 100644 --- a/alib2algo/src/regexp/properties/RegExpEmpty.cpp +++ b/alib2algo/src/regexp/properties/RegExpEmpty.cpp @@ -8,6 +8,7 @@ #include "RegExpEmpty.h" #include <regexp/formal/FormalRegExpElements.h> #include <regexp/unbounded/UnboundedRegExpElements.h> +#include <registration/AlgoRegistration.hpp> namespace regexp { @@ -17,8 +18,8 @@ bool RegExpEmpty::languageIsEmpty(const regexp::RegExp& regexp) { return dispatch(regexp.getData()); } -auto RegExpEmptyFormalRegExp = RegExpEmpty::RegistratorWrapper<bool, regexp::FormalRegExp < > >( RegExpEmpty::languageIsEmpty); -auto RegExpEmptyUnboundedRegExp = RegExpEmpty::RegistratorWrapper<bool, regexp::UnboundedRegExp < > >( RegExpEmpty::languageIsEmpty); +auto RegExpEmptyFormalRegExp = registration::OverloadRegister < RegExpEmpty, bool, regexp::FormalRegExp < > > ( RegExpEmpty::languageIsEmpty ); +auto RegExpEmptyUnboundedRegExp = registration::OverloadRegister < RegExpEmpty, bool, regexp::UnboundedRegExp < > > ( RegExpEmpty::languageIsEmpty ); } /* namespace properties */ diff --git a/alib2algo/src/regexp/properties/RegExpEpsilon.cpp b/alib2algo/src/regexp/properties/RegExpEpsilon.cpp index bdfc6f9cde..f1521fc644 100644 --- a/alib2algo/src/regexp/properties/RegExpEpsilon.cpp +++ b/alib2algo/src/regexp/properties/RegExpEpsilon.cpp @@ -8,6 +8,7 @@ #include "RegExpEpsilon.h" #include <regexp/formal/FormalRegExpElements.h> #include <regexp/unbounded/UnboundedRegExpElements.h> +#include <registration/AlgoRegistration.hpp> namespace regexp { @@ -17,8 +18,8 @@ bool RegExpEpsilon::languageContainsEpsilon(const regexp::RegExp& regexp) { return dispatch(regexp.getData()); } -auto RegExpEpsilonFormalRegExp = RegExpEpsilon::RegistratorWrapper<bool, regexp::FormalRegExp < > >( RegExpEpsilon::languageContainsEpsilon); -auto RegExpEpsilonUnboundedRegExp = RegExpEpsilon::RegistratorWrapper<bool, regexp::UnboundedRegExp < > >( RegExpEpsilon::languageContainsEpsilon); +auto RegExpEpsilonFormalRegExp = registration::OverloadRegister < RegExpEpsilon, bool, regexp::FormalRegExp < > > ( RegExpEpsilon::languageContainsEpsilon ); +auto RegExpEpsilonUnboundedRegExp = registration::OverloadRegister < RegExpEpsilon, bool, regexp::UnboundedRegExp < > > ( RegExpEpsilon::languageContainsEpsilon ); } /* namespace properties */ diff --git a/alib2algo/src/regexp/simplify/RegExpOptimize.cpp b/alib2algo/src/regexp/simplify/RegExpOptimize.cpp index 89c3430354..3aeb040de1 100644 --- a/alib2algo/src/regexp/simplify/RegExpOptimize.cpp +++ b/alib2algo/src/regexp/simplify/RegExpOptimize.cpp @@ -6,6 +6,7 @@ */ #include "RegExpOptimize.h" +#include <registration/AlgoRegistration.hpp> namespace regexp { @@ -15,8 +16,8 @@ regexp::RegExp RegExpOptimize::optimize(const regexp::RegExp& regexp) { return dispatch(regexp.getData()); } -auto RegExpOptimizeFormalRegExp = RegExpOptimize::RegistratorWrapper<FormalRegExp < >, FormalRegExp < > >(RegExpOptimize::optimize); -auto RegExpOptimizeUnboundedRegExp = RegExpOptimize::RegistratorWrapper<UnboundedRegExp < >, UnboundedRegExp < > >(RegExpOptimize::optimize); +auto RegExpOptimizeFormalRegExp = registration::OverloadRegister < RegExpOptimize, FormalRegExp < >, FormalRegExp < > > ( RegExpOptimize::optimize ); +auto RegExpOptimizeUnboundedRegExp = registration::OverloadRegister < RegExpOptimize, UnboundedRegExp < >, UnboundedRegExp < > > ( RegExpOptimize::optimize ); } /* namespace regexp */ diff --git a/alib2algo/src/regexp/transform/RegExpAlternate.cpp b/alib2algo/src/regexp/transform/RegExpAlternate.cpp index 990d1c3bab..0f1897263a 100644 --- a/alib2algo/src/regexp/transform/RegExpAlternate.cpp +++ b/alib2algo/src/regexp/transform/RegExpAlternate.cpp @@ -6,6 +6,7 @@ */ #include "RegExpAlternate.h" +#include <registration/AlgoRegistration.hpp> namespace regexp { @@ -13,7 +14,7 @@ regexp::RegExp RegExpAlternate::alternate(const regexp::RegExp& first, const reg return dispatch(first.getData(), second.getData()); } -auto RegExpAlternateFormalRegExp = RegExpAlternate::RegistratorWrapper<regexp::FormalRegExp < > , regexp::FormalRegExp < > >(RegExpAlternate::alternate); -auto RegExpAlternateUnboundedRegExp = RegExpAlternate::RegistratorWrapper<regexp::UnboundedRegExp < >, regexp::UnboundedRegExp < > >(RegExpAlternate::alternate); +auto RegExpAlternateFormalRegExp = registration::OverloadRegister < RegExpAlternate, regexp::FormalRegExp < > , regexp::FormalRegExp < > > ( RegExpAlternate::alternate ); +auto RegExpAlternateUnboundedRegExp = registration::OverloadRegister < RegExpAlternate, regexp::UnboundedRegExp < >, regexp::UnboundedRegExp < > > ( RegExpAlternate::alternate ); } /* namespace regexp */ diff --git a/alib2algo/src/regexp/transform/RegExpConcatenate.cpp b/alib2algo/src/regexp/transform/RegExpConcatenate.cpp index 3dc1f3be4e..1139d0c5f3 100644 --- a/alib2algo/src/regexp/transform/RegExpConcatenate.cpp +++ b/alib2algo/src/regexp/transform/RegExpConcatenate.cpp @@ -6,6 +6,7 @@ */ #include "RegExpConcatenate.h" +#include <registration/AlgoRegistration.hpp> namespace regexp { @@ -13,7 +14,7 @@ regexp::RegExp RegExpConcatenate::concatenate(const regexp::RegExp& first, const return dispatch(first.getData(), second.getData()); } -auto RegExpConcatenateFormalRegExp = RegExpConcatenate::RegistratorWrapper<regexp::FormalRegExp < >, regexp::FormalRegExp < > > (RegExpConcatenate::concatenate); -auto RegExpConcatenateUnboundedRegExp = RegExpConcatenate::RegistratorWrapper<regexp::UnboundedRegExp < >, regexp::UnboundedRegExp < > >(RegExpConcatenate::concatenate); +auto RegExpConcatenateFormalRegExp = registration::OverloadRegister < RegExpConcatenate, regexp::FormalRegExp < >, regexp::FormalRegExp < > > ( RegExpConcatenate::concatenate ); +auto RegExpConcatenateUnboundedRegExp = registration::OverloadRegister < RegExpConcatenate, regexp::UnboundedRegExp < >, regexp::UnboundedRegExp < > > ( RegExpConcatenate::concatenate ); } /* namespace regexp */ diff --git a/alib2algo/src/regexp/transform/RegExpDerivation.cpp b/alib2algo/src/regexp/transform/RegExpDerivation.cpp index b1e7852540..ace0c75095 100644 --- a/alib2algo/src/regexp/transform/RegExpDerivation.cpp +++ b/alib2algo/src/regexp/transform/RegExpDerivation.cpp @@ -6,6 +6,7 @@ */ #include "RegExpDerivation.h" +#include <registration/AlgoRegistration.hpp> namespace regexp { @@ -13,7 +14,7 @@ regexp::RegExp RegExpDerivation::derivation(const regexp::RegExp& regexp, const return dispatch(regexp.getData(), string); } -auto RegExpDerivationFormalRegExp = RegExpDerivation::RegistratorWrapper<regexp::FormalRegExp < >, regexp::FormalRegExp < > >(RegExpDerivation::derivation); -auto RegExpDerivationUnboundedRegExp = RegExpDerivation::RegistratorWrapper<regexp::UnboundedRegExp < >, regexp::UnboundedRegExp < > >(RegExpDerivation::derivation); +auto RegExpDerivationFormalRegExp = registration::OverloadRegister < RegExpDerivation, regexp::FormalRegExp < >, regexp::FormalRegExp < > > ( RegExpDerivation::derivation ); +auto RegExpDerivationUnboundedRegExp = registration::OverloadRegister < RegExpDerivation, regexp::UnboundedRegExp < >, regexp::UnboundedRegExp < > > ( RegExpDerivation::derivation ); } /* namespace regexp */ diff --git a/alib2algo/src/regexp/transform/RegExpIntegral.cpp b/alib2algo/src/regexp/transform/RegExpIntegral.cpp index f4558d7350..dc980d025b 100644 --- a/alib2algo/src/regexp/transform/RegExpIntegral.cpp +++ b/alib2algo/src/regexp/transform/RegExpIntegral.cpp @@ -6,6 +6,7 @@ */ #include "RegExpIntegral.h" +#include <registration/AlgoRegistration.hpp> namespace regexp { @@ -13,7 +14,7 @@ regexp::RegExp RegExpIntegral::integral(const regexp::RegExp& regexp, const stri return dispatch(regexp.getData(), string); } -auto RegExpIntegralFormalRegExp = RegExpIntegral::RegistratorWrapper<regexp::FormalRegExp < >, regexp::FormalRegExp < > > ( RegExpIntegral::integral ); -auto RegExpIntegralUnboundedRegExp = RegExpIntegral::RegistratorWrapper<regexp::UnboundedRegExp < >, regexp::UnboundedRegExp < > > ( RegExpIntegral::integral ); +auto RegExpIntegralFormalRegExp = registration::OverloadRegister < RegExpIntegral, regexp::FormalRegExp < >, regexp::FormalRegExp < > > ( RegExpIntegral::integral ); +auto RegExpIntegralUnboundedRegExp = registration::OverloadRegister < RegExpIntegral, regexp::UnboundedRegExp < >, regexp::UnboundedRegExp < > > ( RegExpIntegral::integral ); } /* namespace regexp */ diff --git a/alib2algo/src/regexp/transform/RegExpIterate.cpp b/alib2algo/src/regexp/transform/RegExpIterate.cpp index b89f389774..4205a203f8 100644 --- a/alib2algo/src/regexp/transform/RegExpIterate.cpp +++ b/alib2algo/src/regexp/transform/RegExpIterate.cpp @@ -6,6 +6,7 @@ */ #include "RegExpIterate.h" +#include <registration/AlgoRegistration.hpp> namespace regexp { @@ -13,7 +14,7 @@ regexp::RegExp RegExpIterate::iterate(const regexp::RegExp& regexp) { return dispatch(regexp.getData()); } -auto RegExpIterateFormalRegExpFormalRegExp = RegExpIterate::RegistratorWrapper<regexp::FormalRegExp < >, regexp::FormalRegExp < > >(RegExpIterate::iterate); -auto RegExpIterateUnboundedRegExpUnboundedRegExp = RegExpIterate::RegistratorWrapper<regexp::UnboundedRegExp < >, regexp::UnboundedRegExp < > >(RegExpIterate::iterate); +auto RegExpIterateFormalRegExpFormalRegExp = registration::OverloadRegister < RegExpIterate, regexp::FormalRegExp < >, regexp::FormalRegExp < > > ( RegExpIterate::iterate ); +auto RegExpIterateUnboundedRegExpUnboundedRegExp = registration::OverloadRegister < RegExpIterate, regexp::UnboundedRegExp < >, regexp::UnboundedRegExp < > > ( RegExpIterate::iterate ); } /* namespace regexp */ diff --git a/alib2algo/src/rte/convert/ToPostfixPushdownAutomaton.cpp b/alib2algo/src/rte/convert/ToPostfixPushdownAutomaton.cpp index 44726d5bf1..4d10836452 100644 --- a/alib2algo/src/rte/convert/ToPostfixPushdownAutomaton.cpp +++ b/alib2algo/src/rte/convert/ToPostfixPushdownAutomaton.cpp @@ -8,6 +8,7 @@ #include "ToPostfixPushdownAutomaton.h" #include "ToPostfixPushdownAutomatonGlushkov.h" #include <exception/CommonException.h> +#include <registration/AlgoRegistration.hpp> namespace rte { @@ -21,7 +22,7 @@ automaton::Automaton ToPostfixPushdownAutomaton::convert ( const rte::FormalRTE return automaton::Automaton ( ToPostfixPushdownAutomatonGlushkov::convert ( rte ) ); } -auto ToAutomatonFormalRegExp = ToPostfixPushdownAutomaton::RegistratorWrapper < automaton::Automaton, rte::FormalRTE < > > ( ToPostfixPushdownAutomaton::convert ); +auto ToAutomatonFormalRegExp = registration::OverloadRegister < ToPostfixPushdownAutomaton, automaton::Automaton, rte::FormalRTE < > > ( ToPostfixPushdownAutomaton::convert ); } /* namespace convert */ diff --git a/alib2algo/src/rte/convert/ToPostfixPushdownAutomatonGlushkov.cpp b/alib2algo/src/rte/convert/ToPostfixPushdownAutomatonGlushkov.cpp index 376e5cdb46..c323993418 100644 --- a/alib2algo/src/rte/convert/ToPostfixPushdownAutomatonGlushkov.cpp +++ b/alib2algo/src/rte/convert/ToPostfixPushdownAutomatonGlushkov.cpp @@ -17,6 +17,7 @@ #include "../glushkov/GlushkovFollow.h" #include "../glushkov/GlushkovIndexate.h" #include "../glushkov/GlushkovFirst.h" +#include <registration/AlgoRegistration.hpp> namespace rte { @@ -135,7 +136,7 @@ automaton::NPDA < > ToPostfixPushdownAutomatonGlushkov::convert ( const rte::For return automaton; } -auto ToAutomatonGlushkovFormalRegExp = ToPostfixPushdownAutomatonGlushkov::RegistratorWrapper < automaton::NPDA < >, rte::FormalRTE < > > ( ToPostfixPushdownAutomatonGlushkov::convert ); +auto ToAutomatonGlushkovFormalRegExp = registration::OverloadRegister < ToPostfixPushdownAutomatonGlushkov, automaton::NPDA < >, rte::FormalRTE < > > ( ToPostfixPushdownAutomatonGlushkov::convert ); } /* namespace convert */ diff --git a/alib2algo/src/string/generate/RandomSubstringFactory.cpp b/alib2algo/src/string/generate/RandomSubstringFactory.cpp index f624a03a54..be69bb6f0d 100644 --- a/alib2algo/src/string/generate/RandomSubstringFactory.cpp +++ b/alib2algo/src/string/generate/RandomSubstringFactory.cpp @@ -6,6 +6,7 @@ */ #include "RandomSubstringFactory.h" +#include <registration/AlgoRegistration.hpp> namespace string { @@ -15,7 +16,7 @@ string::String RandomSubstringFactory::generateSubstring ( size_t size, const st return dispatch ( size, v.getData ( ) ); } -auto RandomSubstringFactoryLinearString = RandomSubstringFactory::RegistratorWrapper < string::LinearString < >, string::LinearString < > > ( RandomSubstringFactory::generateSubstring ); +auto RandomSubstringFactoryLinearString = registration::OverloadRegister < RandomSubstringFactory, string::LinearString < >, string::LinearString < > > ( RandomSubstringFactory::generateSubstring ); } /* namespace generate */ diff --git a/alib2algo/src/string/naive/ExactCompare.cpp b/alib2algo/src/string/naive/ExactCompare.cpp index fe94c525c0..8dff42d677 100644 --- a/alib2algo/src/string/naive/ExactCompare.cpp +++ b/alib2algo/src/string/naive/ExactCompare.cpp @@ -9,6 +9,7 @@ #include "string/LinearString.h" #include "string/CyclicString.h" #include "string/Epsilon.h" +#include <registration/AlgoRegistration.hpp> namespace string { @@ -18,9 +19,9 @@ int ExactCompare::compare ( const string::String & u, const string::String & v ) return dispatch ( u.getData ( ), v.getData ( ) ); } -auto ExactCompareEpsilon = ExactCompare::RegistratorWrapper < int, string::Epsilon < > > ( ExactCompare::compare ); -auto ExactCompareLinearString = ExactCompare::RegistratorWrapper < int, string::LinearString < > > ( ExactCompare::compare ); -auto ExactCompareCyclicString = ExactCompare::RegistratorWrapper < int, string::CyclicString < > > ( ExactCompare::compare ); +auto ExactCompareEpsilon = registration::OverloadRegister < ExactCompare, int, string::Epsilon < > > ( ExactCompare::compare ); +auto ExactCompareLinearString = registration::OverloadRegister < ExactCompare, int, string::LinearString < > > ( ExactCompare::compare ); +auto ExactCompareCyclicString = registration::OverloadRegister < ExactCompare, int, string::CyclicString < > > ( ExactCompare::compare ); } /* namespace naive */ diff --git a/alib2algo/src/string/naive/ExactEqual.cpp b/alib2algo/src/string/naive/ExactEqual.cpp index c732935b86..1ad6e5a90f 100644 --- a/alib2algo/src/string/naive/ExactEqual.cpp +++ b/alib2algo/src/string/naive/ExactEqual.cpp @@ -9,6 +9,7 @@ #include "string/LinearString.h" #include "string/CyclicString.h" #include "string/Epsilon.h" +#include <registration/AlgoRegistration.hpp> namespace string { @@ -18,9 +19,9 @@ bool ExactEqual::equals ( const string::String & u, const string::String & v ) { return dispatch ( u.getData ( ), v.getData ( ) ); } -auto ExactEqualEpsilon = ExactEqual::RegistratorWrapper < bool, string::Epsilon < > > ( ExactEqual::equals ); -auto ExactEqualLinearString = ExactEqual::RegistratorWrapper < bool, string::LinearString < > > ( ExactEqual::equals ); -auto ExactEqualCyclicString = ExactEqual::RegistratorWrapper < bool, string::CyclicString < > > ( ExactEqual::equals ); +auto ExactEqualEpsilon = registration::OverloadRegister < ExactEqual, bool, string::Epsilon < > > ( ExactEqual::equals ); +auto ExactEqualLinearString = registration::OverloadRegister < ExactEqual, bool, string::LinearString < > > ( ExactEqual::equals ); +auto ExactEqualCyclicString = registration::OverloadRegister < ExactEqual, bool, string::CyclicString < > > ( ExactEqual::equals ); } /* namespace naive */ diff --git a/alib2algo/src/string/properties/BadCharacterShiftTable.cpp b/alib2algo/src/string/properties/BadCharacterShiftTable.cpp index 2ce43f29d3..0237803dca 100644 --- a/alib2algo/src/string/properties/BadCharacterShiftTable.cpp +++ b/alib2algo/src/string/properties/BadCharacterShiftTable.cpp @@ -6,6 +6,7 @@ */ #include "BadCharacterShiftTable.h" +#include <registration/AlgoRegistration.hpp> namespace string { @@ -15,7 +16,7 @@ std::map<DefaultSymbolType, size_t> BadCharacterShiftTable::bcs(const string::St return dispatch(pattern.getData()); } -auto BadCharacterShiftTableLinearString = BadCharacterShiftTable::RegistratorWrapper<std::map<DefaultSymbolType, size_t>, string::LinearString < >>(BadCharacterShiftTable::bcs); +auto BadCharacterShiftTableLinearString = registration::OverloadRegister < BadCharacterShiftTable, std::map < DefaultSymbolType, size_t >, string::LinearString < > > ( BadCharacterShiftTable::bcs ); } /* namespace properties */ diff --git a/alib2algo/src/string/properties/BorderArray.cpp b/alib2algo/src/string/properties/BorderArray.cpp index da63c9319f..167c4b7676 100644 --- a/alib2algo/src/string/properties/BorderArray.cpp +++ b/alib2algo/src/string/properties/BorderArray.cpp @@ -6,6 +6,7 @@ */ #include "BorderArray.h" +#include <registration/AlgoRegistration.hpp> namespace string { @@ -15,7 +16,7 @@ std::vector<unsigned> BorderArray::construct(const string::String& string) { return dispatch(string.getData()); } -auto BorderArrayLinearString = BorderArray::RegistratorWrapper<std::vector<unsigned>, string::LinearString < >>(BorderArray::construct); +auto BorderArrayLinearString = registration::OverloadRegister < BorderArray, std::vector < unsigned >, string::LinearString < > > ( BorderArray::construct ); } /* namespace properties */ diff --git a/alib2algo/src/string/properties/GoodSuffixShiftTable.cpp b/alib2algo/src/string/properties/GoodSuffixShiftTable.cpp index 9d6cd1026f..48970cc1e6 100644 --- a/alib2algo/src/string/properties/GoodSuffixShiftTable.cpp +++ b/alib2algo/src/string/properties/GoodSuffixShiftTable.cpp @@ -6,6 +6,7 @@ */ #include "GoodSuffixShiftTable.h" +#include <registration/AlgoRegistration.hpp> namespace string { @@ -15,7 +16,7 @@ std::vector < size_t > GoodSuffixShiftTable::gss ( const string::String & patter return dispatch ( pattern.getData ( ) ); } -auto GoodSuffixShiftTableLinearString = GoodSuffixShiftTable::RegistratorWrapper < std::vector < size_t >, string::LinearString < > > ( GoodSuffixShiftTable::gss ); +auto GoodSuffixShiftTableLinearString = registration::OverloadRegister < GoodSuffixShiftTable, std::vector < size_t >, string::LinearString < > > ( GoodSuffixShiftTable::gss ); } /* namespace properties */ diff --git a/alib2algo/src/string/properties/ReversedBadCharacterShiftTable.cpp b/alib2algo/src/string/properties/ReversedBadCharacterShiftTable.cpp index 640fb26e96..295d9862ce 100644 --- a/alib2algo/src/string/properties/ReversedBadCharacterShiftTable.cpp +++ b/alib2algo/src/string/properties/ReversedBadCharacterShiftTable.cpp @@ -6,6 +6,7 @@ */ #include "ReversedBadCharacterShiftTable.h" +#include <registration/AlgoRegistration.hpp> namespace string { @@ -15,7 +16,7 @@ std::map < DefaultSymbolType, size_t > ReversedBadCharacterShiftTable::bcs ( con return dispatch ( pattern.getData ( ) ); } -auto ReversedBadCharacterShiftTableLinearString = ReversedBadCharacterShiftTable::RegistratorWrapper < std::map < DefaultSymbolType, size_t >, string::LinearString < > > ( ReversedBadCharacterShiftTable::bcs ); +auto ReversedBadCharacterShiftTableLinearString = registration::OverloadRegister < ReversedBadCharacterShiftTable, std::map < DefaultSymbolType, size_t >, string::LinearString < > > ( ReversedBadCharacterShiftTable::bcs ); } /* namespace properties */ diff --git a/alib2algo/src/string/simplify/NormalizeAlphabet.cpp b/alib2algo/src/string/simplify/NormalizeAlphabet.cpp index c70d1436c8..595a4cafc9 100644 --- a/alib2algo/src/string/simplify/NormalizeAlphabet.cpp +++ b/alib2algo/src/string/simplify/NormalizeAlphabet.cpp @@ -6,6 +6,7 @@ */ #include "NormalizeAlphabet.h" +#include <registration/AlgoRegistration.hpp> namespace string { @@ -15,7 +16,7 @@ string::String NormalizeAlphabet::normalize(const string::String& string) { return dispatch(string.getData()); } -auto NormalizeAlphabetLinearString = NormalizeAlphabet::RegistratorWrapper<string::LinearString < >, string::LinearString < >>(NormalizeAlphabet::normalize); +auto NormalizeAlphabetLinearString = registration::OverloadRegister < NormalizeAlphabet, string::LinearString < >, string::LinearString < > > ( NormalizeAlphabet::normalize ); } /* namespace simplify */ diff --git a/alib2algo/src/string/simplify/NormalizeRotation.cpp b/alib2algo/src/string/simplify/NormalizeRotation.cpp index db2c2c689f..18d24531aa 100644 --- a/alib2algo/src/string/simplify/NormalizeRotation.cpp +++ b/alib2algo/src/string/simplify/NormalizeRotation.cpp @@ -6,6 +6,7 @@ */ #include "NormalizeRotation.h" +#include <registration/AlgoRegistration.hpp> namespace string { @@ -15,7 +16,7 @@ string::String NormalizeRotation::normalize(const string::String& string) { return dispatch(string.getData()); } -auto NormalizeRotationCyclicString = NormalizeRotation::RegistratorWrapper<string::CyclicString < >, string::CyclicString < >>(NormalizeRotation::normalize); +auto NormalizeRotationCyclicString = registration::OverloadRegister < NormalizeRotation, string::CyclicString < >, string::CyclicString < > > ( NormalizeRotation::normalize ); } /* namespace simplify */ diff --git a/alib2algo/src/stringology/exact/BoyerMoore.cpp b/alib2algo/src/stringology/exact/BoyerMoore.cpp index 3b51d1958e..567785fe90 100644 --- a/alib2algo/src/stringology/exact/BoyerMoore.cpp +++ b/alib2algo/src/stringology/exact/BoyerMoore.cpp @@ -6,6 +6,7 @@ */ #include "BoyerMoore.h" +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -15,7 +16,7 @@ std::set<unsigned> BoyerMoore::match(const string::String& subject, const string return dispatch(subject.getData(), pattern.getData()); } -auto BoyerMooreLinearStringLinearString = BoyerMoore::RegistratorWrapper<std::set<unsigned>, string::LinearString < >, string::LinearString < >>(BoyerMoore::match); +auto BoyerMooreLinearStringLinearString = registration::OverloadRegister < BoyerMoore, std::set < unsigned >, string::LinearString < >, string::LinearString < > > ( BoyerMoore::match ); } /* namespace exact */ diff --git a/alib2algo/src/stringology/exact/BoyerMooreHorspool.cpp b/alib2algo/src/stringology/exact/BoyerMooreHorspool.cpp index 71d1eeb506..0edac2ab71 100644 --- a/alib2algo/src/stringology/exact/BoyerMooreHorspool.cpp +++ b/alib2algo/src/stringology/exact/BoyerMooreHorspool.cpp @@ -6,6 +6,7 @@ */ #include "BoyerMooreHorspool.h" +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -15,7 +16,7 @@ std::set<unsigned> BoyerMooreHorspool::match(const string::String& subject, cons return dispatch(subject.getData(), pattern.getData()); } -auto BoyerMooreHorspoolLinearStringLinearString = BoyerMooreHorspool::RegistratorWrapper<std::set<unsigned>, string::LinearString < >, string::LinearString < >>(BoyerMooreHorspool::match); +auto BoyerMooreHorspoolLinearStringLinearString = registration::OverloadRegister < BoyerMooreHorspool, std::set < unsigned >, string::LinearString < >, string::LinearString < > > ( BoyerMooreHorspool::match ); } /* namespace exact */ diff --git a/alib2algo/src/stringology/exact/DeadZoneUsingBadCharacterShift.cpp b/alib2algo/src/stringology/exact/DeadZoneUsingBadCharacterShift.cpp index 5006c77bc4..1e065c73b3 100644 --- a/alib2algo/src/stringology/exact/DeadZoneUsingBadCharacterShift.cpp +++ b/alib2algo/src/stringology/exact/DeadZoneUsingBadCharacterShift.cpp @@ -6,6 +6,7 @@ */ #include "DeadZoneUsingBadCharacterShift.h" +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -15,7 +16,7 @@ std::set < unsigned > DeadZoneUsingBadCharacterShift::match ( const string::Stri return dispatch ( subject.getData ( ), pattern.getData ( ) ); } -auto DeadZoneUsingBadCharacterShiftLinearStringLinearString = DeadZoneUsingBadCharacterShift::RegistratorWrapper < std::set < unsigned >, string::LinearString < >, string::LinearString < > > ( DeadZoneUsingBadCharacterShift::match ); +auto DeadZoneUsingBadCharacterShiftLinearStringLinearString = registration::OverloadRegister < DeadZoneUsingBadCharacterShift, std::set < unsigned >, string::LinearString < >, string::LinearString < > > ( DeadZoneUsingBadCharacterShift::match ); } /* namespace exact */ diff --git a/alib2algo/src/stringology/exact/ExactFactorMatch.cpp b/alib2algo/src/stringology/exact/ExactFactorMatch.cpp index 3ad442f933..265cbf8c88 100644 --- a/alib2algo/src/stringology/exact/ExactFactorMatch.cpp +++ b/alib2algo/src/stringology/exact/ExactFactorMatch.cpp @@ -6,6 +6,7 @@ */ #include "ExactFactorMatch.h" +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -15,7 +16,7 @@ std::set < unsigned > ExactFactorMatch::match ( const string::String & subject, return dispatch ( subject.getData ( ), pattern.getData ( ) ); } -auto ExactFactorMatchLinearString = ExactFactorMatch::RegistratorWrapper < std::set < unsigned >, string::LinearString < > > ( ExactFactorMatch::match ); +auto ExactFactorMatchLinearString = registration::OverloadRegister < ExactFactorMatch, std::set < unsigned >, string::LinearString < > > ( ExactFactorMatch::match ); } /* namespace exact */ diff --git a/alib2algo/src/stringology/exact/ReversedBoyerMooreHorspool.cpp b/alib2algo/src/stringology/exact/ReversedBoyerMooreHorspool.cpp index 6b6d1d8804..57358def6e 100644 --- a/alib2algo/src/stringology/exact/ReversedBoyerMooreHorspool.cpp +++ b/alib2algo/src/stringology/exact/ReversedBoyerMooreHorspool.cpp @@ -6,6 +6,7 @@ */ #include "ReversedBoyerMooreHorspool.h" +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -15,7 +16,7 @@ std::set < unsigned > ReversedBoyerMooreHorspool::match ( const string::String & return dispatch ( subject.getData ( ), pattern.getData ( ) ); } -auto ReversedBoyerMooreHorpoolLinearStringLinearString = ReversedBoyerMooreHorspool::RegistratorWrapper < std::set < unsigned >, string::LinearString < >, string::LinearString < > > ( ReversedBoyerMooreHorspool::match ); +auto ReversedBoyerMooreHorpoolLinearStringLinearString = registration::OverloadRegister < ReversedBoyerMooreHorspool, std::set < unsigned >, string::LinearString < >, string::LinearString < > > ( ReversedBoyerMooreHorspool::match ); } /* namespace exact */ diff --git a/alib2algo/src/stringology/indexing/BitParallelIndexConstruction.cpp b/alib2algo/src/stringology/indexing/BitParallelIndexConstruction.cpp index ab1944e02b..0ff8dbd626 100644 --- a/alib2algo/src/stringology/indexing/BitParallelIndexConstruction.cpp +++ b/alib2algo/src/stringology/indexing/BitParallelIndexConstruction.cpp @@ -8,6 +8,7 @@ #include "BitParallelIndexConstruction.h" #include <string/LinearString.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -17,7 +18,7 @@ indexes::stringology::BitParallelIndex < DefaultSymbolType > BitParallelIndexCon return dispatch ( string.getData ( ) ); } -auto bitParallelIndexConstructionLinearString = BitParallelIndexConstruction::RegistratorWrapper < indexes::stringology::BitParallelIndex < DefaultSymbolType >, string::LinearString < > > ( BitParallelIndexConstruction::construct ); +auto bitParallelIndexConstructionLinearString = registration::OverloadRegister < BitParallelIndexConstruction, indexes::stringology::BitParallelIndex < DefaultSymbolType >, string::LinearString < > > ( BitParallelIndexConstruction::construct ); } /* namespace indexing */ diff --git a/alib2algo/src/stringology/indexing/CompressedBitParallelIndexConstruction.cpp b/alib2algo/src/stringology/indexing/CompressedBitParallelIndexConstruction.cpp index d88f00999c..1621e935b0 100644 --- a/alib2algo/src/stringology/indexing/CompressedBitParallelIndexConstruction.cpp +++ b/alib2algo/src/stringology/indexing/CompressedBitParallelIndexConstruction.cpp @@ -8,6 +8,7 @@ #include "CompressedBitParallelIndexConstruction.h" #include <string/LinearString.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -17,7 +18,7 @@ indexes::stringology::CompressedBitParallelIndex < DefaultSymbolType > Compresse return dispatch ( string.getData ( ) ); } -auto compressedCompressedBitParallelIndexConstructionLinearString = CompressedBitParallelIndexConstruction::RegistratorWrapper < indexes::stringology::CompressedBitParallelIndex < DefaultSymbolType >, string::LinearString < > > ( CompressedBitParallelIndexConstruction::construct ); +auto compressedCompressedBitParallelIndexConstructionLinearString = registration::OverloadRegister < CompressedBitParallelIndexConstruction, indexes::stringology::CompressedBitParallelIndex < DefaultSymbolType >, string::LinearString < > > ( CompressedBitParallelIndexConstruction::construct ); } /* namespace indexing */ diff --git a/alib2algo/src/stringology/indexing/ExactFactorOracleAutomaton.cpp b/alib2algo/src/stringology/indexing/ExactFactorOracleAutomaton.cpp index 459e1325d7..63ba8fdf81 100644 --- a/alib2algo/src/stringology/indexing/ExactFactorOracleAutomaton.cpp +++ b/alib2algo/src/stringology/indexing/ExactFactorOracleAutomaton.cpp @@ -4,6 +4,7 @@ #include "ExactFactorOracleAutomaton.h" #include <string/LinearString.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -53,7 +54,7 @@ void ExactFactorOracleAutomaton::oracleAddLetter ( automaton::DFA < > & oracle, supplyFunction.insert( { newState, supplyState } ); } -auto FactorOracleAutomatonLinearString = ExactFactorOracleAutomaton::RegistratorWrapper < automaton::DFA < >, string::LinearString < > > ( ExactFactorOracleAutomaton::construct ); +auto FactorOracleAutomatonLinearString = registration::OverloadRegister < ExactFactorOracleAutomaton, automaton::DFA < >, string::LinearString < > > ( ExactFactorOracleAutomaton::construct ); } /* namespace indexing */ diff --git a/alib2algo/src/stringology/indexing/ExactNondeterministicSubsequenceAutomaton.cpp b/alib2algo/src/stringology/indexing/ExactNondeterministicSubsequenceAutomaton.cpp index feb46bf22c..7a0c25b44b 100644 --- a/alib2algo/src/stringology/indexing/ExactNondeterministicSubsequenceAutomaton.cpp +++ b/alib2algo/src/stringology/indexing/ExactNondeterministicSubsequenceAutomaton.cpp @@ -6,6 +6,7 @@ */ #include "ExactNondeterministicSubsequenceAutomaton.h" +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -15,7 +16,7 @@ automaton::Automaton ExactNondeterministicSubsequenceAutomaton::construct(const return dispatch(text.getData()); } -auto ExactNondeterministicSubsequenceAutomatonLinearString = ExactNondeterministicSubsequenceAutomaton::RegistratorWrapper < automaton::EpsilonNFA < DefaultSymbolType, DefaultEpsilonType, unsigned >, string::LinearString < > > ( ExactNondeterministicSubsequenceAutomaton::construct ); +auto ExactNondeterministicSubsequenceAutomatonLinearString = registration::OverloadRegister < ExactNondeterministicSubsequenceAutomaton, automaton::EpsilonNFA < DefaultSymbolType, DefaultEpsilonType, unsigned >, string::LinearString < > > ( ExactNondeterministicSubsequenceAutomaton::construct ); } /* namespace indexing */ diff --git a/alib2algo/src/stringology/indexing/ExactSubsequenceAutomaton.cpp b/alib2algo/src/stringology/indexing/ExactSubsequenceAutomaton.cpp index 3da7a3dcd3..185498842f 100644 --- a/alib2algo/src/stringology/indexing/ExactSubsequenceAutomaton.cpp +++ b/alib2algo/src/stringology/indexing/ExactSubsequenceAutomaton.cpp @@ -6,6 +6,7 @@ */ #include "ExactSubsequenceAutomaton.h" +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -15,7 +16,7 @@ automaton::Automaton ExactSubsequenceAutomaton::construct(const string::String& return dispatch(text.getData()); } -auto ExactSubsequenceAutomatonLinearString = ExactSubsequenceAutomaton::RegistratorWrapper < automaton::DFA < DefaultSymbolType, unsigned >, string::LinearString < > > ( ExactSubsequenceAutomaton::construct ); +auto ExactSubsequenceAutomatonLinearString = registration::OverloadRegister < ExactSubsequenceAutomaton, automaton::DFA < DefaultSymbolType, unsigned >, string::LinearString < > > ( ExactSubsequenceAutomaton::construct ); } /* namespace indexing */ diff --git a/alib2algo/src/stringology/indexing/ExactSuffixAutomaton.cpp b/alib2algo/src/stringology/indexing/ExactSuffixAutomaton.cpp index 15d808a8a8..59f5f5706a 100644 --- a/alib2algo/src/stringology/indexing/ExactSuffixAutomaton.cpp +++ b/alib2algo/src/stringology/indexing/ExactSuffixAutomaton.cpp @@ -3,6 +3,7 @@ */ #include "ExactSuffixAutomaton.h" +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -81,7 +82,7 @@ void ExactSuffixAutomaton::suffixAutomatonAddSymbol ( automaton::DFA < > & suffi lastState = newState; } -auto SuffixAutomatonLinearString = ExactSuffixAutomaton::RegistratorWrapper < automaton::DFA < >, string::LinearString < > > ( ExactSuffixAutomaton::construct ); +auto SuffixAutomatonLinearString = registration::OverloadRegister < ExactSuffixAutomaton, automaton::DFA < >, string::LinearString < > > ( ExactSuffixAutomaton::construct ); } /* namespace indexing */ diff --git a/alib2algo/src/stringology/indexing/NondeterministicExactFactorAutomaton.cpp b/alib2algo/src/stringology/indexing/NondeterministicExactFactorAutomaton.cpp index 0fa8a91dc2..ca86dc7c6d 100644 --- a/alib2algo/src/stringology/indexing/NondeterministicExactFactorAutomaton.cpp +++ b/alib2algo/src/stringology/indexing/NondeterministicExactFactorAutomaton.cpp @@ -10,6 +10,7 @@ #include <string/Epsilon.h> #include <deque> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -19,7 +20,7 @@ automaton::Automaton NondeterministicExactFactorAutomaton::construct(const strin return dispatch(text.getData()); } -auto ExactFactorAutomatonLinearString = NondeterministicExactFactorAutomaton::RegistratorWrapper<automaton::EpsilonNFA < DefaultSymbolType, DefaultEpsilonType, unsigned >, string::LinearString < > >(NondeterministicExactFactorAutomaton::construct); +auto ExactFactorAutomatonLinearString = registration::OverloadRegister < NondeterministicExactFactorAutomaton, automaton::EpsilonNFA < DefaultSymbolType, DefaultEpsilonType, unsigned >, string::LinearString < > > ( NondeterministicExactFactorAutomaton::construct ); } /* namespace indexing */ diff --git a/alib2algo/src/stringology/indexing/NondeterministicExactSuffixAutomaton.cpp b/alib2algo/src/stringology/indexing/NondeterministicExactSuffixAutomaton.cpp index fa825f6d39..9e387658c1 100644 --- a/alib2algo/src/stringology/indexing/NondeterministicExactSuffixAutomaton.cpp +++ b/alib2algo/src/stringology/indexing/NondeterministicExactSuffixAutomaton.cpp @@ -3,6 +3,7 @@ */ #include "NondeterministicExactSuffixAutomaton.h" +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -29,7 +30,7 @@ automaton::EpsilonNFA < DefaultSymbolType, DefaultEpsilonType, unsigned > Nondet return nfaSuffixAutomaton; } -auto SuffixAutomatonNondeterministicLinearString = NondeterministicExactSuffixAutomaton::RegistratorWrapper < automaton::EpsilonNFA < DefaultSymbolType, DefaultEpsilonType, unsigned >, string::LinearString < > > ( NondeterministicExactSuffixAutomaton::construct ); +auto SuffixAutomatonNondeterministicLinearString = registration::OverloadRegister < NondeterministicExactSuffixAutomaton, automaton::EpsilonNFA < DefaultSymbolType, DefaultEpsilonType, unsigned >, string::LinearString < > > ( NondeterministicExactSuffixAutomaton::construct ); } /* namespace indexing */ diff --git a/alib2algo/src/stringology/indexing/PositionHeapNaive.cpp b/alib2algo/src/stringology/indexing/PositionHeapNaive.cpp index 0cf33b4968..e9dc4ffbfa 100644 --- a/alib2algo/src/stringology/indexing/PositionHeapNaive.cpp +++ b/alib2algo/src/stringology/indexing/PositionHeapNaive.cpp @@ -8,6 +8,7 @@ #include "PositionHeapNaive.h" #include <string/LinearString.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -17,7 +18,7 @@ indexes::stringology::PositionHeap < DefaultSymbolType > PositionHeapNaive::cons return dispatch ( string.getData ( ) ); } -auto positionHeapNaiveLinearString = PositionHeapNaive::RegistratorWrapper < indexes::stringology::PositionHeap < DefaultSymbolType >, string::LinearString < > > ( PositionHeapNaive::construct ); +auto positionHeapNaiveLinearString = registration::OverloadRegister < PositionHeapNaive, indexes::stringology::PositionHeap < DefaultSymbolType >, string::LinearString < > > ( PositionHeapNaive::construct ); } /* namespace indexing */ diff --git a/alib2algo/src/stringology/indexing/SuffixArrayNaive.cpp b/alib2algo/src/stringology/indexing/SuffixArrayNaive.cpp index b003e712e0..4a4d26a02c 100644 --- a/alib2algo/src/stringology/indexing/SuffixArrayNaive.cpp +++ b/alib2algo/src/stringology/indexing/SuffixArrayNaive.cpp @@ -8,6 +8,7 @@ #include "SuffixArrayNaive.h" #include <string/LinearString.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -17,7 +18,7 @@ indexes::stringology::SuffixArray < > SuffixArrayNaive::construct ( const string return dispatch ( string.getData ( ) ); } -auto suffixArrayNaiveLinearString = SuffixArrayNaive::RegistratorWrapper < indexes::stringology::SuffixArray < >, string::LinearString < > > ( SuffixArrayNaive::construct ); +auto suffixArrayNaiveLinearString = registration::OverloadRegister < SuffixArrayNaive, indexes::stringology::SuffixArray < >, string::LinearString < > > ( SuffixArrayNaive::construct ); } /* namespace indexing */ diff --git a/alib2algo/src/stringology/indexing/SuffixTrieNaive.cpp b/alib2algo/src/stringology/indexing/SuffixTrieNaive.cpp index c5bb33a5a7..82aa80eb7f 100644 --- a/alib2algo/src/stringology/indexing/SuffixTrieNaive.cpp +++ b/alib2algo/src/stringology/indexing/SuffixTrieNaive.cpp @@ -8,6 +8,7 @@ #include "SuffixTrieNaive.h" #include <string/LinearString.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -17,7 +18,7 @@ indexes::stringology::SuffixTrie < DefaultSymbolType > SuffixTrieNaive::construc return dispatch ( string.getData ( ) ); } -auto suffixTrieNaiveLinearString = SuffixTrieNaive::RegistratorWrapper < indexes::stringology::SuffixTrie < DefaultSymbolType >, string::LinearString < > > ( SuffixTrieNaive::construct ); +auto suffixTrieNaiveLinearString = registration::OverloadRegister < SuffixTrieNaive, indexes::stringology::SuffixTrie < DefaultSymbolType >, string::LinearString < > > ( SuffixTrieNaive::construct ); } /* namespace indexing */ diff --git a/alib2algo/src/stringology/matching/BNDMMatcherConstruction.cpp b/alib2algo/src/stringology/matching/BNDMMatcherConstruction.cpp index 01c752df57..30e4712a7e 100644 --- a/alib2algo/src/stringology/matching/BNDMMatcherConstruction.cpp +++ b/alib2algo/src/stringology/matching/BNDMMatcherConstruction.cpp @@ -8,6 +8,7 @@ #include "BNDMMatcherConstruction.h" #include <string/LinearString.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -17,7 +18,7 @@ indexes::stringology::BNDMMatcher < DefaultSymbolType > BNDMMatcherConstruction: return dispatch ( string.getData ( ) ); } -auto BNDMIndexConstructionLinearString = BNDMMatcherConstruction::RegistratorWrapper < indexes::stringology::BNDMMatcher < >, string::LinearString < > > ( BNDMMatcherConstruction::construct ); +auto BNDMIndexConstructionLinearString = registration::OverloadRegister < BNDMMatcherConstruction, indexes::stringology::BNDMMatcher < >, string::LinearString < > > ( BNDMMatcherConstruction::construct ); } /* namespace matching */ diff --git a/alib2algo/src/stringology/matching/DAWGMatcherConstruction.cpp b/alib2algo/src/stringology/matching/DAWGMatcherConstruction.cpp index 1a5268690e..3ed8a2c25a 100644 --- a/alib2algo/src/stringology/matching/DAWGMatcherConstruction.cpp +++ b/alib2algo/src/stringology/matching/DAWGMatcherConstruction.cpp @@ -4,6 +4,7 @@ #include "DAWGMatcherConstruction.h" #include <stringology/indexing/ExactSuffixAutomaton.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -21,7 +22,7 @@ automaton::DFA < > DAWGMatcherConstruction::construct ( const string::LinearStri return stringology::indexing::ExactSuffixAutomaton::construct ( reversedPattern ); } -auto DAWGMatcherConstructionLinearString = DAWGMatcherConstruction::RegistratorWrapper < automaton::DFA < >, string::LinearString < > > ( DAWGMatcherConstruction::construct ); +auto DAWGMatcherConstructionLinearString = registration::OverloadRegister < DAWGMatcherConstruction, automaton::DFA < >, string::LinearString < > > ( DAWGMatcherConstruction::construct ); } /* namespace matching */ diff --git a/alib2algo/src/stringology/matching/ExactMatchingAutomaton.cpp b/alib2algo/src/stringology/matching/ExactMatchingAutomaton.cpp index f7114e25c5..d176d08337 100644 --- a/alib2algo/src/stringology/matching/ExactMatchingAutomaton.cpp +++ b/alib2algo/src/stringology/matching/ExactMatchingAutomaton.cpp @@ -10,6 +10,7 @@ #include <string/Epsilon.h> #include <deque> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -19,7 +20,7 @@ automaton::Automaton ExactMatchingAutomaton::construct(const string::String& pat return dispatch(pattern.getData()); } -auto ExactMatchingAutomatonLinearString = ExactMatchingAutomaton::RegistratorWrapper<automaton::NFA < DefaultSymbolType, unsigned > , string::LinearString < > >(ExactMatchingAutomaton::construct); +auto ExactMatchingAutomatonLinearString = registration::OverloadRegister < ExactMatchingAutomaton, automaton::NFA < DefaultSymbolType, unsigned >, string::LinearString < > > ( ExactMatchingAutomaton::construct ); } /* namespace matching */ diff --git a/alib2algo/src/stringology/matching/NaiveDAWGMatcherConstruction.cpp b/alib2algo/src/stringology/matching/NaiveDAWGMatcherConstruction.cpp index c9f139a742..8812888071 100644 --- a/alib2algo/src/stringology/matching/NaiveDAWGMatcherConstruction.cpp +++ b/alib2algo/src/stringology/matching/NaiveDAWGMatcherConstruction.cpp @@ -7,6 +7,7 @@ #include <automaton/simplify/Minimize.h> #include <automaton/simplify/EpsilonRemoverIncoming.h> #include <stringology/indexing/NondeterministicExactSuffixAutomaton.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -27,7 +28,7 @@ automaton::DFA < DefaultSymbolType, std::set < unsigned > > NaiveDAWGMatcherCons } -auto NaiveDAWGMatcherConstructionLinearString = NaiveDAWGMatcherConstruction::RegistratorWrapper < automaton::DFA < DefaultSymbolType, std::set < unsigned > >, string::LinearString < > > ( NaiveDAWGMatcherConstruction::naiveConstruct ); +auto NaiveDAWGMatcherConstructionLinearString = registration::OverloadRegister < NaiveDAWGMatcherConstruction, automaton::DFA < DefaultSymbolType, std::set < unsigned > >, string::LinearString < > > ( NaiveDAWGMatcherConstruction::naiveConstruct ); } /* namespace matching */ diff --git a/alib2algo/src/stringology/matching/OracleMatcherConstruction.cpp b/alib2algo/src/stringology/matching/OracleMatcherConstruction.cpp index aa9b1f24dd..c345342bdc 100644 --- a/alib2algo/src/stringology/matching/OracleMatcherConstruction.cpp +++ b/alib2algo/src/stringology/matching/OracleMatcherConstruction.cpp @@ -4,6 +4,7 @@ #include "OracleMatcherConstruction.h" #include <stringology/indexing/ExactSuffixAutomaton.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -21,7 +22,7 @@ automaton::DFA < > OracleMatcherConstruction::construct ( const string::LinearSt return stringology::indexing::ExactSuffixAutomaton::construct ( reversedPattern ); } -auto OracleMatcherConstructionLinearString = OracleMatcherConstruction::RegistratorWrapper < automaton::DFA < >, string::LinearString < > > ( OracleMatcherConstruction::construct ); +auto OracleMatcherConstructionLinearString = registration::OverloadRegister < OracleMatcherConstruction, automaton::DFA < >, string::LinearString < > > ( OracleMatcherConstruction::construct ); } /* namespace matching */ diff --git a/alib2algo/src/stringology/matching/WideBNDMMatcherConstruction.cpp b/alib2algo/src/stringology/matching/WideBNDMMatcherConstruction.cpp index 1357d72957..5231f71f0c 100644 --- a/alib2algo/src/stringology/matching/WideBNDMMatcherConstruction.cpp +++ b/alib2algo/src/stringology/matching/WideBNDMMatcherConstruction.cpp @@ -8,6 +8,7 @@ #include "WideBNDMMatcherConstruction.h" #include <string/LinearString.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -17,7 +18,7 @@ indexes::stringology::BitParallelIndex < DefaultSymbolType > WideBNDMMatcherCons return dispatch ( string.getData ( ) ); } -auto WideBNDMIndexConstructionLinearString = WideBNDMMatcherConstruction::RegistratorWrapper < indexes::stringology::BitParallelIndex < DefaultSymbolType >, string::LinearString < > > ( WideBNDMMatcherConstruction::construct ); +auto WideBNDMIndexConstructionLinearString = registration::OverloadRegister < WideBNDMMatcherConstruction, indexes::stringology::BitParallelIndex < DefaultSymbolType >, string::LinearString < > > ( WideBNDMMatcherConstruction::construct ); } /* namespace matching */ diff --git a/alib2algo/src/stringology/properties/BackboneLength.cpp b/alib2algo/src/stringology/properties/BackboneLength.cpp index f1f9f2d3de..25189e865a 100644 --- a/alib2algo/src/stringology/properties/BackboneLength.cpp +++ b/alib2algo/src/stringology/properties/BackboneLength.cpp @@ -6,6 +6,7 @@ */ #include "BackboneLength.h" +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -15,7 +16,7 @@ unsigned BackboneLength::length ( const automaton::Automaton & automaton ) { return dispatch ( automaton.getData ( ) ); } -auto backboneLengthDFA = BackboneLength::RegistratorWrapper < unsigned, automaton::DFA < > > ( BackboneLength::length ); +auto backboneLengthDFA = registration::OverloadRegister < BackboneLength, unsigned, automaton::DFA < > > ( BackboneLength::length ); } /* namespace properties */ diff --git a/alib2algo/src/stringology/query/BNDMOccurrences.cpp b/alib2algo/src/stringology/query/BNDMOccurrences.cpp index d184d80aa4..fa0e65f776 100644 --- a/alib2algo/src/stringology/query/BNDMOccurrences.cpp +++ b/alib2algo/src/stringology/query/BNDMOccurrences.cpp @@ -8,6 +8,7 @@ #include "BNDMOccurrences.h" #include <string/LinearString.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -17,7 +18,7 @@ std::set < unsigned > BNDMOccurrences::query ( const indexes::stringology::BNDMM return dispatch ( pattern, subject.getData ( ) ); } -auto bndmOccurrencesLinearString = BNDMOccurrences::RegistratorWrapper < std::set < unsigned >, string::LinearString < > > ( BNDMOccurrences::query ); +auto bndmOccurrencesLinearString = registration::OverloadRegister < BNDMOccurrences, std::set < unsigned >, string::LinearString < > > ( BNDMOccurrences::query ); } /* namespace query */ diff --git a/alib2algo/src/stringology/query/BackwardDAWGMatching.cpp b/alib2algo/src/stringology/query/BackwardDAWGMatching.cpp index e93db0dd56..8f075f3eae 100644 --- a/alib2algo/src/stringology/query/BackwardDAWGMatching.cpp +++ b/alib2algo/src/stringology/query/BackwardDAWGMatching.cpp @@ -12,6 +12,7 @@ #include <algorithm> #include <map> #include <measure> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -62,7 +63,7 @@ std::set < unsigned > BackwardDAWGMatching::match ( const string::LinearString < return occ; } -auto BackwardDAWGMatchingLinearStringLinearString = BackwardDAWGMatching::RegistratorWrapper < std::set < unsigned >, string::LinearString < >, automaton::DFA < > > ( BackwardDAWGMatching::match ); +auto BackwardDAWGMatchingLinearStringLinearString = registration::OverloadRegister < BackwardDAWGMatching, std::set < unsigned >, string::LinearString < >, automaton::DFA < > > ( BackwardDAWGMatching::match ); } /* namespace query */ diff --git a/alib2algo/src/stringology/query/BackwardOracleMatching.cpp b/alib2algo/src/stringology/query/BackwardOracleMatching.cpp index 57da6ea3b5..a4f6b39222 100644 --- a/alib2algo/src/stringology/query/BackwardOracleMatching.cpp +++ b/alib2algo/src/stringology/query/BackwardOracleMatching.cpp @@ -12,6 +12,7 @@ #include <algorithm> #include <map> #include <measure> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -58,7 +59,7 @@ std::set < unsigned > BackwardOracleMatching::match ( const string::LinearString return occ; } -auto BackwardOracleMatchingLinearStringLinearString = BackwardOracleMatching::RegistratorWrapper < std::set < unsigned >, string::LinearString < >, automaton::DFA < > > ( BackwardOracleMatching::match ); +auto BackwardOracleMatchingLinearStringLinearString = registration::OverloadRegister < BackwardOracleMatching, std::set < unsigned >, string::LinearString < >, automaton::DFA < > > ( BackwardOracleMatching::match ); } /* namespace query */ diff --git a/alib2algo/src/stringology/query/BitParallelismFactors.cpp b/alib2algo/src/stringology/query/BitParallelismFactors.cpp index d2eb2f41cf..80720e9a33 100644 --- a/alib2algo/src/stringology/query/BitParallelismFactors.cpp +++ b/alib2algo/src/stringology/query/BitParallelismFactors.cpp @@ -8,6 +8,7 @@ #include "BitParallelismFactors.h" #include <string/LinearString.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -17,7 +18,7 @@ std::set < unsigned > BitParallelismFactors::query ( const indexes::stringology: return dispatch ( bitParallelIndex, string.getData ( ) ); } -auto BitParallelismFactorsLinearString = BitParallelismFactors::RegistratorWrapper < std::set < unsigned >, string::LinearString < > > ( BitParallelismFactors::query ); +auto BitParallelismFactorsLinearString = registration::OverloadRegister < BitParallelismFactors, std::set < unsigned >, string::LinearString < > > ( BitParallelismFactors::query ); } /* namespace query */ diff --git a/alib2algo/src/stringology/query/CompressedBitParallelismFactors.cpp b/alib2algo/src/stringology/query/CompressedBitParallelismFactors.cpp index d1eea5dd83..14e50e1b31 100644 --- a/alib2algo/src/stringology/query/CompressedBitParallelismFactors.cpp +++ b/alib2algo/src/stringology/query/CompressedBitParallelismFactors.cpp @@ -8,6 +8,7 @@ #include "CompressedBitParallelismFactors.h" #include <string/LinearString.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -17,7 +18,7 @@ std::set < unsigned > CompressedBitParallelismFactors::query ( const indexes::st return dispatch ( compressedBitParallelIndex, string.getData ( ) ); } -auto CompressedBitParallelismFactorsLinearString = CompressedBitParallelismFactors::RegistratorWrapper < std::set < unsigned >, string::LinearString < > > ( CompressedBitParallelismFactors::query ); +auto CompressedBitParallelismFactorsLinearString = registration::OverloadRegister < CompressedBitParallelismFactors, std::set < unsigned >, string::LinearString < > > ( CompressedBitParallelismFactors::query ); } /* namespace query */ diff --git a/alib2algo/src/stringology/query/PositionHeapFactors.cpp b/alib2algo/src/stringology/query/PositionHeapFactors.cpp index ce32e67fca..2433b6a1ae 100644 --- a/alib2algo/src/stringology/query/PositionHeapFactors.cpp +++ b/alib2algo/src/stringology/query/PositionHeapFactors.cpp @@ -8,6 +8,7 @@ #include "PositionHeapFactors.h" #include <string/LinearString.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -17,7 +18,7 @@ std::set < unsigned > PositionHeapFactors::query ( const indexes::stringology::P return dispatch ( positionHeap, string.getData ( ) ); } -auto PositionHeapFactorsLinearString = PositionHeapFactors::RegistratorWrapper < std::set < unsigned >, string::LinearString < > > ( PositionHeapFactors::query ); +auto PositionHeapFactorsLinearString = registration::OverloadRegister < PositionHeapFactors, std::set < unsigned >, string::LinearString < > > ( PositionHeapFactors::query ); } /* namespace query */ diff --git a/alib2algo/src/stringology/query/SuffixArrayFactors.cpp b/alib2algo/src/stringology/query/SuffixArrayFactors.cpp index 52d61687c4..dda1a69ca6 100644 --- a/alib2algo/src/stringology/query/SuffixArrayFactors.cpp +++ b/alib2algo/src/stringology/query/SuffixArrayFactors.cpp @@ -8,6 +8,7 @@ #include "SuffixArrayFactors.h" #include <string/LinearString.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -17,7 +18,7 @@ std::set < unsigned > SuffixArrayFactors::query ( const indexes::stringology::Su return dispatch ( suffixArray, string.getData ( ) ); } -auto SuffixArrayFactorsLinearString = SuffixArrayFactors::RegistratorWrapper < std::set < unsigned >, string::LinearString < > > ( SuffixArrayFactors::query ); +auto SuffixArrayFactorsLinearString = registration::OverloadRegister < SuffixArrayFactors, std::set < unsigned >, string::LinearString < > > ( SuffixArrayFactors::query ); } /* namespace query */ diff --git a/alib2algo/src/stringology/query/SuffixTrieFactors.cpp b/alib2algo/src/stringology/query/SuffixTrieFactors.cpp index c47ad35bd8..4c2fea5f5d 100644 --- a/alib2algo/src/stringology/query/SuffixTrieFactors.cpp +++ b/alib2algo/src/stringology/query/SuffixTrieFactors.cpp @@ -8,6 +8,7 @@ #include "SuffixTrieFactors.h" #include <string/LinearString.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -17,7 +18,7 @@ std::set < unsigned > SuffixTrieFactors::query ( const indexes::stringology::Suf return dispatch ( suffixTrie, string.getData ( ) ); } -auto SuffixTrieFactorsLinearString = SuffixTrieFactors::RegistratorWrapper < std::set < unsigned >, string::LinearString < > > ( SuffixTrieFactors::query ); +auto SuffixTrieFactorsLinearString = registration::OverloadRegister < SuffixTrieFactors, std::set < unsigned >, string::LinearString < > > ( SuffixTrieFactors::query ); } /* namespace query */ diff --git a/alib2algo/src/stringology/query/WideBNDMOccurrences.cpp b/alib2algo/src/stringology/query/WideBNDMOccurrences.cpp index e028f64898..c29332bdba 100644 --- a/alib2algo/src/stringology/query/WideBNDMOccurrences.cpp +++ b/alib2algo/src/stringology/query/WideBNDMOccurrences.cpp @@ -8,6 +8,7 @@ #include "WideBNDMOccurrences.h" #include <string/LinearString.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -17,7 +18,7 @@ std::set < unsigned > WideBNDMOccurrences::query ( const indexes::stringology::B return dispatch ( pattern, subject.getData ( ) ); } -auto wideBNDMOccurrencesLinearString = WideBNDMOccurrences::RegistratorWrapper < std::set < unsigned >, string::LinearString < > > ( WideBNDMOccurrences::query ); +auto wideBNDMOccurrencesLinearString = registration::OverloadRegister < WideBNDMOccurrences, std::set < unsigned >, string::LinearString < > > ( WideBNDMOccurrences::query ); } /* namespace query */ diff --git a/alib2algo/src/tree/NormalizeTreeLabels.cpp b/alib2algo/src/tree/NormalizeTreeLabels.cpp index 26b509933e..ad56aaeeb2 100644 --- a/alib2algo/src/tree/NormalizeTreeLabels.cpp +++ b/alib2algo/src/tree/NormalizeTreeLabels.cpp @@ -7,6 +7,7 @@ #include "NormalizeTreeLabels.h" #include <tree/Tree.h> +#include <registration/AlgoRegistration.hpp> namespace tree { @@ -14,6 +15,6 @@ tree::Tree NormalizeTreeLabels::normalize ( const tree::Tree & tree ) { return dispatch ( tree.getData ( ) ); } -auto NormalizeTreeLabelsRankedTree = NormalizeTreeLabels::RegistratorWrapper < tree::RankedTree < unsigned, DefaultRankType >, tree::RankedTree < > > ( NormalizeTreeLabels::normalize ); +auto NormalizeTreeLabelsRankedTree = registration::OverloadRegister < NormalizeTreeLabels, tree::RankedTree < unsigned, DefaultRankType >, tree::RankedTree < > > ( NormalizeTreeLabels::normalize ); } /* namespace tree */ diff --git a/alib2algo/src/tree/properties/BadCharacterShiftTable.cpp b/alib2algo/src/tree/properties/BadCharacterShiftTable.cpp index 413c76d9d3..8ec1c7e51b 100644 --- a/alib2algo/src/tree/properties/BadCharacterShiftTable.cpp +++ b/alib2algo/src/tree/properties/BadCharacterShiftTable.cpp @@ -9,6 +9,7 @@ #include <tree/ranked/PrefixRankedBarPattern.h> #include <tree/ranked/PrefixRankedBarNonlinearPattern.h> +#include <registration/AlgoRegistration.hpp> namespace tree { @@ -18,8 +19,8 @@ std::map < std::ranked_symbol < >, size_t > BadCharacterShiftTable::bcs ( const return dispatch ( pattern.getData ( ) ); } -auto BadCharacterShiftTablePrefixRankedBarPattern = BadCharacterShiftTable::RegistratorWrapper < std::map < std::ranked_symbol < >, size_t >, tree::PrefixRankedBarPattern < > > ( BadCharacterShiftTable::bcs ); -auto BadCharacterShiftTablePrefixRankedBarNonlinearPattern = BadCharacterShiftTable::RegistratorWrapper < std::map < std::ranked_symbol < >, size_t >, tree::PrefixRankedBarNonlinearPattern < > > ( BadCharacterShiftTable::bcs ); +auto BadCharacterShiftTablePrefixRankedBarPattern = registration::OverloadRegister < BadCharacterShiftTable, std::map < std::ranked_symbol < >, size_t >, tree::PrefixRankedBarPattern < > > ( BadCharacterShiftTable::bcs ); +auto BadCharacterShiftTablePrefixRankedBarNonlinearPattern = registration::OverloadRegister < BadCharacterShiftTable, std::map < std::ranked_symbol < >, size_t >, tree::PrefixRankedBarNonlinearPattern < > > ( BadCharacterShiftTable::bcs ); } /* namespace properties */ diff --git a/alib2algo/src/tree/properties/BorderArrayNaive.cpp b/alib2algo/src/tree/properties/BorderArrayNaive.cpp index 8163b735d9..38b4061d2c 100644 --- a/alib2algo/src/tree/properties/BorderArrayNaive.cpp +++ b/alib2algo/src/tree/properties/BorderArrayNaive.cpp @@ -6,6 +6,7 @@ */ #include "BorderArrayNaive.h" +#include <registration/AlgoRegistration.hpp> namespace tree { @@ -15,8 +16,8 @@ std::vector < size_t > BorderArrayNaive::ba ( const tree::Tree & pattern ) { return dispatch ( pattern.getData ( ) ); } -auto BorderArrayPrefixRankedBarPattern = BorderArrayNaive::RegistratorWrapper < std::vector < size_t >, tree::PrefixRankedBarPattern < > > ( BorderArrayNaive::ba ); -auto BorderArrayPrefixRankedPattern = BorderArrayNaive::RegistratorWrapper < std::vector < size_t >, tree::PrefixRankedPattern < > > ( BorderArrayNaive::ba ); +auto BorderArrayPrefixRankedBarPattern = registration::OverloadRegister < BorderArrayNaive, std::vector < size_t >, tree::PrefixRankedBarPattern < > > ( BorderArrayNaive::ba ); +auto BorderArrayPrefixRankedPattern = registration::OverloadRegister < BorderArrayNaive, std::vector < size_t >, tree::PrefixRankedPattern < > > ( BorderArrayNaive::ba ); } /* namespace properties */ diff --git a/alib2algo/src/tree/properties/ExactSubtreeRepeats.cpp b/alib2algo/src/tree/properties/ExactSubtreeRepeats.cpp index dbf6c3cd59..fda17f58fc 100644 --- a/alib2algo/src/tree/properties/ExactSubtreeRepeats.cpp +++ b/alib2algo/src/tree/properties/ExactSubtreeRepeats.cpp @@ -7,6 +7,7 @@ #include "ExactSubtreeRepeats.h" #include <tree/Tree.h> +#include <registration/AlgoRegistration.hpp> namespace tree { @@ -16,7 +17,7 @@ tree::Tree ExactSubtreeRepeats::repeats ( const tree::Tree & tree ) { return dispatch ( tree.getData ( ) ); } -auto ExactRepeatsPostfixRankedTree = ExactSubtreeRepeats::RegistratorWrapper < tree::PostfixRankedTree < unsigned, DefaultRankType >, tree::PostfixRankedTree < > > ( ExactSubtreeRepeats::repeats ); +auto ExactRepeatsPostfixRankedTree = registration::OverloadRegister < ExactSubtreeRepeats, tree::PostfixRankedTree < unsigned, DefaultRankType >, tree::PostfixRankedTree < > > ( ExactSubtreeRepeats::repeats ); } /* namespace properties */ diff --git a/alib2algo/src/tree/properties/ExactSubtreeRepeatsNaive.cpp b/alib2algo/src/tree/properties/ExactSubtreeRepeatsNaive.cpp index 8c8f547453..4f8a62cb2a 100644 --- a/alib2algo/src/tree/properties/ExactSubtreeRepeatsNaive.cpp +++ b/alib2algo/src/tree/properties/ExactSubtreeRepeatsNaive.cpp @@ -7,6 +7,7 @@ #include "ExactSubtreeRepeatsNaive.h" #include <tree/Tree.h> +#include <registration/AlgoRegistration.hpp> namespace tree { @@ -16,10 +17,10 @@ tree::Tree ExactSubtreeRepeatsNaive::repeats ( const tree::Tree & tree ) { return dispatch ( tree.getData ( ) ); } -auto ExactRepeatsNaiveRankedTree = ExactSubtreeRepeatsNaive::RegistratorWrapper < tree::RankedTree < unsigned, DefaultRankType >, tree::RankedTree < > > ( ExactSubtreeRepeatsNaive::repeats ); -auto ExactRepeatsNaivePrefixRankedTree = ExactSubtreeRepeatsNaive::RegistratorWrapper < tree::PrefixRankedTree < unsigned, DefaultRankType >, tree::PrefixRankedTree < > > ( ExactSubtreeRepeatsNaive::repeats ); -auto ExactRepeatsNaivePostfixRankedTree = ExactSubtreeRepeatsNaive::RegistratorWrapper < tree::PostfixRankedTree < unsigned, DefaultRankType >, tree::PostfixRankedTree < > > ( ExactSubtreeRepeatsNaive::repeats ); -auto ExactRepeatsNaivePrefixRankedBarTree = ExactSubtreeRepeatsNaive::RegistratorWrapper < tree::PrefixRankedBarTree < unsigned, DefaultRankType >, tree::PrefixRankedBarTree < > > ( ExactSubtreeRepeatsNaive::repeats ); +auto ExactRepeatsNaiveRankedTree = registration::OverloadRegister < ExactSubtreeRepeatsNaive, tree::RankedTree < unsigned, DefaultRankType >, tree::RankedTree < > > ( ExactSubtreeRepeatsNaive::repeats ); +auto ExactRepeatsNaivePrefixRankedTree = registration::OverloadRegister < ExactSubtreeRepeatsNaive, tree::PrefixRankedTree < unsigned, DefaultRankType >, tree::PrefixRankedTree < > > ( ExactSubtreeRepeatsNaive::repeats ); +auto ExactRepeatsNaivePostfixRankedTree = registration::OverloadRegister < ExactSubtreeRepeatsNaive, tree::PostfixRankedTree < unsigned, DefaultRankType >, tree::PostfixRankedTree < > > ( ExactSubtreeRepeatsNaive::repeats ); +auto ExactRepeatsNaivePrefixRankedBarTree = registration::OverloadRegister < ExactSubtreeRepeatsNaive, tree::PrefixRankedBarTree < unsigned, DefaultRankType >, tree::PrefixRankedBarTree < > > ( ExactSubtreeRepeatsNaive::repeats ); } /* namespace properties */ diff --git a/alib2algo/src/tree/properties/ReversedBadCharacterShiftTable.cpp b/alib2algo/src/tree/properties/ReversedBadCharacterShiftTable.cpp index dd9f293170..c1e4f0d9e3 100644 --- a/alib2algo/src/tree/properties/ReversedBadCharacterShiftTable.cpp +++ b/alib2algo/src/tree/properties/ReversedBadCharacterShiftTable.cpp @@ -6,6 +6,7 @@ */ #include "ReversedBadCharacterShiftTable.h" +#include <registration/AlgoRegistration.hpp> namespace tree { @@ -15,10 +16,10 @@ std::map < std::ranked_symbol < >, size_t > ReversedBadCharacterShiftTable::bcs return dispatch ( pattern.getData ( ) ); } -auto ReversedBadCharacterShiftTablePrefixRankedBarPattern = ReversedBadCharacterShiftTable::RegistratorWrapper < std::map < std::ranked_symbol < >, size_t >, tree::PrefixRankedBarPattern < > > ( ReversedBadCharacterShiftTable::bcs ); -auto ReversedBadCharacterShiftTablePrefixRankedBarNonlinearPattern = ReversedBadCharacterShiftTable::RegistratorWrapper < std::map < std::ranked_symbol < >, size_t >, tree::PrefixRankedBarNonlinearPattern < > > ( ReversedBadCharacterShiftTable::bcs ); -auto ReversedBadCharacterShiftTablePrefixRankedPattern = ReversedBadCharacterShiftTable::RegistratorWrapper < std::map < std::ranked_symbol < >, size_t >, tree::PrefixRankedPattern < > > ( ReversedBadCharacterShiftTable::bcs ); -auto ReversedBadCharacterShiftTablePrefixRankedNonlinearPattern = ReversedBadCharacterShiftTable::RegistratorWrapper < std::map < std::ranked_symbol < >, size_t >, tree::PrefixRankedNonlinearPattern < > > ( ReversedBadCharacterShiftTable::bcs ); +auto ReversedBadCharacterShiftTablePrefixRankedBarPattern = registration::OverloadRegister < ReversedBadCharacterShiftTable, std::map < std::ranked_symbol < >, size_t >, tree::PrefixRankedBarPattern < > > ( ReversedBadCharacterShiftTable::bcs ); +auto ReversedBadCharacterShiftTablePrefixRankedBarNonlinearPattern = registration::OverloadRegister < ReversedBadCharacterShiftTable, std::map < std::ranked_symbol < >, size_t >, tree::PrefixRankedBarNonlinearPattern < > > ( ReversedBadCharacterShiftTable::bcs ); +auto ReversedBadCharacterShiftTablePrefixRankedPattern = registration::OverloadRegister < ReversedBadCharacterShiftTable, std::map < std::ranked_symbol < >, size_t >, tree::PrefixRankedPattern < > > ( ReversedBadCharacterShiftTable::bcs ); +auto ReversedBadCharacterShiftTablePrefixRankedNonlinearPattern = registration::OverloadRegister < ReversedBadCharacterShiftTable, std::map < std::ranked_symbol < >, size_t >, tree::PrefixRankedNonlinearPattern < > > ( ReversedBadCharacterShiftTable::bcs ); } /* namespace properties */ diff --git a/alib2algo/src/tree/properties/SubtreeJumpTable.cpp b/alib2algo/src/tree/properties/SubtreeJumpTable.cpp index cd756d6f64..2ecbcc7d62 100644 --- a/alib2algo/src/tree/properties/SubtreeJumpTable.cpp +++ b/alib2algo/src/tree/properties/SubtreeJumpTable.cpp @@ -6,6 +6,7 @@ */ #include "SubtreeJumpTable.h" +#include <registration/AlgoRegistration.hpp> namespace tree { @@ -15,10 +16,10 @@ std::vector < int > SubtreeJumpTable::compute ( const tree::RankedTreeWrapper & return dispatch ( subject.getData ( ) ); } -auto SubtreeSizesPrefixRankedBarTree = SubtreeJumpTable::RegistratorWrapper < std::vector < int >, tree::PrefixRankedBarTree < > > ( SubtreeJumpTable::compute ); -auto SubtreeSizesPrefixRankedBarPattern = SubtreeJumpTable::RegistratorWrapper < std::vector < int >, tree::PrefixRankedBarPattern < > > ( SubtreeJumpTable::compute ); -auto SubtreeSizesPrefixRankedTree = SubtreeJumpTable::RegistratorWrapper < std::vector < int >, tree::PrefixRankedTree < > > ( SubtreeJumpTable::compute ); -auto SubtreeSizesPrefixRankedPattern = SubtreeJumpTable::RegistratorWrapper < std::vector < int >, tree::PrefixRankedPattern < > > ( SubtreeJumpTable::compute ); +auto SubtreeSizesPrefixRankedBarTree = registration::OverloadRegister < SubtreeJumpTable, std::vector < int >, tree::PrefixRankedBarTree < > > ( SubtreeJumpTable::compute ); +auto SubtreeSizesPrefixRankedBarPattern = registration::OverloadRegister < SubtreeJumpTable, std::vector < int >, tree::PrefixRankedBarPattern < > > ( SubtreeJumpTable::compute ); +auto SubtreeSizesPrefixRankedTree = registration::OverloadRegister < SubtreeJumpTable, std::vector < int >, tree::PrefixRankedTree < > > ( SubtreeJumpTable::compute ); +auto SubtreeSizesPrefixRankedPattern = registration::OverloadRegister < SubtreeJumpTable, std::vector < int >, tree::PrefixRankedPattern < > > ( SubtreeJumpTable::compute ); } /* namespace properties */ diff --git a/alib2algo_experimental/src/grammar/parsing/DeterministicLL1Grammar.cpp b/alib2algo_experimental/src/grammar/parsing/DeterministicLL1Grammar.cpp index 686e3de703..eefcd92fdb 100644 --- a/alib2algo_experimental/src/grammar/parsing/DeterministicLL1Grammar.cpp +++ b/alib2algo_experimental/src/grammar/parsing/DeterministicLL1Grammar.cpp @@ -15,6 +15,7 @@ #include <algorithm> #include <grammar/properties/RecursiveNonterminal.h> +#include <registration/AlgoRegistration.hpp> namespace grammar { @@ -79,7 +80,7 @@ grammar::CFG < > DeterministicLL1Grammar::convert ( const grammar::CFG < > & par } } -auto DeterministicLL1GrammarCFG = DeterministicLL1Grammar::RegistratorWrapper < grammar::CFG < >, grammar::CFG < > > ( DeterministicLL1Grammar::convert ); +auto DeterministicLL1GrammarCFG = registration::OverloadRegister < DeterministicLL1Grammar, grammar::CFG < >, grammar::CFG < > > ( DeterministicLL1Grammar::convert ); grammar::Grammar DeterministicLL1Grammar::convert ( const grammar::Grammar & grammar ) { return dispatch ( grammar.getData ( ) ); diff --git a/alib2algo_experimental/src/grammar/parsing/First.cpp b/alib2algo_experimental/src/grammar/parsing/First.cpp index 9e736b686e..19cd4f71b9 100644 --- a/alib2algo_experimental/src/grammar/parsing/First.cpp +++ b/alib2algo_experimental/src/grammar/parsing/First.cpp @@ -17,6 +17,7 @@ #include <grammar/Regular/RightLG.h> #include <grammar/Regular/RightRG.h> #include <exception/CommonException.h> +#include <registration/AlgoRegistration.hpp> namespace grammar { @@ -104,29 +105,29 @@ std::set < std::variant < DefaultSymbolType, string::Epsilon < > > > First::firs return first ( grammar.getTerminalAlphabet ( ), grammar.getNonterminalAlphabet ( ), firstNt, rhs ); } -auto FirstCFG = FirstBase1::RegistratorWrapper < FirstResult1, grammar::CFG < > > ( First::first ); -auto FirstEpsilonFreeCFG = FirstBase1::RegistratorWrapper < FirstResult1, grammar::EpsilonFreeCFG < > > ( First::first ); -auto FirstGNF = FirstBase1::RegistratorWrapper < FirstResult1, grammar::GNF < > > ( First::first ); -auto FirstCNF = FirstBase1::RegistratorWrapper < FirstResult1, grammar::CNF < > > ( First::first ); -auto FirstLG = FirstBase1::RegistratorWrapper < FirstResult1, grammar::LG < > > ( First::first ); -auto FirstLeftLG = FirstBase1::RegistratorWrapper < FirstResult1, grammar::LeftLG < > > ( First::first ); -auto FirstLeftRG = FirstBase1::RegistratorWrapper < FirstResult1, grammar::LeftRG < > > ( First::first ); -auto FirstRightLG = FirstBase1::RegistratorWrapper < FirstResult1, grammar::RightLG < > > ( First::first ); -auto FirstRightRG = FirstBase1::RegistratorWrapper < FirstResult1, grammar::RightRG < > > ( First::first ); +auto FirstCFG = registration::OverloadRegister < FirstBase1, FirstResult1, grammar::CFG < > > ( First::first ); +auto FirstEpsilonFreeCFG = registration::OverloadRegister < FirstBase1, FirstResult1, grammar::EpsilonFreeCFG < > > ( First::first ); +auto FirstGNF = registration::OverloadRegister < FirstBase1, FirstResult1, grammar::GNF < > > ( First::first ); +auto FirstCNF = registration::OverloadRegister < FirstBase1, FirstResult1, grammar::CNF < > > ( First::first ); +auto FirstLG = registration::OverloadRegister < FirstBase1, FirstResult1, grammar::LG < > > ( First::first ); +auto FirstLeftLG = registration::OverloadRegister < FirstBase1, FirstResult1, grammar::LeftLG < > > ( First::first ); +auto FirstLeftRG = registration::OverloadRegister < FirstBase1, FirstResult1, grammar::LeftRG < > > ( First::first ); +auto FirstRightLG = registration::OverloadRegister < FirstBase1, FirstResult1, grammar::RightLG < > > ( First::first ); +auto FirstRightRG = registration::OverloadRegister < FirstBase1, FirstResult1, grammar::RightRG < > > ( First::first ); std::map < std::vector < DefaultSymbolType >, std::set < std::variant < DefaultSymbolType, string::Epsilon < > > > > First::first ( const grammar::Grammar & grammar ) { return FirstBase1::dispatch ( grammar.getData ( ) ); } -auto FirstCFG2 = FirstBase2::RegistratorWrapper < FirstResult2, grammar::CFG < > > ( First::first ); -auto FirstEpsilonFreeCFG2 = FirstBase2::RegistratorWrapper < FirstResult2, grammar::EpsilonFreeCFG < > > ( First::first ); -auto FirstGNF2 = FirstBase2::RegistratorWrapper < FirstResult2, grammar::GNF < > > ( First::first ); -auto FirstCNF2 = FirstBase2::RegistratorWrapper < FirstResult2, grammar::CNF < > > ( First::first ); -auto FirstLG2 = FirstBase2::RegistratorWrapper < FirstResult2, grammar::LG < > > ( First::first ); -auto FirstLeftLG2 = FirstBase2::RegistratorWrapper < FirstResult2, grammar::LeftLG < > > ( First::first ); -auto FirstLeftRG2 = FirstBase2::RegistratorWrapper < FirstResult2, grammar::LeftRG < > > ( First::first ); -auto FirstRightLG2 = FirstBase2::RegistratorWrapper < FirstResult2, grammar::RightLG < > > ( First::first ); -auto FirstRightRG2 = FirstBase2::RegistratorWrapper < FirstResult2, grammar::RightRG < > > ( First::first ); +auto FirstCFG2 = registration::OverloadRegister < FirstBase2, FirstResult2, grammar::CFG < > > ( First::first ); +auto FirstEpsilonFreeCFG2 = registration::OverloadRegister < FirstBase2, FirstResult2, grammar::EpsilonFreeCFG < > > ( First::first ); +auto FirstGNF2 = registration::OverloadRegister < FirstBase2, FirstResult2, grammar::GNF < > > ( First::first ); +auto FirstCNF2 = registration::OverloadRegister < FirstBase2, FirstResult2, grammar::CNF < > > ( First::first ); +auto FirstLG2 = registration::OverloadRegister < FirstBase2, FirstResult2, grammar::LG < > > ( First::first ); +auto FirstLeftLG2 = registration::OverloadRegister < FirstBase2, FirstResult2, grammar::LeftLG < > > ( First::first ); +auto FirstLeftRG2 = registration::OverloadRegister < FirstBase2, FirstResult2, grammar::LeftRG < > > ( First::first ); +auto FirstRightLG2 = registration::OverloadRegister < FirstBase2, FirstResult2, grammar::RightLG < > > ( First::first ); +auto FirstRightRG2 = registration::OverloadRegister < FirstBase2, FirstResult2, grammar::RightRG < > > ( First::first ); std::set < std::variant < DefaultSymbolType, string::Epsilon < > > > First::first ( const grammar::Grammar & grammar, const std::vector < DefaultSymbolType > & rhs ) { return FirstBase2::dispatch ( grammar.getData ( ), rhs ); diff --git a/alib2algo_experimental/src/grammar/parsing/Follow.cpp b/alib2algo_experimental/src/grammar/parsing/Follow.cpp index a75ecc831e..05e63a8b97 100644 --- a/alib2algo_experimental/src/grammar/parsing/Follow.cpp +++ b/alib2algo_experimental/src/grammar/parsing/Follow.cpp @@ -21,6 +21,7 @@ #include <grammar/Regular/RightLG.h> #include <grammar/Regular/RightRG.h> #include <exception/CommonException.h> +#include <registration/AlgoRegistration.hpp> namespace grammar { @@ -92,29 +93,29 @@ std::set < std::variant < DefaultSymbolType, string::Epsilon < > > > Follow::fol return follow ( grammar )[nt]; } -auto FollowCFG = FollowBase1::RegistratorWrapper < FollowResult1, grammar::CFG < > > ( Follow::follow ); -auto FollowEpsilonFreeCFG = FollowBase1::RegistratorWrapper < FollowResult1, grammar::EpsilonFreeCFG < > > ( Follow::follow ); -auto FollowGNF = FollowBase1::RegistratorWrapper < FollowResult1, grammar::GNF < > > ( Follow::follow ); -auto FollowCNF = FollowBase1::RegistratorWrapper < FollowResult1, grammar::CNF < > > ( Follow::follow ); -auto FollowLG = FollowBase1::RegistratorWrapper < FollowResult1, grammar::LG < > > ( Follow::follow ); -auto FollowLeftLG = FollowBase1::RegistratorWrapper < FollowResult1, grammar::LeftLG < > > ( Follow::follow ); -auto FollowLeftRG = FollowBase1::RegistratorWrapper < FollowResult1, grammar::LeftRG < > > ( Follow::follow ); -auto FollowRightLG = FollowBase1::RegistratorWrapper < FollowResult1, grammar::RightLG < > > ( Follow::follow ); -auto FollowRightRG = FollowBase1::RegistratorWrapper < FollowResult1, grammar::RightRG < > > ( Follow::follow ); +auto FollowCFG = registration::OverloadRegister < FollowBase1, FollowResult1, grammar::CFG < > > ( Follow::follow ); +auto FollowEpsilonFreeCFG = registration::OverloadRegister < FollowBase1, FollowResult1, grammar::EpsilonFreeCFG < > > ( Follow::follow ); +auto FollowGNF = registration::OverloadRegister < FollowBase1, FollowResult1, grammar::GNF < > > ( Follow::follow ); +auto FollowCNF = registration::OverloadRegister < FollowBase1, FollowResult1, grammar::CNF < > > ( Follow::follow ); +auto FollowLG = registration::OverloadRegister < FollowBase1, FollowResult1, grammar::LG < > > ( Follow::follow ); +auto FollowLeftLG = registration::OverloadRegister < FollowBase1, FollowResult1, grammar::LeftLG < > > ( Follow::follow ); +auto FollowLeftRG = registration::OverloadRegister < FollowBase1, FollowResult1, grammar::LeftRG < > > ( Follow::follow ); +auto FollowRightLG = registration::OverloadRegister < FollowBase1, FollowResult1, grammar::RightLG < > > ( Follow::follow ); +auto FollowRightRG = registration::OverloadRegister < FollowBase1, FollowResult1, grammar::RightRG < > > ( Follow::follow ); std::map < DefaultSymbolType, std::set < std::variant < DefaultSymbolType, string::Epsilon < > > > > Follow::follow ( const grammar::Grammar & grammar ) { return FollowBase1::dispatch ( grammar.getData ( ) ); } -auto FollowCFG2 = FollowBase2::RegistratorWrapper < FollowResult2, grammar::CFG < > > ( Follow::follow ); -auto FollowEpsilonFreeCFG2 = FollowBase2::RegistratorWrapper < FollowResult2, grammar::EpsilonFreeCFG < > > ( Follow::follow ); -auto FollowGNF2 = FollowBase2::RegistratorWrapper < FollowResult2, grammar::GNF < > > ( Follow::follow ); -auto FollowCNF2 = FollowBase2::RegistratorWrapper < FollowResult2, grammar::CNF < > > ( Follow::follow ); -auto FollowLG2 = FollowBase2::RegistratorWrapper < FollowResult2, grammar::LG < > > ( Follow::follow ); -auto FollowLeftLG2 = FollowBase2::RegistratorWrapper < FollowResult2, grammar::LeftLG < > > ( Follow::follow ); -auto FollowLeftRG2 = FollowBase2::RegistratorWrapper < FollowResult2, grammar::LeftRG < > > ( Follow::follow ); -auto FollowRightLG2 = FollowBase2::RegistratorWrapper < FollowResult2, grammar::RightLG < > > ( Follow::follow ); -auto FollowRightRG2 = FollowBase2::RegistratorWrapper < FollowResult2, grammar::RightRG < > > ( Follow::follow ); +auto FollowCFG2 = registration::OverloadRegister < FollowBase2, FollowResult2, grammar::CFG < > > ( Follow::follow ); +auto FollowEpsilonFreeCFG2 = registration::OverloadRegister < FollowBase2, FollowResult2, grammar::EpsilonFreeCFG < > > ( Follow::follow ); +auto FollowGNF2 = registration::OverloadRegister < FollowBase2, FollowResult2, grammar::GNF < > > ( Follow::follow ); +auto FollowCNF2 = registration::OverloadRegister < FollowBase2, FollowResult2, grammar::CNF < > > ( Follow::follow ); +auto FollowLG2 = registration::OverloadRegister < FollowBase2, FollowResult2, grammar::LG < > > ( Follow::follow ); +auto FollowLeftLG2 = registration::OverloadRegister < FollowBase2, FollowResult2, grammar::LeftLG < > > ( Follow::follow ); +auto FollowLeftRG2 = registration::OverloadRegister < FollowBase2, FollowResult2, grammar::LeftRG < > > ( Follow::follow ); +auto FollowRightLG2 = registration::OverloadRegister < FollowBase2, FollowResult2, grammar::RightLG < > > ( Follow::follow ); +auto FollowRightRG2 = registration::OverloadRegister < FollowBase2, FollowResult2, grammar::RightRG < > > ( Follow::follow ); std::set < std::variant < DefaultSymbolType, string::Epsilon < > > > Follow::follow ( const grammar::Grammar & grammar, const DefaultSymbolType & nt ) { return FollowBase2::dispatch ( grammar.getData ( ), nt ); diff --git a/alib2algo_experimental/src/grammar/parsing/LL1ParseTable.cpp b/alib2algo_experimental/src/grammar/parsing/LL1ParseTable.cpp index 6d3e45f867..2af69eb5be 100644 --- a/alib2algo_experimental/src/grammar/parsing/LL1ParseTable.cpp +++ b/alib2algo_experimental/src/grammar/parsing/LL1ParseTable.cpp @@ -18,6 +18,7 @@ #include <grammar/Regular/LeftRG.h> #include <grammar/Regular/RightLG.h> #include <grammar/Regular/RightRG.h> +#include <registration/AlgoRegistration.hpp> namespace grammar { @@ -50,15 +51,15 @@ std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, return res; } -auto LL1ParseTableCFG = LL1ParseTable::RegistratorWrapper < std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::CFG < > > ( LL1ParseTable::parseTable ); -auto LL1ParseTableEpsilonFreeCFG = LL1ParseTable::RegistratorWrapper < std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::EpsilonFreeCFG < > > ( LL1ParseTable::parseTable ); -auto LL1ParseTableGNF = LL1ParseTable::RegistratorWrapper < std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::GNF < > > ( LL1ParseTable::parseTable ); -auto LL1ParseTableCNF = LL1ParseTable::RegistratorWrapper < std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::CNF < > > ( LL1ParseTable::parseTable ); -auto LL1ParseTableLG = LL1ParseTable::RegistratorWrapper < std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::LG < > > ( LL1ParseTable::parseTable ); -auto LL1ParseTableLeftLG = LL1ParseTable::RegistratorWrapper < std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::LeftLG < > > ( LL1ParseTable::parseTable ); -auto LL1ParseTableLeftRG = LL1ParseTable::RegistratorWrapper < std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::LeftRG < > > ( LL1ParseTable::parseTable ); -auto LL1ParseTableRightLG = LL1ParseTable::RegistratorWrapper < std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::RightLG < > > ( LL1ParseTable::parseTable ); -auto LL1ParseTableRightRG = LL1ParseTable::RegistratorWrapper < std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::RightRG < > > ( LL1ParseTable::parseTable ); +auto LL1ParseTableCFG = registration::OverloadRegister < LL1ParseTable, std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::CFG < > > ( LL1ParseTable::parseTable ); +auto LL1ParseTableEpsilonFreeCFG = registration::OverloadRegister < LL1ParseTable, std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::EpsilonFreeCFG < > > ( LL1ParseTable::parseTable ); +auto LL1ParseTableGNF = registration::OverloadRegister < LL1ParseTable, std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::GNF < > > ( LL1ParseTable::parseTable ); +auto LL1ParseTableCNF = registration::OverloadRegister < LL1ParseTable, std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::CNF < > > ( LL1ParseTable::parseTable ); +auto LL1ParseTableLG = registration::OverloadRegister < LL1ParseTable, std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::LG < > > ( LL1ParseTable::parseTable ); +auto LL1ParseTableLeftLG = registration::OverloadRegister < LL1ParseTable, std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::LeftLG < > > ( LL1ParseTable::parseTable ); +auto LL1ParseTableLeftRG = registration::OverloadRegister < LL1ParseTable, std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::LeftRG < > > ( LL1ParseTable::parseTable ); +auto LL1ParseTableRightLG = registration::OverloadRegister < LL1ParseTable, std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::RightLG < > > ( LL1ParseTable::parseTable ); +auto LL1ParseTableRightRG = registration::OverloadRegister < LL1ParseTable, std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > >, grammar::RightRG < > > ( LL1ParseTable::parseTable ); std::map < std::pair < std::variant < DefaultSymbolType, string::Epsilon < > >, DefaultSymbolType >, std::set < std::vector < DefaultSymbolType > > > LL1ParseTable::parseTable ( const grammar::Grammar & grammar ) { return dispatch ( grammar.getData ( ) ); diff --git a/alib2algo_experimental/src/graph/maximumflow/FordFulkerson.cpp b/alib2algo_experimental/src/graph/maximumflow/FordFulkerson.cpp index 6788e0af26..495d8c9c19 100644 --- a/alib2algo_experimental/src/graph/maximumflow/FordFulkerson.cpp +++ b/alib2algo_experimental/src/graph/maximumflow/FordFulkerson.cpp @@ -15,6 +15,7 @@ #include <stdexcept> #include <exception/CommonException.h> +#include <registration/AlgoRegistration.hpp> // the flow needs to be assigned to pair of nodes, not edge @@ -239,7 +240,7 @@ Flow FordFulkerson::fordfulkerson( const UndirectedGraph & graph, Node source, N return fordfulkerson_impl_undir( graph, source, sink ); } -//auto FordFulkersonUndirectedGraph = FordFulkerson::RegistratorWrapper< graph::UndirectedGraph, graph::UndirectedGraph >( FordFulkerson::getInstance(), FordFulkerson::fordfulkerson ); +//auto FordFulkersonUndirectedGraph = registration::OverloadRegister < FordFulkerson, graph::UndirectedGraph, graph::UndirectedGraph > ( FordFulkerson::fordfulkerson ); } diff --git a/alib2algo_experimental/src/graph/minimumcut/FordFulkerson.cpp b/alib2algo_experimental/src/graph/minimumcut/FordFulkerson.cpp index 892dd1fe41..de46f367b4 100644 --- a/alib2algo_experimental/src/graph/minimumcut/FordFulkerson.cpp +++ b/alib2algo_experimental/src/graph/minimumcut/FordFulkerson.cpp @@ -17,6 +17,7 @@ #include <exception/CommonException.h> #include "../maximumflow/FordFulkerson.h" +#include <registration/AlgoRegistration.hpp> namespace graph { @@ -169,7 +170,7 @@ Cut FordFulkerson::fordfulkerson( const UndirectedGraph & graph, Node source, No return fordfulkerson_impl_undir( graph, source, sink ); } -//auto BasicAlgorithmUndirectedGraph = FordFulkerson::RegistratorWrapper< graph::UndirectedGraph, graph::UndirectedGraph >( FordFulkerson::getInstance(), FordFulkerson::fordfulkerson ); +//auto BasicAlgorithmUndirectedGraph = registration::OverloadRegister < FordFulkerson, graph::UndirectedGraph, graph::UndirectedGraph > ( FordFulkerson::fordfulkerson ); } // namespace minimumcut diff --git a/alib2algo_experimental/src/graph/shortestpath/BellmanFord.cpp b/alib2algo_experimental/src/graph/shortestpath/BellmanFord.cpp index 6bb132e1d1..c1544ba951 100644 --- a/alib2algo_experimental/src/graph/shortestpath/BellmanFord.cpp +++ b/alib2algo_experimental/src/graph/shortestpath/BellmanFord.cpp @@ -8,6 +8,7 @@ #include "BellmanFord.h" #include <exception/CommonException.h> +#include <registration/AlgoRegistration.hpp> namespace graph { @@ -119,14 +120,14 @@ BellmanFord::Result BellmanFord::bellmanford(const DirectedGraph &graph, const N return bellmanford_impl(graph, start); } -auto BellmanFordDirectedGraph = BellmanFord::RegistratorWrapper<BellmanFord::Result, graph::DirectedGraph>(BellmanFord::bellmanford); +auto BellmanFordDirectedGraph = registration::OverloadRegister < BellmanFord, BellmanFord::Result, graph::DirectedGraph> ( BellmanFord::bellmanford ); BellmanFord::Result BellmanFord::bellmanford(const UndirectedGraph &graph, const Node &start) { return bellmanford_impl(graph, start); } -auto BellmanFordUndirectedGraph = BellmanFord::RegistratorWrapper<BellmanFord::Result, graph::UndirectedGraph>(BellmanFord::bellmanford); +auto BellmanFordUndirectedGraph = registration::OverloadRegister < BellmanFord, BellmanFord::Result, graph::UndirectedGraph> ( BellmanFord::bellmanford ); } // namespace shortestpath diff --git a/alib2algo_experimental/src/graph/shortestpath/Dijkstra.cpp b/alib2algo_experimental/src/graph/shortestpath/Dijkstra.cpp index bfcef0813a..fc6a2d1e05 100644 --- a/alib2algo_experimental/src/graph/shortestpath/Dijkstra.cpp +++ b/alib2algo_experimental/src/graph/shortestpath/Dijkstra.cpp @@ -8,6 +8,7 @@ #include "Dijkstra.h" #include <exception/CommonException.h> +#include <registration/AlgoRegistration.hpp> namespace graph { @@ -135,14 +136,14 @@ Dijkstra::Result Dijkstra::dijkstra(const DirectedGraph &graph, const Node &star return dijkstra_impl(graph, start); } -auto DijkstraDirectedGraph = Dijkstra::RegistratorWrapper<Dijkstra::Result, graph::DirectedGraph>(Dijkstra::dijkstra); +auto DijkstraDirectedGraph = registration::OverloadRegister < Dijkstra, Dijkstra::Result, graph::DirectedGraph> ( Dijkstra::dijkstra ); Dijkstra::Result Dijkstra::dijkstra(const UndirectedGraph &graph, const Node &start) { return dijkstra_impl(graph, start); } -auto DijkstraUndirectedGraph = Dijkstra::RegistratorWrapper<Dijkstra::Result, graph::UndirectedGraph>(Dijkstra::dijkstra); +auto DijkstraUndirectedGraph = registration::OverloadRegister < Dijkstra, Dijkstra::Result, graph::UndirectedGraph> ( Dijkstra::dijkstra ); } // namespace shortestpath diff --git a/alib2algo_experimental/src/graph/shortestpath/FloydWarshall.cpp b/alib2algo_experimental/src/graph/shortestpath/FloydWarshall.cpp index d471b3efb5..b1a0235aa6 100644 --- a/alib2algo_experimental/src/graph/shortestpath/FloydWarshall.cpp +++ b/alib2algo_experimental/src/graph/shortestpath/FloydWarshall.cpp @@ -10,6 +10,7 @@ #include <exception/CommonException.h> #include <limits> +#include <registration/AlgoRegistration.hpp> namespace graph { @@ -74,14 +75,14 @@ FloydWarshall::Result FloydWarshall::floydwarshall(const DirectedGraph &graph) return floydwarshall_impl(graph); } -auto FloydWarshallDirectedGraph = FloydWarshall::RegistratorWrapper<FloydWarshall::Result, graph::DirectedGraph>(FloydWarshall::floydwarshall); +auto FloydWarshallDirectedGraph = registration::OverloadRegister < FloydWarshall, FloydWarshall::Result, graph::DirectedGraph> ( FloydWarshall::floydwarshall ); FloydWarshall::Result FloydWarshall::floydwarshall(const UndirectedGraph &graph) { return floydwarshall_impl(graph); } -auto FloydWarshallUndirectedGraph = FloydWarshall::RegistratorWrapper<FloydWarshall::Result, graph::UndirectedGraph>(FloydWarshall::floydwarshall); +auto FloydWarshallUndirectedGraph = registration::OverloadRegister < FloydWarshall, FloydWarshall::Result, graph::UndirectedGraph> ( FloydWarshall::floydwarshall ); } // namespace shortestpath diff --git a/alib2algo_experimental/src/graph/sort/TopologicalSort.cpp b/alib2algo_experimental/src/graph/sort/TopologicalSort.cpp index e0e4e07eab..99c053b635 100644 --- a/alib2algo_experimental/src/graph/sort/TopologicalSort.cpp +++ b/alib2algo_experimental/src/graph/sort/TopologicalSort.cpp @@ -7,6 +7,7 @@ #include "TopologicalSort.h" #include "../traverse/Dfs.h" +#include <registration/AlgoRegistration.hpp> namespace graph { @@ -38,7 +39,7 @@ TopologicalSort::Result TopologicalSort::topologicalsort(const DirectedGraph &gr return topsort_impl(graph); } -auto TopologicalSortDirectedGraph = TopologicalSort::RegistratorWrapper<TopologicalSort::Result, graph::DirectedGraph>(TopologicalSort::topologicalsort); +auto TopologicalSortDirectedGraph = registration::OverloadRegister < TopologicalSort, TopologicalSort::Result, graph::DirectedGraph> ( TopologicalSort::topologicalsort ); } // namespace sort diff --git a/alib2algo_experimental/src/graph/spanningtree/Edmonds.cpp b/alib2algo_experimental/src/graph/spanningtree/Edmonds.cpp index 1172cbfc17..0d59a65fb0 100644 --- a/alib2algo_experimental/src/graph/spanningtree/Edmonds.cpp +++ b/alib2algo_experimental/src/graph/spanningtree/Edmonds.cpp @@ -20,6 +20,7 @@ #include "../datastructs/Array.h" #include <exception/CommonException.h> +#include <registration/AlgoRegistration.hpp> namespace graph { @@ -245,7 +246,7 @@ AdjacencyListDirectedGraph Edmonds::edmonds( const DirectedGraph & graph ) return edmonds_impl( graph ); } -auto EdmondsDirectedGraph = Edmonds::RegistratorWrapper< graph::AdjacencyListDirectedGraph, graph::DirectedGraph >( Edmonds::edmonds ); +auto EdmondsDirectedGraph = registration::OverloadRegister < Edmonds, graph::AdjacencyListDirectedGraph, graph::DirectedGraph > ( Edmonds::edmonds ); } // spanningtree diff --git a/alib2algo_experimental/src/graph/spanningtree/JarnikPrim.cpp b/alib2algo_experimental/src/graph/spanningtree/JarnikPrim.cpp index 5749136b8e..b3dfebeb5d 100644 --- a/alib2algo_experimental/src/graph/spanningtree/JarnikPrim.cpp +++ b/alib2algo_experimental/src/graph/spanningtree/JarnikPrim.cpp @@ -8,6 +8,7 @@ #include "JarnikPrim.h" #include <limits> +#include <registration/AlgoRegistration.hpp> namespace graph { @@ -108,7 +109,7 @@ AdjacencyListUndirectedGraph JarnikPrim::jarnikprim(const UndirectedGraph &graph return jarnikprim_impl(graph, start); } -auto JarnikPrimUndirectedGraph = JarnikPrim::RegistratorWrapper<graph::AdjacencyListUndirectedGraph, graph::UndirectedGraph>(JarnikPrim::jarnikprim); +auto JarnikPrimUndirectedGraph = registration::OverloadRegister < JarnikPrim, graph::AdjacencyListUndirectedGraph, graph::UndirectedGraph> ( JarnikPrim::jarnikprim ); } // namespace spanningtree diff --git a/alib2algo_experimental/src/graph/spanningtree/Kruskal.cpp b/alib2algo_experimental/src/graph/spanningtree/Kruskal.cpp index be551c6ca4..b37037a9c2 100644 --- a/alib2algo_experimental/src/graph/spanningtree/Kruskal.cpp +++ b/alib2algo_experimental/src/graph/spanningtree/Kruskal.cpp @@ -14,6 +14,7 @@ #include "../datastructs/Components.h" #include <exception/CommonException.h> +#include <registration/AlgoRegistration.hpp> namespace graph { @@ -84,7 +85,7 @@ AdjacencyListUndirectedGraph Kruskal::kruskal( const UndirectedGraph & graph ) return kruskal_impl( graph ); } -auto KruskalUndirectedGraph = Kruskal::RegistratorWrapper< graph::AdjacencyListUndirectedGraph, graph::UndirectedGraph >( Kruskal::kruskal ); +auto KruskalUndirectedGraph = registration::OverloadRegister < Kruskal, graph::AdjacencyListUndirectedGraph, graph::UndirectedGraph > ( Kruskal::kruskal ); } // namespace spanningtree diff --git a/alib2algo_experimental/src/graph/traverse/Bfs.cpp b/alib2algo_experimental/src/graph/traverse/Bfs.cpp index 974e0c7024..b7820afa0b 100644 --- a/alib2algo_experimental/src/graph/traverse/Bfs.cpp +++ b/alib2algo_experimental/src/graph/traverse/Bfs.cpp @@ -9,6 +9,7 @@ #include <queue> #include <unordered_map> +#include <registration/AlgoRegistration.hpp> namespace graph { @@ -77,25 +78,25 @@ void Bfs::bfs(const DirectedGraph &graph, const Node &start, Bfs::Function func) bfs_impl(graph, start, func); } -auto BfsDirectedGraph1 = std::SingleDispatch<Bfs, void, const graph::GraphBase &, const Node&, Bfs::Function>::RegistratorWrapper<void, graph::DirectedGraph>(Bfs::bfs); +auto BfsDirectedGraph1 = registration::OverloadRegister < std::SingleDispatch<Bfs, void, const graph::GraphBase &, const Node&, Bfs::Function>, void, graph::DirectedGraph> ( Bfs::bfs ); void Bfs::bfs(const DirectedGraph &graph, const Node &start, Bfs::FunctionExt func) { bfs2_impl(graph, start, func); } -auto BfsDirectedGraph2 = std::SingleDispatch<Bfs, void, const graph::GraphBase &, const Node&, Bfs::FunctionExt>::RegistratorWrapper<void, graph::DirectedGraph>(Bfs::bfs); +auto BfsDirectedGraph2 = registration::OverloadRegister < std::SingleDispatch<Bfs, void, const graph::GraphBase &, const Node&, Bfs::FunctionExt>, void, graph::DirectedGraph> ( Bfs::bfs ); void Bfs::bfs(const UndirectedGraph &graph, const Node &start, Bfs::Function func) { bfs_impl(graph, start, func); } -auto BfsUndirectedGraph1 = std::SingleDispatch<Bfs, void, const graph::GraphBase &, const Node&, Bfs::Function>::RegistratorWrapper<void, graph::UndirectedGraph>(Bfs::bfs); +auto BfsUndirectedGraph1 = registration::OverloadRegister < std::SingleDispatch<Bfs, void, const graph::GraphBase &, const Node&, Bfs::Function>, void, graph::UndirectedGraph> ( Bfs::bfs ); void Bfs::bfs(const UndirectedGraph &graph, const Node &start, Bfs::FunctionExt func) { bfs2_impl(graph, start, func); } -auto BfsUndirectedGraph2 = std::SingleDispatch<Bfs, void, const graph::GraphBase &, const Node&, Bfs::FunctionExt>::RegistratorWrapper<void, graph::UndirectedGraph>(Bfs::bfs); +auto BfsUndirectedGraph2 = registration::OverloadRegister < std::SingleDispatch<Bfs, void, const graph::GraphBase &, const Node&, Bfs::FunctionExt>, void, graph::UndirectedGraph> ( Bfs::bfs ); } // namespace traverse diff --git a/alib2algo_experimental/src/graph/traverse/Dfs.cpp b/alib2algo_experimental/src/graph/traverse/Dfs.cpp index 50dcfea7a7..554c070728 100644 --- a/alib2algo_experimental/src/graph/traverse/Dfs.cpp +++ b/alib2algo_experimental/src/graph/traverse/Dfs.cpp @@ -9,6 +9,7 @@ #include <stack> #include <unordered_map> +#include <registration/AlgoRegistration.hpp> namespace graph { @@ -66,7 +67,7 @@ void Dfs::dfs(const DirectedGraph &graph, const Node &start, Dfs::Function func) dfs_impl(graph, start, func); } -auto DfsDirectedGraph1 = std::SingleDispatch<Dfs, void, const graph::GraphBase &, const Node&, Dfs::Function>::RegistratorWrapper<void, graph::DirectedGraph>(Dfs::dfs); +auto DfsDirectedGraph1 = registration::OverloadRegister < std::SingleDispatch<Dfs, void, const graph::GraphBase &, const Node&, Dfs::Function>, void, graph::DirectedGraph> ( Dfs::dfs ); void Dfs::dfs(const DirectedGraph &graph, const Node &start, Dfs::FunctionExt func) { int time = 0; @@ -74,13 +75,13 @@ void Dfs::dfs(const DirectedGraph &graph, const Node &start, Dfs::FunctionExt fu dfs2_impl(graph, start, start, visited, time, func); } -auto DfsDirectedGraph2 = std::SingleDispatch<Dfs, void, const graph::GraphBase &, const Node&, Dfs::FunctionExt>::RegistratorWrapper<void, graph::DirectedGraph>(Dfs::dfs); +auto DfsDirectedGraph2 = registration::OverloadRegister < std::SingleDispatch<Dfs, void, const graph::GraphBase &, const Node&, Dfs::FunctionExt>, void, graph::DirectedGraph> ( Dfs::dfs ); void Dfs::dfs(const UndirectedGraph &graph, const Node &start, Dfs::Function func) { dfs_impl(graph, start, func); } -auto DfsUndirectedGraph1 = std::SingleDispatch<Dfs, void, const graph::GraphBase &, const Node&, Dfs::Function>::RegistratorWrapper<void, graph::UndirectedGraph>(Dfs::dfs); +auto DfsUndirectedGraph1 = registration::OverloadRegister < std::SingleDispatch<Dfs, void, const graph::GraphBase &, const Node&, Dfs::Function>, void, graph::UndirectedGraph> ( Dfs::dfs ); void Dfs::dfs(const UndirectedGraph &graph, const Node &start, Dfs::FunctionExt func) { int time = 0; @@ -88,7 +89,7 @@ void Dfs::dfs(const UndirectedGraph &graph, const Node &start, Dfs::FunctionExt dfs2_impl(graph, start, start, visited, time, func); } -auto DfsUndirectedGraph2 = std::SingleDispatch<Dfs, void, const graph::GraphBase &, const Node&, Dfs::FunctionExt>::RegistratorWrapper<void, graph::UndirectedGraph>(Dfs::dfs); +auto DfsUndirectedGraph2 = registration::OverloadRegister < std::SingleDispatch<Dfs, void, const graph::GraphBase &, const Node&, Dfs::FunctionExt>, void, graph::UndirectedGraph> ( Dfs::dfs ); } // namespace traverse diff --git a/alib2algo_experimental/src/stringology/indexing/ExperimentalSuffixTrie.cpp b/alib2algo_experimental/src/stringology/indexing/ExperimentalSuffixTrie.cpp index 6f796848d5..e7c38aa404 100644 --- a/alib2algo_experimental/src/stringology/indexing/ExperimentalSuffixTrie.cpp +++ b/alib2algo_experimental/src/stringology/indexing/ExperimentalSuffixTrie.cpp @@ -8,6 +8,7 @@ #include "ExperimentalSuffixTrie.h" #include <string/LinearStringTerminatingSymbol.h> +#include <registration/AlgoRegistration.hpp> namespace stringology { @@ -35,7 +36,7 @@ indexes::SuffixTrieTerminatingSymbol ExperimentalSuffixTrie::construct ( const s return res; } -auto SuffixTrieTerminatingSymbolLinearStringTerminatingSymbol = ExperimentalSuffixTrie::RegistratorWrapper < indexes::SuffixTrieTerminatingSymbol, string::LinearStringTerminatingSymbol > ( ExperimentalSuffixTrie::construct ); +auto SuffixTrieTerminatingSymbolLinearStringTerminatingSymbol = registration::OverloadRegister < ExperimentalSuffixTrie, indexes::SuffixTrieTerminatingSymbol, string::LinearStringTerminatingSymbol > ( ExperimentalSuffixTrie::construct ); } /* namespace indexing */ diff --git a/alib2common/src/core/multipleDispatch.hpp b/alib2common/src/core/multipleDispatch.hpp index c0c3127e3c..a4005b2653 100644 --- a/alib2common/src/core/multipleDispatch.hpp +++ b/alib2common/src/core/multipleDispatch.hpp @@ -14,10 +14,10 @@ #include <iostream> #include <type_traits> #include <sstream> +#include <tuple> -#include "castApi.hpp" -#include "../exception/CommonException.h" -#include <introspection/Algorithms.hpp> +#include <core/castApi.hpp> +#include <exception/CommonException.h> namespace std { @@ -27,12 +27,37 @@ class MultipleDispatch; template < class Algorithm, class ReturnType, class ... FrontStaticParamTypes, class ... DispatchedParameterTypes, class ... BackStaticParamTypes > class MultipleDispatch < Algorithm, ReturnType, std::tuple < FrontStaticParamTypes ... >, std::tuple < DispatchedParameterTypes ... >, std::tuple < BackStaticParamTypes ... > > { public: + template < class RealReturnType, class ... RealParameterTypeBases > + using overload = std::function < RealReturnType ( FrontStaticParamTypes ..., typename std::match_cv_ref < DispatchedParameterTypes, RealParameterTypeBases >::type && ..., BackStaticParamTypes ... ) >; + + template < class RealReturnType, class ... RealParameterTypeBases > + using rawOverload = RealReturnType ( * ) ( FrontStaticParamTypes ..., typename std::match_cv_ref < DispatchedParameterTypes, RealParameterTypeBases >::type && ..., BackStaticParamTypes ... ); + + typedef std::tuple < FrontStaticParamTypes ... > frontParams; + typedef std::tuple < DispatchedParameterTypes ... > dispatchedParams; + typedef std::tuple < BackStaticParamTypes ... > backParams; + typedef ReturnType returnType; + +private: class RegistratorWrapperBase { public: virtual ReturnType eval ( FrontStaticParamTypes ..., DispatchedParameterTypes && ..., BackStaticParamTypes ... ) = 0; }; -private: + template < class RealReturnType, class ... RealParameterTypeBases > + class RegistratorWrapper : public RegistratorWrapperBase { + overload < RealReturnType, RealParameterTypeBases ... > m_callback; + + public: + ReturnType eval ( FrontStaticParamTypes ... front, DispatchedParameterTypes && ... dispatched, BackStaticParamTypes ... back ) { + return ReturnType ( m_callback ( front ..., std::forward < typename std::match_cv_ref < DispatchedParameterTypes, RealParameterTypeBases >::type > ( static_cast < typename std::match_cv_ref < DispatchedParameterTypes, RealParameterTypeBases >::type && > ( dispatched ) ) ..., back ... ) ); + } + + RegistratorWrapper ( overload < RealReturnType, RealParameterTypeBases ... > callback ) : m_callback ( callback ) { + } + + }; + std::map < typename std::TupleBuilder < std::type_index, sizeof ... ( DispatchedParameterTypes ) >::type, RegistratorWrapperBase * > registeredFunctions; static MultipleDispatch < Algorithm, ReturnType, std::tuple < FrontStaticParamTypes ... >, std::tuple < DispatchedParameterTypes ... >, std::tuple < BackStaticParamTypes ... > > & getInstance ( ) { @@ -43,34 +68,26 @@ private: public: template < class RealReturnType, class ... RealParameterTypeBases > - class RegistratorWrapper : public RegistratorWrapperBase { - std::function < RealReturnType ( FrontStaticParamTypes ..., typename std::match_cv_ref < DispatchedParameterTypes, RealParameterTypeBases >::type && ..., BackStaticParamTypes ... ) > m_callback; - - public: - ReturnType eval ( FrontStaticParamTypes ... front, DispatchedParameterTypes && ... dispatched, BackStaticParamTypes ... back ) { - return ReturnType ( m_callback ( front ..., std::forward < typename std::match_cv_ref < DispatchedParameterTypes, RealParameterTypeBases >::type > ( static_cast < typename std::match_cv_ref < DispatchedParameterTypes, RealParameterTypeBases >::type && > ( dispatched ) ) ..., back ... ) ); - } +// static void registerOverload ( overload < RealReturnType, RealParameterTypeBases ... > callback ) { causes clang 4.0.0 to crash... +// static void registerOverload ( rawOverload < RealReturnType, RealParameterTypeBases ... > callback ) { causes clang 4.0.0 to crash... + static void registerOverload ( RealReturnType ( * callback ) ( FrontStaticParamTypes ..., typename std::match_cv_ref < DispatchedParameterTypes, RealParameterTypeBases >::type && ..., BackStaticParamTypes ... ) ) { + auto key = std::make_tuple ( std::type_index ( typeid ( typename std::match_cv_ref < DispatchedParameterTypes, RealParameterTypeBases >::type ) ) ... ); + RegistratorWrapper < RealReturnType, RealParameterTypeBases ... > * value = new RegistratorWrapper < RealReturnType, RealParameterTypeBases ... > ( callback ); - RegistratorWrapper ( RealReturnType ( * callback ) ( FrontStaticParamTypes ..., typename std::match_cv_ref < DispatchedParameterTypes, RealParameterTypeBases >::type && ..., BackStaticParamTypes ... ) ) : m_callback ( callback ) { - bool res = getInstance ( ).registeredFunctions.insert ( std::make_pair ( std::make_tuple ( std::type_index ( typeid ( typename std::match_cv_ref < DispatchedParameterTypes, RealParameterTypeBases >::type ) ) ... ), this ) ).second; - if ( ! res ) { - std::stringstream ss; - ( void ) initializer_list < int > { ( ss << std::type_name < typename std::match_cv_ref < DispatchedParameterTypes, RealParameterTypeBases >::type > ( ), 0 ) ... }; + bool res = getInstance ( ).registeredFunctions.insert ( std::make_pair ( std::move ( key ), value ) ).second; - std::string classType = std::type_name < Algorithm > ( ); + if ( ! res ) { + std::stringstream ss; + ( void ) initializer_list < int > { ( ss << std::type_name < typename std::match_cv_ref < DispatchedParameterTypes, RealParameterTypeBases >::type > ( ), 0 ) ... }; - throw::exception::CommonException ( "Callback for " + ss.str ( ) + " already registered on " + classType + "." ); - } + std::string classType = std::type_name < Algorithm > ( ); - introspection::Algorithms::registerDispatchInAlgorithm < std::tuple < RealParameterTypeBases ... >, Algorithm, RealReturnType > ( ); - introspection::Algorithms::registerAlgorithmInterface < Algorithm, ReturnType, std::tuple < FrontStaticParamTypes ... >, std::tuple < DispatchedParameterTypes ... >, std::tuple < BackStaticParamTypes ... > > ( ); - introspection::Algorithms::registerAlgorithm < Algorithm > ( ); + throw::exception::CommonException ( "Callback for " + ss.str ( ) + " already registered on " + classType + "." ); } - - }; + } static ReturnType dispatch ( FrontStaticParamTypes ... front, DispatchedParameterTypes && ... dispatched, BackStaticParamTypes ... back ) { - typename std::map < typename std::TupleBuilder < std::type_index, sizeof ... ( DispatchedParameterTypes ) >::type, RegistratorWrapperBase * >::iterator callback = getInstance ( ).registeredFunctions.find ( std::make_tuple ( std::type_index ( typeid ( dispatched ) ) ... ) ); + auto callback = getInstance ( ).registeredFunctions.find ( std::make_tuple ( std::type_index ( typeid ( dispatched ) ) ... ) ); if ( callback == getInstance ( ).registeredFunctions.end ( ) ) { std::stringstream ss; @@ -105,22 +122,24 @@ using DoubleDispatchFirstStaticParam = MultipleDispatch < Algorithm, ReturnType, template < class Algorithm, class ReturnType, class ParametersType > class PromotingDoubleDispatch { public: + template < class RealReturnType, class RealParametersTypeBase > + using overload = std::function < RealReturnType ( typename std::match_cv_ref < ParametersType, RealParametersTypeBase >::type &&, typename std::match_cv_ref < ParametersType, RealParametersTypeBase >::type && ) >; + + template < class RealReturnType, class RealParametersTypeBase > + using rawOverload = RealReturnType ( * ) ( typename std::match_cv_ref < ParametersType, RealParametersTypeBase >::type &&, typename std::match_cv_ref < ParametersType, RealParametersTypeBase >::type && ); + + typedef std::tuple < > frontParams; + typedef std::tuple < ParametersType, ParametersType > dispatchedParams; + typedef std::tuple < > backParams; + typedef ReturnType returnType; + +private: class RegistratorWrapperBase { public: virtual ReturnType eval ( bool firstAttempt, ParametersType &&, ParametersType && ) = 0; virtual bool available ( bool firstAttempt, std::type_index first, std::type_index second ) = 0; }; -private: - std::map < std::type_index, RegistratorWrapperBase * > registeredFunctions; - - static PromotingDoubleDispatch < Algorithm, ReturnType, ParametersType > & getInstance ( ) { - static PromotingDoubleDispatch < Algorithm, ReturnType, ParametersType > res; - - return res; - } - -public: template < class RealReturnType, class RealParametersTypeBase > class RegistratorWrapper : public RegistratorWrapperBase { typedef typename std::match_cv_ref < ParametersType, RealParametersTypeBase >::type RealParametersType; @@ -151,21 +170,32 @@ public: } RegistratorWrapper ( RealReturnType ( * callback ) ( RealParametersType &&, RealParametersType && ) ) : m_callback ( callback ) { - bool res = getInstance ( ).registeredFunctions.insert ( std::make_pair ( std::type_index ( typeid ( RealParametersType ) ), this ) ).second; - if ( ! res ) { - std::string paramsType = std::type_name < RealParametersType > ( ); + } - std::string classType = std::type_name < Algorithm > ( ); + }; - throw::exception::CommonException ( "Callback for " + paramsType + " already registered on " + classType + "." ); - } + std::map < std::type_index, RegistratorWrapperBase * > registeredFunctions; - introspection::Algorithms::registerDispatchInAlgorithm < std::tuple < RealParametersTypeBase >, Algorithm, RealReturnType > ( ); - introspection::Algorithms::registerAlgorithmInterface < Algorithm, ReturnType, std::tuple < >, std::tuple < ParametersType >, std::tuple < > > ( ); - introspection::Algorithms::registerAlgorithm < Algorithm > ( ); - } + static PromotingDoubleDispatch < Algorithm, ReturnType, ParametersType > & getInstance ( ) { + static PromotingDoubleDispatch < Algorithm, ReturnType, ParametersType > res; - }; + return res; + } + +public: + template < class RealReturnType, class RealParametersTypeBase > + static void registerOverload ( RealReturnType ( * callback ) ( typename std::match_cv_ref < ParametersType, RealParametersTypeBase >::type &&, typename std::match_cv_ref < ParametersType, RealParametersTypeBase >::type && ) ) { + RegistratorWrapper < RealReturnType, RealParametersTypeBase > * value = new RegistratorWrapper < RealReturnType, RealParametersTypeBase > ( callback ); + + bool res = getInstance ( ).registeredFunctions.insert ( std::make_pair ( std::type_index ( typeid ( typename std::match_cv_ref < ParametersType, RealParametersTypeBase >::type ) ), value ) ).second; + if ( ! res ) { + std::string paramsType = std::type_name < typename std::match_cv_ref < ParametersType, RealParametersTypeBase >::type > ( ); + + std::string classType = std::type_name < Algorithm > ( ); + + throw::exception::CommonException ( "Callback for " + paramsType + " already registered on " + classType + "." ); + } + } static ReturnType dispatch ( ParametersType && first, ParametersType && second ) { typename std::map < std::type_index, RegistratorWrapperBase * >::iterator callback = getInstance ( ).registeredFunctions.find ( std::type_index ( typeid ( first ) ) ); diff --git a/alib2common/src/introspection/Algorithms.hpp b/alib2common/src/introspection/Algorithms.hpp index 00c87da115..f504724741 100644 --- a/alib2common/src/introspection/Algorithms.hpp +++ b/alib2common/src/introspection/Algorithms.hpp @@ -59,7 +59,7 @@ public: return algorithms ( ); } - template < class RealParameterTypes, class Algorithm, class RealReturnType > + template < class Algorithm, class RealReturnType, class RealParameterTypes > static void registerDispatchInAlgorithm ( ) { std::vector < std::string > realParameterTypeNames = TypesToString < RealParameterTypes >::getTypes ( ); std::string algorithm = std::type_name < Algorithm > ( ); diff --git a/alib2common/src/registration/AlgoRegistration.hpp b/alib2common/src/registration/AlgoRegistration.hpp new file mode 100644 index 0000000000..096394ce44 --- /dev/null +++ b/alib2common/src/registration/AlgoRegistration.hpp @@ -0,0 +1,23 @@ +#ifndef _ALGO_REGISTRATION_HPP_ +#define _ALGO_REGISTRATION_HPP_ + +#include <introspection/Algorithms.hpp> +#include <core/multipleDispatch.hpp> + +namespace registration { + +template < class Algorithm, class RealReturnType, class ... RealParameterTypeBases > +class OverloadRegister { +public: + OverloadRegister ( typename Algorithm::template rawOverload < RealReturnType, RealParameterTypeBases ... > callback ) { + Algorithm::template registerOverload < RealReturnType, RealParameterTypeBases ... > ( callback ); + + introspection::Algorithms::registerDispatchInAlgorithm < Algorithm, RealReturnType, std::tuple < RealParameterTypeBases ... > > ( ); + introspection::Algorithms::registerAlgorithmInterface < Algorithm, typename Algorithm::returnType, typename Algorithm::frontParams, typename Algorithm::dispatchedParams, typename Algorithm::backParams > ( ); + introspection::Algorithms::registerAlgorithm < Algorithm > ( ); + } +}; + +} /* namespace registration */ + +#endif // _ALGO_REGISTRATION_HPP_ diff --git a/alib2common/test-src/core/DispatchTest.cpp b/alib2common/test-src/core/DispatchTest.cpp index 1b12172eb1..8a622727b9 100644 --- a/alib2common/test-src/core/DispatchTest.cpp +++ b/alib2common/test-src/core/DispatchTest.cpp @@ -1,5 +1,5 @@ #include "DispatchTest.h" -#include "core/multipleDispatch.hpp" +#include <registration/AlgoRegistration.hpp> #include "base/CommonBase.hpp" #include <set> #include <string> @@ -222,9 +222,9 @@ int TmpVisitorExtensionTmp1 ( const Tmp1 & first ) { return 1; } -auto TmpVisitorTmp1 = TmpVisitor::RegistratorWrapper < int, Tmp1 > ( TmpVisitorExtensionTmp1 ); -auto TmpVisitorTmp2 = TmpVisitor::RegistratorWrapper < int, Tmp2 > ( TmpVisitor::eval ); -auto TmpVisitorTmp3 = TmpVisitor::RegistratorWrapper < int, Tmp3 > ( TmpVisitor::eval ); +auto TmpVisitorTmp1 = registration::OverloadRegister < TmpVisitor, int, Tmp1 > ( TmpVisitorExtensionTmp1 ); +auto TmpVisitorTmp2 = registration::OverloadRegister < TmpVisitor, int, Tmp2 > ( TmpVisitor::eval ); +auto TmpVisitorTmp3 = registration::OverloadRegister < TmpVisitor, int, Tmp3 > ( TmpVisitor::eval ); } /* namespace dispatch */ @@ -286,9 +286,9 @@ void TmpVisitor2ExtensionTmp1 ( int & res, const Tmp1 & first ) { res = 1; } -auto TmpVisitor2Tmp1 = TmpVisitor2::RegistratorWrapper < void, Tmp1 > ( TmpVisitor2ExtensionTmp1 ); -auto TmpVisitor2Tmp2 = TmpVisitor2::RegistratorWrapper < void, Tmp2 > ( TmpVisitor2::eval ); -auto TmpVisitor2Tmp3 = TmpVisitor2::RegistratorWrapper < void, Tmp3 > ( TmpVisitor2::eval ); +auto TmpVisitor2Tmp1 = registration::OverloadRegister < TmpVisitor2, void, Tmp1 > ( TmpVisitor2ExtensionTmp1 ); +auto TmpVisitor2Tmp2 = registration::OverloadRegister < TmpVisitor2, void, Tmp2 > ( TmpVisitor2::eval ); +auto TmpVisitor2Tmp3 = registration::OverloadRegister < TmpVisitor2, void, Tmp3 > ( TmpVisitor2::eval ); } /* namespace dispatch */ @@ -351,9 +351,9 @@ int TmpVisitor3ExtensionTmp1 ( Tmp1 && first ) { return 1; } -auto TmpVisitor3Tmp1 = TmpVisitor3::RegistratorWrapper < int, Tmp1 > ( TmpVisitor3ExtensionTmp1 ); -auto TmpVisitor3Tmp2 = TmpVisitor3::RegistratorWrapper < int, Tmp2 > ( TmpVisitor3::eval ); -auto TmpVisitor3Tmp3 = TmpVisitor3::RegistratorWrapper < int, Tmp3 > ( TmpVisitor3::eval ); +auto TmpVisitor3Tmp1 = registration::OverloadRegister < TmpVisitor3, int, Tmp1 > ( TmpVisitor3ExtensionTmp1 ); +auto TmpVisitor3Tmp2 = registration::OverloadRegister < TmpVisitor3, int, Tmp2 > ( TmpVisitor3::eval ); +auto TmpVisitor3Tmp3 = registration::OverloadRegister < TmpVisitor3, int, Tmp3 > ( TmpVisitor3::eval ); } /* namespace dispatch */ diff --git a/alib2elgo/src/automaton/properties/efficient/AllEpsilonClosure.cpp b/alib2elgo/src/automaton/properties/efficient/AllEpsilonClosure.cpp index 0966da9435..47020b1ccd 100644 --- a/alib2elgo/src/automaton/properties/efficient/AllEpsilonClosure.cpp +++ b/alib2elgo/src/automaton/properties/efficient/AllEpsilonClosure.cpp @@ -6,6 +6,7 @@ */ #include "AllEpsilonClosure.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -13,12 +14,12 @@ namespace properties { namespace efficient { -auto AllEpsilonClosureEpsilonNFA = AllEpsilonClosure::RegistratorWrapper<std::map<DefaultStateType, std::set<DefaultStateType>>, automaton::EpsilonNFA < > >(AllEpsilonClosure::allEpsilonClosure); -auto AllEpsilonClosureMultiInitialStateNFA = AllEpsilonClosure::RegistratorWrapper<std::map<DefaultStateType, std::set<DefaultStateType>>, automaton::MultiInitialStateNFA < >>(AllEpsilonClosure::allEpsilonClosure); -auto AllEpsilonClosureNFA = AllEpsilonClosure::RegistratorWrapper<std::map<DefaultStateType, std::set<DefaultStateType>>, automaton::NFA < > >(AllEpsilonClosure::allEpsilonClosure); -auto AllEpsilonClosureDFA = AllEpsilonClosure::RegistratorWrapper<std::map<DefaultStateType, std::set<DefaultStateType>>, automaton::DFA<>>(AllEpsilonClosure::allEpsilonClosure); -auto AllEpsilonClosureExtendedNFA = AllEpsilonClosure::RegistratorWrapper<std::map<DefaultStateType, std::set<DefaultStateType>>, automaton::ExtendedNFA < > >(AllEpsilonClosure::allEpsilonClosure); -auto AllEpsilonClosureCompactNFA = AllEpsilonClosure::RegistratorWrapper<std::map<DefaultStateType, std::set<DefaultStateType>>, automaton::CompactNFA < > >(AllEpsilonClosure::allEpsilonClosure); +auto AllEpsilonClosureEpsilonNFA = registration::OverloadRegister < AllEpsilonClosure, std::map < DefaultStateType, std::set < DefaultStateType > >, automaton::EpsilonNFA < > > ( AllEpsilonClosure::allEpsilonClosure ); +auto AllEpsilonClosureMultiInitialStateNFA = registration::OverloadRegister < AllEpsilonClosure, std::map < DefaultStateType, std::set < DefaultStateType > >, automaton::MultiInitialStateNFA < >> ( AllEpsilonClosure::allEpsilonClosure ); +auto AllEpsilonClosureNFA = registration::OverloadRegister < AllEpsilonClosure, std::map < DefaultStateType, std::set<DefaultStateType > >, automaton::NFA < > > ( AllEpsilonClosure::allEpsilonClosure ); +auto AllEpsilonClosureDFA = registration::OverloadRegister < AllEpsilonClosure, std::map < DefaultStateType, std::set<DefaultStateType > >, automaton::DFA < > > ( AllEpsilonClosure::allEpsilonClosure ); +auto AllEpsilonClosureExtendedNFA = registration::OverloadRegister < AllEpsilonClosure, std::map < DefaultStateType, std::set<DefaultStateType > >, automaton::ExtendedNFA < > > ( AllEpsilonClosure::allEpsilonClosure ); +auto AllEpsilonClosureCompactNFA = registration::OverloadRegister < AllEpsilonClosure, std::map < DefaultStateType, std::set<DefaultStateType > >, automaton::CompactNFA < > > ( AllEpsilonClosure::allEpsilonClosure ); std::map<DefaultStateType, std::set<DefaultStateType>> AllEpsilonClosure::allEpsilonClosure(const Automaton& automaton) { return dispatch(automaton.getData()); diff --git a/alib2elgo/src/automaton/properties/efficient/ReachableStates.cpp b/alib2elgo/src/automaton/properties/efficient/ReachableStates.cpp index b634efafda..4ec4d300a0 100644 --- a/alib2elgo/src/automaton/properties/efficient/ReachableStates.cpp +++ b/alib2elgo/src/automaton/properties/efficient/ReachableStates.cpp @@ -6,6 +6,7 @@ */ #include "ReachableStates.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -17,12 +18,12 @@ std::set<DefaultStateType> ReachableStates::reachableStates(const Automaton& aut return dispatch(automaton.getData()); } -auto ReachableStatesEpsilonNFA = ReachableStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::EpsilonNFA < > >(ReachableStates::reachableStates); -auto ReachableStatesNFA = ReachableStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::NFA < > >(ReachableStates::reachableStates); -auto ReachableStatesCompactNFA = ReachableStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::CompactNFA < > >(ReachableStates::reachableStates); -auto ReachableStatesExtendedNFA = ReachableStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::ExtendedNFA < > >(ReachableStates::reachableStates); -auto ReachableStatesMultiInitialStateNFA = ReachableStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::MultiInitialStateNFA < >>(ReachableStates::reachableStates); -auto ReachableStatesDFA = ReachableStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::DFA < > >(ReachableStates::reachableStates); +auto ReachableStatesEpsilonNFA = registration::OverloadRegister < ReachableStates, std::set < DefaultStateType >, automaton::EpsilonNFA < > > ( ReachableStates::reachableStates ); +auto ReachableStatesNFA = registration::OverloadRegister < ReachableStates, std::set < DefaultStateType >, automaton::NFA < > > ( ReachableStates::reachableStates ); +auto ReachableStatesCompactNFA = registration::OverloadRegister < ReachableStates, std::set < DefaultStateType >, automaton::CompactNFA < > > ( ReachableStates::reachableStates ); +auto ReachableStatesExtendedNFA = registration::OverloadRegister < ReachableStates, std::set < DefaultStateType >, automaton::ExtendedNFA < > > ( ReachableStates::reachableStates ); +auto ReachableStatesMultiInitialStateNFA = registration::OverloadRegister < ReachableStates, std::set < DefaultStateType >, automaton::MultiInitialStateNFA < > > ( ReachableStates::reachableStates ); +auto ReachableStatesDFA = registration::OverloadRegister < ReachableStates, std::set < DefaultStateType >, automaton::DFA < > > ( ReachableStates::reachableStates ); } /* namespace efficient */ diff --git a/alib2elgo/src/automaton/properties/efficient/UsefullStates.cpp b/alib2elgo/src/automaton/properties/efficient/UsefullStates.cpp index 5c5db127c9..6bb9a556ac 100644 --- a/alib2elgo/src/automaton/properties/efficient/UsefullStates.cpp +++ b/alib2elgo/src/automaton/properties/efficient/UsefullStates.cpp @@ -6,6 +6,7 @@ */ #include "UsefullStates.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -17,12 +18,12 @@ std::set<DefaultStateType> UsefullStates::usefullStates(const Automaton& automat return dispatch(automaton.getData()); } -auto UsefullStatesEpsilonNFA = UsefullStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::EpsilonNFA < > >(UsefullStates::usefullStates); -auto UsefullStatesNFA = UsefullStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::NFA < > >(UsefullStates::usefullStates); -auto UsefullStatesCompactNFA = UsefullStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::CompactNFA < > >(UsefullStates::usefullStates); -auto UsefullStatesExtendedNFA = UsefullStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::ExtendedNFA < > >(UsefullStates::usefullStates); -auto UsefullStatesMultiInitialStateNFA = UsefullStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::MultiInitialStateNFA < >>(UsefullStates::usefullStates); -auto UsefullStatesDFA = UsefullStates::RegistratorWrapper<std::set<DefaultStateType>, automaton::DFA < > >(UsefullStates::usefullStates); +auto UsefullStatesEpsilonNFA = registration::OverloadRegister < UsefullStates, std::set < DefaultStateType >, automaton::EpsilonNFA < > > ( UsefullStates::usefullStates ); +auto UsefullStatesNFA = registration::OverloadRegister < UsefullStates, std::set < DefaultStateType >, automaton::NFA < > > ( UsefullStates::usefullStates ); +auto UsefullStatesCompactNFA = registration::OverloadRegister < UsefullStates, std::set < DefaultStateType >, automaton::CompactNFA < > > ( UsefullStates::usefullStates ); +auto UsefullStatesExtendedNFA = registration::OverloadRegister < UsefullStates, std::set < DefaultStateType >, automaton::ExtendedNFA < > > ( UsefullStates::usefullStates ); +auto UsefullStatesMultiInitialStateNFA = registration::OverloadRegister < UsefullStates, std::set < DefaultStateType >, automaton::MultiInitialStateNFA < > > ( UsefullStates::usefullStates ); +auto UsefullStatesDFA = registration::OverloadRegister < UsefullStates, std::set < DefaultStateType >, automaton::DFA < > > ( UsefullStates::usefullStates ); } /* namespace efficient */ diff --git a/alib2elgo/src/automaton/simplify/efficient/EpsilonRemoverIncoming.cpp b/alib2elgo/src/automaton/simplify/efficient/EpsilonRemoverIncoming.cpp index cd8be26793..9122e84228 100644 --- a/alib2elgo/src/automaton/simplify/efficient/EpsilonRemoverIncoming.cpp +++ b/alib2elgo/src/automaton/simplify/efficient/EpsilonRemoverIncoming.cpp @@ -6,6 +6,7 @@ */ #include "EpsilonRemoverIncoming.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -13,10 +14,10 @@ namespace simplify { namespace efficient { -auto EpsilonRemoverIncomingDFA = EpsilonRemoverIncoming::RegistratorWrapper < automaton::DFA < >, automaton::DFA < > > ( EpsilonRemoverIncoming::remove ); -auto EpsilonRemoverIncomingMultiInitialStateNFA = EpsilonRemoverIncoming::RegistratorWrapper < automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < > > ( EpsilonRemoverIncoming::remove ); -auto EpsilonRemoverIncomingNFA = EpsilonRemoverIncoming::RegistratorWrapper < automaton::NFA < > , automaton::NFA < > > ( EpsilonRemoverIncoming::remove ); -auto EpsilonRemoverIncomingEpsilonNFA = EpsilonRemoverIncoming::RegistratorWrapper < automaton::NFA < > , automaton::EpsilonNFA < > > ( EpsilonRemoverIncoming::remove ); +auto EpsilonRemoverIncomingDFA = registration::OverloadRegister < EpsilonRemoverIncoming, automaton::DFA < >, automaton::DFA < > > ( EpsilonRemoverIncoming::remove ); +auto EpsilonRemoverIncomingMultiInitialStateNFA = registration::OverloadRegister < EpsilonRemoverIncoming, automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < > > ( EpsilonRemoverIncoming::remove ); +auto EpsilonRemoverIncomingNFA = registration::OverloadRegister < EpsilonRemoverIncoming, automaton::NFA < > , automaton::NFA < > > ( EpsilonRemoverIncoming::remove ); +auto EpsilonRemoverIncomingEpsilonNFA = registration::OverloadRegister < EpsilonRemoverIncoming, automaton::NFA < > , automaton::EpsilonNFA < > > ( EpsilonRemoverIncoming::remove ); automaton::Automaton EpsilonRemoverIncoming::remove ( const automaton::Automaton& automaton ) { return dispatch ( automaton.getData ( ) ); diff --git a/alib2elgo/src/automaton/simplify/efficient/EpsilonRemoverOutgoing.cpp b/alib2elgo/src/automaton/simplify/efficient/EpsilonRemoverOutgoing.cpp index 92186055a2..4d9c9d9081 100644 --- a/alib2elgo/src/automaton/simplify/efficient/EpsilonRemoverOutgoing.cpp +++ b/alib2elgo/src/automaton/simplify/efficient/EpsilonRemoverOutgoing.cpp @@ -6,6 +6,7 @@ */ #include "EpsilonRemoverOutgoing.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -13,10 +14,10 @@ namespace simplify { namespace efficient { -auto EpsilonRemoverOutgoingDFA = EpsilonRemoverOutgoing::RegistratorWrapper < automaton::DFA < >, automaton::DFA < > > ( EpsilonRemoverOutgoing::remove ); -auto EpsilonRemoverOutgoingMultiInitialStateNFA = EpsilonRemoverOutgoing::RegistratorWrapper < automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < > > ( EpsilonRemoverOutgoing::remove ); -auto EpsilonRemoverOutgoingNFA = EpsilonRemoverOutgoing::RegistratorWrapper < automaton::NFA < >, automaton::NFA < > > ( EpsilonRemoverOutgoing::remove ); -auto EpsilonRemoverOutgoingEpsilonNFA = EpsilonRemoverOutgoing::RegistratorWrapper < automaton::MultiInitialStateNFA < >, automaton::EpsilonNFA < > > ( EpsilonRemoverOutgoing::remove ); +auto EpsilonRemoverOutgoingDFA = registration::OverloadRegister < EpsilonRemoverOutgoing, automaton::DFA < >, automaton::DFA < > > ( EpsilonRemoverOutgoing::remove ); +auto EpsilonRemoverOutgoingMultiInitialStateNFA = registration::OverloadRegister < EpsilonRemoverOutgoing, automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < > > ( EpsilonRemoverOutgoing::remove ); +auto EpsilonRemoverOutgoingNFA = registration::OverloadRegister < EpsilonRemoverOutgoing, automaton::NFA < >, automaton::NFA < > > ( EpsilonRemoverOutgoing::remove ); +auto EpsilonRemoverOutgoingEpsilonNFA = registration::OverloadRegister < EpsilonRemoverOutgoing, automaton::MultiInitialStateNFA < >, automaton::EpsilonNFA < > > ( EpsilonRemoverOutgoing::remove ); automaton::Automaton EpsilonRemoverOutgoing::remove ( const automaton::Automaton& automaton ) { return dispatch ( automaton.getData ( ) ); diff --git a/alib2elgo/src/automaton/simplify/efficient/Trim.cpp b/alib2elgo/src/automaton/simplify/efficient/Trim.cpp index 8ea90a1caf..6e1b96135d 100644 --- a/alib2elgo/src/automaton/simplify/efficient/Trim.cpp +++ b/alib2elgo/src/automaton/simplify/efficient/Trim.cpp @@ -14,6 +14,7 @@ #include <automaton/FSM/DFA.h> #include "automaton/Automaton.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -21,12 +22,12 @@ namespace simplify { namespace efficient { -auto TrimDFA = Trim::RegistratorWrapper<automaton::DFA<>, automaton::DFA<>>(Trim::trim); -auto TrimNFA = Trim::RegistratorWrapper<automaton::NFA < > , automaton::NFA < > >(Trim::trim); -auto TrimMultiInitialStateNFA = Trim::RegistratorWrapper<automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < >>(Trim::trim); -auto TrimEpsilonNFA = Trim::RegistratorWrapper<automaton::EpsilonNFA < >, automaton::EpsilonNFA < > >(Trim::trim); -auto TrimCompactNFA = Trim::RegistratorWrapper<automaton::CompactNFA < >, automaton::CompactNFA < > >(Trim::trim); -auto TrimExtendedNFA = Trim::RegistratorWrapper<automaton::ExtendedNFA < >, automaton::ExtendedNFA < > >(Trim::trim); +auto TrimDFA = registration::OverloadRegister < Trim, automaton::DFA < >, automaton::DFA < > > ( Trim::trim ); +auto TrimNFA = registration::OverloadRegister < Trim, automaton::NFA < > , automaton::NFA < > > ( Trim::trim ); +auto TrimMultiInitialStateNFA = registration::OverloadRegister < Trim, automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < > > ( Trim::trim ); +auto TrimEpsilonNFA = registration::OverloadRegister < Trim, automaton::EpsilonNFA < >, automaton::EpsilonNFA < > > ( Trim::trim ); +auto TrimCompactNFA = registration::OverloadRegister < Trim, automaton::CompactNFA < >, automaton::CompactNFA < > > ( Trim::trim ); +auto TrimExtendedNFA = registration::OverloadRegister < Trim, automaton::ExtendedNFA < >, automaton::ExtendedNFA < > > ( Trim::trim ); automaton::Automaton Trim::trim(const automaton::Automaton& automaton) { return dispatch(automaton.getData()); diff --git a/alib2elgo/src/automaton/simplify/efficient/UnreachableStatesRemover.cpp b/alib2elgo/src/automaton/simplify/efficient/UnreachableStatesRemover.cpp index fbef81238a..1bd3fdce8c 100644 --- a/alib2elgo/src/automaton/simplify/efficient/UnreachableStatesRemover.cpp +++ b/alib2elgo/src/automaton/simplify/efficient/UnreachableStatesRemover.cpp @@ -6,6 +6,7 @@ */ #include "UnreachableStatesRemover.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -13,12 +14,12 @@ namespace simplify { namespace efficient { -auto UnreachableStatesRemoverEpsilonNFA = UnreachableStatesRemover::RegistratorWrapper<automaton::EpsilonNFA < >, automaton::EpsilonNFA < > >(UnreachableStatesRemover::remove); -auto UnreachableStatesRemoverNFA = UnreachableStatesRemover::RegistratorWrapper<automaton::NFA < > , automaton::NFA < > >(UnreachableStatesRemover::remove); -auto UnreachableStatesRemoverCompactNFA = UnreachableStatesRemover::RegistratorWrapper<automaton::CompactNFA < >, automaton::CompactNFA < > >(UnreachableStatesRemover::remove); -auto UnreachableStatesRemoverExtendedNFA = UnreachableStatesRemover::RegistratorWrapper<automaton::ExtendedNFA < >, automaton::ExtendedNFA < > >(UnreachableStatesRemover::remove); -auto UnreachableStatesRemoverDFA = UnreachableStatesRemover::RegistratorWrapper<automaton::DFA<>, automaton::DFA<>>(UnreachableStatesRemover::remove); -auto UnreachableStatesRemoverMultiInitialStateNFA = UnreachableStatesRemover::RegistratorWrapper<automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < >>(UnreachableStatesRemover::remove); +auto UnreachableStatesRemoverEpsilonNFA = registration::OverloadRegister < UnreachableStatesRemover, automaton::EpsilonNFA < >, automaton::EpsilonNFA < > > ( UnreachableStatesRemover::remove ); +auto UnreachableStatesRemoverNFA = registration::OverloadRegister < UnreachableStatesRemover, automaton::NFA < > , automaton::NFA < > > ( UnreachableStatesRemover::remove ); +auto UnreachableStatesRemoverCompactNFA = registration::OverloadRegister < UnreachableStatesRemover, automaton::CompactNFA < >, automaton::CompactNFA < > > ( UnreachableStatesRemover::remove ); +auto UnreachableStatesRemoverExtendedNFA = registration::OverloadRegister < UnreachableStatesRemover, automaton::ExtendedNFA < >, automaton::ExtendedNFA < > > ( UnreachableStatesRemover::remove ); +auto UnreachableStatesRemoverDFA = registration::OverloadRegister < UnreachableStatesRemover, automaton::DFA < >, automaton::DFA < > > ( UnreachableStatesRemover::remove ); +auto UnreachableStatesRemoverMultiInitialStateNFA = registration::OverloadRegister < UnreachableStatesRemover, automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < > > ( UnreachableStatesRemover::remove ); automaton::Automaton UnreachableStatesRemover::remove(const automaton::Automaton& automaton) { return dispatch(automaton.getData()); diff --git a/alib2elgo/src/automaton/simplify/efficient/UselessStatesRemover.cpp b/alib2elgo/src/automaton/simplify/efficient/UselessStatesRemover.cpp index 34dbc772af..628f64a9a6 100644 --- a/alib2elgo/src/automaton/simplify/efficient/UselessStatesRemover.cpp +++ b/alib2elgo/src/automaton/simplify/efficient/UselessStatesRemover.cpp @@ -6,6 +6,7 @@ */ #include "UselessStatesRemover.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -13,12 +14,12 @@ namespace simplify { namespace efficient { -auto UselessStatesRemoverEpsilonNFA = UselessStatesRemover::RegistratorWrapper<automaton::EpsilonNFA < >, automaton::EpsilonNFA < > >(UselessStatesRemover::remove); -auto UselessStatesRemoverNFA = UselessStatesRemover::RegistratorWrapper<automaton::NFA < > , automaton::NFA < > >(UselessStatesRemover::remove); -auto UselessStatesRemoverCompactNFA = UselessStatesRemover::RegistratorWrapper<automaton::CompactNFA < >, automaton::CompactNFA < > >(UselessStatesRemover::remove); -auto UselessStatesRemoverExtendedNFA = UselessStatesRemover::RegistratorWrapper<automaton::ExtendedNFA < >, automaton::ExtendedNFA < > >(UselessStatesRemover::remove); -auto UselessStatesRemoverDFA = UselessStatesRemover::RegistratorWrapper<automaton::DFA<>, automaton::DFA<>>(UselessStatesRemover::remove); -auto UselessStatesRemoverMultiInitialStateNFA = UselessStatesRemover::RegistratorWrapper<automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < >>(UselessStatesRemover::remove); +auto UselessStatesRemoverEpsilonNFA = registration::OverloadRegister < UselessStatesRemover, automaton::EpsilonNFA < >, automaton::EpsilonNFA < > > ( UselessStatesRemover::remove ); +auto UselessStatesRemoverNFA = registration::OverloadRegister < UselessStatesRemover, automaton::NFA < > , automaton::NFA < > > ( UselessStatesRemover::remove ); +auto UselessStatesRemoverCompactNFA = registration::OverloadRegister < UselessStatesRemover, automaton::CompactNFA < >, automaton::CompactNFA < > > ( UselessStatesRemover::remove ); +auto UselessStatesRemoverExtendedNFA = registration::OverloadRegister < UselessStatesRemover, automaton::ExtendedNFA < >, automaton::ExtendedNFA < > > ( UselessStatesRemover::remove ); +auto UselessStatesRemoverDFA = registration::OverloadRegister < UselessStatesRemover, automaton::DFA < >, automaton::DFA < > > ( UselessStatesRemover::remove ); +auto UselessStatesRemoverMultiInitialStateNFA = registration::OverloadRegister < UselessStatesRemover, automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < > > ( UselessStatesRemover::remove ); automaton::Automaton UselessStatesRemover::remove(const automaton::Automaton& automaton) { return dispatch(automaton.getData()); diff --git a/alib2raw/src/string/StringToRawComposer.cpp b/alib2raw/src/string/StringToRawComposer.cpp index adc50e1320..14b1b3c8ee 100644 --- a/alib2raw/src/string/StringToRawComposer.cpp +++ b/alib2raw/src/string/StringToRawComposer.cpp @@ -8,6 +8,8 @@ #include <string/StringClasses.h> #include "StringToRawComposer.h" +#include <registration/AlgoRegistration.hpp> + namespace string { void StringToRawComposer::compose(std::ostream& out, const String& string) { @@ -21,7 +23,7 @@ void StringToRawComposer::compose(std::ostream& out, const LinearString < Symbol } } -auto StringToRawComposerLinearString = StringToRawComposer::RegistratorWrapper<void, LinearString < > >(StringToRawComposer::compose); +auto StringToRawComposerLinearString = registration::OverloadRegister < StringToRawComposer, void, LinearString < > >(StringToRawComposer::compose); } /* namespace automaton */ diff --git a/alib2raw/src/tree/TreeToRawComposer.cpp b/alib2raw/src/tree/TreeToRawComposer.cpp index 4da3676850..1e7fd0c194 100644 --- a/alib2raw/src/tree/TreeToRawComposer.cpp +++ b/alib2raw/src/tree/TreeToRawComposer.cpp @@ -9,6 +9,8 @@ #include <tree/TreeClasses.h> #include "TreeToRawComposer.h" +#include <registration/AlgoRegistration.hpp> + namespace tree { void TreeToRawComposer::compose(std::deque<sax::Token>& out, const Tree& tree) { @@ -20,7 +22,7 @@ void TreeToRawComposer::compose(std::deque<sax::Token>& out, const RankedTree < composeNode(out, tree.getContent()); } -auto TreeToRawComposerRankedTree = TreeToRawComposer::RegistratorWrapper<void, RankedTree < > >(TreeToRawComposer::compose); +auto TreeToRawComposerRankedTree = registration::OverloadRegister < TreeToRawComposer, void, RankedTree < > >(TreeToRawComposer::compose); template < class SymbolType, class RankType > void TreeToRawComposer::compose(std::deque<sax::Token>& out, const PrefixRankedTree < SymbolType, RankType > & tree) { @@ -28,7 +30,7 @@ void TreeToRawComposer::compose(std::deque<sax::Token>& out, const PrefixRankedT composePrefixRankedNotation(out, i, tree.getContent()); } -auto TreeToRawComposerPrefixRankedTree = TreeToRawComposer::RegistratorWrapper<void, PrefixRankedTree < > >(TreeToRawComposer::compose); +auto TreeToRawComposerPrefixRankedTree = registration::OverloadRegister < TreeToRawComposer, void, PrefixRankedTree < > >(TreeToRawComposer::compose); template < class SymbolType > void TreeToRawComposer::compose(std::deque<sax::Token>& out, const PrefixRankedBarTree < SymbolType > & tree) { @@ -36,14 +38,14 @@ void TreeToRawComposer::compose(std::deque<sax::Token>& out, const PrefixRankedB composePrefixRankedBarNotation(out, i, tree.getContent()); } -auto TreeToRawComposerPrefixRankedBarTree = TreeToRawComposer::RegistratorWrapper<void, PrefixRankedBarTree < > >(TreeToRawComposer::compose); +auto TreeToRawComposerPrefixRankedBarTree = registration::OverloadRegister < TreeToRawComposer, void, PrefixRankedBarTree < > >(TreeToRawComposer::compose); template < class SymbolType > void TreeToRawComposer::compose(std::deque<sax::Token>& out, const UnrankedTree < SymbolType > & tree) { composeNode(out, tree.getContent()); } -auto TreeToRawComposerUnrankedTree = TreeToRawComposer::RegistratorWrapper<void, UnrankedTree < > >(TreeToRawComposer::compose); +auto TreeToRawComposerUnrankedTree = registration::OverloadRegister < TreeToRawComposer, void, UnrankedTree < > >(TreeToRawComposer::compose); } /* namespace automaton */ diff --git a/alib2str/src/automaton/AutomatonToStringComposer.cpp b/alib2str/src/automaton/AutomatonToStringComposer.cpp index f0839dc9b3..ed609149b9 100644 --- a/alib2str/src/automaton/AutomatonToStringComposer.cpp +++ b/alib2str/src/automaton/AutomatonToStringComposer.cpp @@ -11,6 +11,7 @@ #include "automaton/FSM/NFA.h" #include "automaton/FSM/MultiInitialStateNFA.h" #include "automaton/FSM/EpsilonNFA.h" +#include <registration/AlgoRegistration.hpp> namespace automaton { @@ -39,8 +40,8 @@ void AutomatonToStringComposer::compose(std::ostream& out, const DFA < SymbolTyp } } -auto AutomatonToStringComposerDFA = AutomatonToStringComposer::RegistratorWrapper<void, DFA < > >(AutomatonToStringComposer::compose); -auto ObjectToStringComposerDFA = alib::ObjectBaseDispatcher::RegistratorWrapper<void, DFA < > >( AutomatonToStringComposer::compose); +auto AutomatonToStringComposerDFA = registration::OverloadRegister < AutomatonToStringComposer, void, DFA < > >(AutomatonToStringComposer::compose); +auto ObjectToStringComposerDFA = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, DFA < > >( AutomatonToStringComposer::compose); template < class SymbolType, class StateType > void AutomatonToStringComposer::compose(std::ostream& out, const NFA < SymbolType, StateType > & automaton) { @@ -67,8 +68,8 @@ void AutomatonToStringComposer::compose(std::ostream& out, const NFA < SymbolTyp } } -auto AutomatonToStringComposerNFA = AutomatonToStringComposer::RegistratorWrapper<void, NFA < > >(AutomatonToStringComposer::compose); -auto ObjectToStringComposerNFA = alib::ObjectBaseDispatcher::RegistratorWrapper<void, NFA < > >( AutomatonToStringComposer::compose); +auto AutomatonToStringComposerNFA = registration::OverloadRegister < AutomatonToStringComposer, void, NFA < > >(AutomatonToStringComposer::compose); +auto ObjectToStringComposerNFA = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, NFA < > >( AutomatonToStringComposer::compose); template < class SymbolType, class StateType > void AutomatonToStringComposer::compose(std::ostream& out, const MultiInitialStateNFA < SymbolType, StateType > & automaton) { @@ -95,8 +96,8 @@ void AutomatonToStringComposer::compose(std::ostream& out, const MultiInitialSta } } -auto AutomatonToStringComposerMultiInitialStateNFA = AutomatonToStringComposer::RegistratorWrapper<void, MultiInitialStateNFA < > >(AutomatonToStringComposer::compose); -auto ObjectToStringComposerMultiInitialStateNFA = alib::ObjectBaseDispatcher::RegistratorWrapper<void, MultiInitialStateNFA < > >( AutomatonToStringComposer::compose); +auto AutomatonToStringComposerMultiInitialStateNFA = registration::OverloadRegister < AutomatonToStringComposer, void, MultiInitialStateNFA < > >(AutomatonToStringComposer::compose); +auto ObjectToStringComposerMultiInitialStateNFA = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, MultiInitialStateNFA < > >( AutomatonToStringComposer::compose); template < class SymbolType, class EpsilonType, class StateType > void AutomatonToStringComposer::compose(std::ostream& out, const EpsilonNFA < SymbolType, EpsilonType, StateType > & automaton) { @@ -124,13 +125,13 @@ void AutomatonToStringComposer::compose(std::ostream& out, const EpsilonNFA < Sy } } -auto AutomatonToStringComposerEpsilonNFA = AutomatonToStringComposer::RegistratorWrapper<void, EpsilonNFA < > >(AutomatonToStringComposer::compose); -auto ObjectToStringComposerEpsilonNFA = alib::ObjectBaseDispatcher::RegistratorWrapper<void, EpsilonNFA < > >( AutomatonToStringComposer::compose); +auto AutomatonToStringComposerEpsilonNFA = registration::OverloadRegister < AutomatonToStringComposer, void, EpsilonNFA < > >(AutomatonToStringComposer::compose); +auto ObjectToStringComposerEpsilonNFA = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, EpsilonNFA < > >( AutomatonToStringComposer::compose); void AutomatonToStringComposer::compose(std::ostream& output, const Automaton& automaton) { dispatch(output, automaton.getData()); } -auto ObjectToStringComposerAutomaton = alib::WrapperBaseDispatcher::RegistratorWrapper<void, Automaton>(AutomatonToStringComposer::compose); +auto ObjectToStringComposerAutomaton = registration::OverloadRegister < alib::WrapperBaseDispatcher, void, Automaton>(AutomatonToStringComposer::compose); } /* namespace automaton */ diff --git a/alib2str/src/grammar/GrammarToStringComposer.cpp b/alib2str/src/grammar/GrammarToStringComposer.cpp index 1bfbf55ba3..89f3b8fc73 100644 --- a/alib2str/src/grammar/GrammarToStringComposer.cpp +++ b/alib2str/src/grammar/GrammarToStringComposer.cpp @@ -7,6 +7,7 @@ #include "GrammarToStringComposer.h" #include "grammar/GrammarClasses.h" +#include <registration/AlgoRegistration.hpp> namespace grammar { @@ -14,7 +15,7 @@ void GrammarToStringComposer::compose(std::ostream& output, const Grammar& gramm dispatch(output, grammar.getData()); } -auto ObjectToStringComposerGrammar = alib::WrapperBaseDispatcher::RegistratorWrapper<void, Grammar>(GrammarToStringComposer::compose); +auto ObjectToStringComposerGrammar = registration::OverloadRegister < alib::WrapperBaseDispatcher, void, Grammar>(GrammarToStringComposer::compose); template<class SymbolType> void GrammarToStringComposer::compose(std::ostream& output, const LeftLG < SymbolType > & grammar) { @@ -22,8 +23,8 @@ void GrammarToStringComposer::compose(std::ostream& output, const LeftLG < Symbo composeCFLikeGrammar(output, grammar); } -auto GrammarToStringComposerLeftLG = GrammarToStringComposer::RegistratorWrapper<void, LeftLG < > >(GrammarToStringComposer::compose); -auto ObjectToStringComposerLeftLG = alib::ObjectBaseDispatcher::RegistratorWrapper<void, LeftLG < > >( GrammarToStringComposer::compose); +auto GrammarToStringComposerLeftLG = registration::OverloadRegister < GrammarToStringComposer, void, LeftLG < > >(GrammarToStringComposer::compose); +auto ObjectToStringComposerLeftLG = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, LeftLG < > >( GrammarToStringComposer::compose); template<class SymbolType> void GrammarToStringComposer::compose(std::ostream& output, const LeftRG < SymbolType > & grammar) { @@ -31,8 +32,8 @@ void GrammarToStringComposer::compose(std::ostream& output, const LeftRG < Symbo composeCFLikeGrammar(output, grammar); } -auto GrammarToStringComposerLeftRG = GrammarToStringComposer::RegistratorWrapper<void, LeftRG < > >(GrammarToStringComposer::compose); -auto ObjectToStringComposerLeftRG = alib::ObjectBaseDispatcher::RegistratorWrapper<void, LeftRG < > >( GrammarToStringComposer::compose); +auto GrammarToStringComposerLeftRG = registration::OverloadRegister < GrammarToStringComposer, void, LeftRG < > >(GrammarToStringComposer::compose); +auto ObjectToStringComposerLeftRG = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, LeftRG < > >( GrammarToStringComposer::compose); template<class SymbolType> void GrammarToStringComposer::compose(std::ostream& output, const RightLG < SymbolType > & grammar) { @@ -40,8 +41,8 @@ void GrammarToStringComposer::compose(std::ostream& output, const RightLG < Symb composeCFLikeGrammar(output, grammar); } -auto GrammarToStringComposerRightLG = GrammarToStringComposer::RegistratorWrapper<void, RightLG < > >(GrammarToStringComposer::compose); -auto ObjectToStringComposerRightLG = alib::ObjectBaseDispatcher::RegistratorWrapper<void, RightLG < > >( GrammarToStringComposer::compose); +auto GrammarToStringComposerRightLG = registration::OverloadRegister < GrammarToStringComposer, void, RightLG < > >(GrammarToStringComposer::compose); +auto ObjectToStringComposerRightLG = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, RightLG < > >( GrammarToStringComposer::compose); template<class SymbolType> void GrammarToStringComposer::compose(std::ostream& output, const RightRG < SymbolType > & grammar) { @@ -49,8 +50,8 @@ void GrammarToStringComposer::compose(std::ostream& output, const RightRG < Symb composeCFLikeGrammar(output, grammar); } -auto GrammarToStringComposerRightRG = GrammarToStringComposer::RegistratorWrapper<void, RightRG < > >(GrammarToStringComposer::compose); -auto ObjectToStringComposerRightRG = alib::ObjectBaseDispatcher::RegistratorWrapper<void, RightRG < > >( GrammarToStringComposer::compose); +auto GrammarToStringComposerRightRG = registration::OverloadRegister < GrammarToStringComposer, void, RightRG < > >(GrammarToStringComposer::compose); +auto ObjectToStringComposerRightRG = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, RightRG < > >( GrammarToStringComposer::compose); template<class SymbolType> void GrammarToStringComposer::compose(std::ostream& output, const LG < SymbolType > & grammar) { @@ -58,8 +59,8 @@ void GrammarToStringComposer::compose(std::ostream& output, const LG < SymbolTyp composeCFLikeGrammar(output, grammar); } -auto GrammarToStringComposerLG = GrammarToStringComposer::RegistratorWrapper<void, LG < > >(GrammarToStringComposer::compose); -auto ObjectToStringComposerLG = alib::ObjectBaseDispatcher::RegistratorWrapper<void, LG < > >( GrammarToStringComposer::compose); +auto GrammarToStringComposerLG = registration::OverloadRegister < GrammarToStringComposer, void, LG < > >(GrammarToStringComposer::compose); +auto ObjectToStringComposerLG = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, LG < > >( GrammarToStringComposer::compose); template<class SymbolType> void GrammarToStringComposer::compose(std::ostream& output, const CFG < SymbolType > & grammar) { @@ -67,8 +68,8 @@ void GrammarToStringComposer::compose(std::ostream& output, const CFG < SymbolTy composeCFLikeGrammar(output, grammar); } -auto GrammarToStringComposerCFG = GrammarToStringComposer::RegistratorWrapper<void, CFG < > >(GrammarToStringComposer::compose); -auto ObjectToStringComposerCFG = alib::ObjectBaseDispatcher::RegistratorWrapper<void, CFG < > >( GrammarToStringComposer::compose); +auto GrammarToStringComposerCFG = registration::OverloadRegister < GrammarToStringComposer, void, CFG < > >(GrammarToStringComposer::compose); +auto ObjectToStringComposerCFG = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, CFG < > >( GrammarToStringComposer::compose); template<class SymbolType> void GrammarToStringComposer::compose(std::ostream& output, const EpsilonFreeCFG < SymbolType > & grammar) { @@ -76,8 +77,8 @@ void GrammarToStringComposer::compose(std::ostream& output, const EpsilonFreeCFG composeCFLikeGrammar(output, grammar); } -auto GrammarToStringComposerEpsilonFreeCFG = GrammarToStringComposer::RegistratorWrapper<void, EpsilonFreeCFG < > >(GrammarToStringComposer::compose); -auto ObjectToStringComposerEpsilonFreeCFG = alib::ObjectBaseDispatcher::RegistratorWrapper<void, EpsilonFreeCFG < > >( GrammarToStringComposer::compose); +auto GrammarToStringComposerEpsilonFreeCFG = registration::OverloadRegister < GrammarToStringComposer, void, EpsilonFreeCFG < > >(GrammarToStringComposer::compose); +auto ObjectToStringComposerEpsilonFreeCFG = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, EpsilonFreeCFG < > >( GrammarToStringComposer::compose); template<class SymbolType> void GrammarToStringComposer::compose(std::ostream& output, const CNF < SymbolType > & grammar) { @@ -85,8 +86,8 @@ void GrammarToStringComposer::compose(std::ostream& output, const CNF < SymbolTy composeCFLikeGrammar(output, grammar); } -auto GrammarToStringComposerCNF = GrammarToStringComposer::RegistratorWrapper<void, CNF < > >(GrammarToStringComposer::compose); -auto ObjectToStringComposerCNF = alib::ObjectBaseDispatcher::RegistratorWrapper<void, CNF < > >( GrammarToStringComposer::compose); +auto GrammarToStringComposerCNF = registration::OverloadRegister < GrammarToStringComposer, void, CNF < > >(GrammarToStringComposer::compose); +auto ObjectToStringComposerCNF = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, CNF < > >( GrammarToStringComposer::compose); template<class SymbolType> void GrammarToStringComposer::compose(std::ostream& output, const GNF < SymbolType > & grammar) { @@ -94,8 +95,8 @@ void GrammarToStringComposer::compose(std::ostream& output, const GNF < SymbolTy composeCFLikeGrammar(output, grammar); } -auto GrammarToStringComposerGNF = GrammarToStringComposer::RegistratorWrapper<void, GNF < > >(GrammarToStringComposer::compose); -auto ObjectToStringComposerGNF = alib::ObjectBaseDispatcher::RegistratorWrapper<void, GNF < > >( GrammarToStringComposer::compose); +auto GrammarToStringComposerGNF = registration::OverloadRegister < GrammarToStringComposer, void, GNF < > >(GrammarToStringComposer::compose); +auto ObjectToStringComposerGNF = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, GNF < > >( GrammarToStringComposer::compose); template<class SymbolType> void GrammarToStringComposer::compose(std::ostream& output, const CSG < SymbolType > & grammar) { @@ -103,8 +104,8 @@ void GrammarToStringComposer::compose(std::ostream& output, const CSG < SymbolTy composePreservingCSLikeGrammar(output, grammar); } -auto GrammarToStringComposerCSG = GrammarToStringComposer::RegistratorWrapper<void, CSG < > >(GrammarToStringComposer::compose); -auto ObjectToStringComposerCSG = alib::ObjectBaseDispatcher::RegistratorWrapper<void, CSG < > >( GrammarToStringComposer::compose); +auto GrammarToStringComposerCSG = registration::OverloadRegister < GrammarToStringComposer, void, CSG < > >(GrammarToStringComposer::compose); +auto ObjectToStringComposerCSG = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, CSG < > >( GrammarToStringComposer::compose); template<class SymbolType> void GrammarToStringComposer::compose(std::ostream& output, const NonContractingGrammar < SymbolType > & grammar) { @@ -112,8 +113,8 @@ void GrammarToStringComposer::compose(std::ostream& output, const NonContracting composeCSLikeGrammar(output, grammar); } -auto GrammarToStringComposerNonContractingGrammar = GrammarToStringComposer::RegistratorWrapper<void, NonContractingGrammar < > >(GrammarToStringComposer::compose); -auto ObjectToStringComposerNonContractingGrammar = alib::ObjectBaseDispatcher::RegistratorWrapper<void, NonContractingGrammar < > >( GrammarToStringComposer::compose); +auto GrammarToStringComposerNonContractingGrammar = registration::OverloadRegister < GrammarToStringComposer, void, NonContractingGrammar < > >(GrammarToStringComposer::compose); +auto ObjectToStringComposerNonContractingGrammar = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, NonContractingGrammar < > >( GrammarToStringComposer::compose); template<class SymbolType> void GrammarToStringComposer::compose(std::ostream& output, const ContextPreservingUnrestrictedGrammar < SymbolType > & grammar) { @@ -121,8 +122,8 @@ void GrammarToStringComposer::compose(std::ostream& output, const ContextPreserv composePreservingCSLikeGrammar(output, grammar); } -auto GrammarToStringComposerContextPreservingUnrestructedGrammar = GrammarToStringComposer::RegistratorWrapper<void, ContextPreservingUnrestrictedGrammar < > >(GrammarToStringComposer::compose); -auto ObjectToStringComposerContextPreservingUnrestrictedGrammar = alib::ObjectBaseDispatcher::RegistratorWrapper<void, ContextPreservingUnrestrictedGrammar < > >( GrammarToStringComposer::compose); +auto GrammarToStringComposerContextPreservingUnrestructedGrammar = registration::OverloadRegister < GrammarToStringComposer, void, ContextPreservingUnrestrictedGrammar < > >(GrammarToStringComposer::compose); +auto ObjectToStringComposerContextPreservingUnrestrictedGrammar = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, ContextPreservingUnrestrictedGrammar < > >( GrammarToStringComposer::compose); template<class SymbolType> void GrammarToStringComposer::compose(std::ostream& output, const UnrestrictedGrammar < SymbolType > & grammar) { @@ -130,7 +131,7 @@ void GrammarToStringComposer::compose(std::ostream& output, const UnrestrictedGr composeCSLikeGrammar(output, grammar); } -auto GrammarToStringComposerUnrestructedGrammar = GrammarToStringComposer::RegistratorWrapper<void, UnrestrictedGrammar < > >(GrammarToStringComposer::compose); -auto ObjectToStringComposerUnrestrictedGrammar = alib::ObjectBaseDispatcher::RegistratorWrapper<void, UnrestrictedGrammar < > >( GrammarToStringComposer::compose); +auto GrammarToStringComposerUnrestructedGrammar = registration::OverloadRegister < GrammarToStringComposer, void, UnrestrictedGrammar < > >(GrammarToStringComposer::compose); +auto ObjectToStringComposerUnrestrictedGrammar = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, UnrestrictedGrammar < > >( GrammarToStringComposer::compose); } diff --git a/alib2str/src/object/ObjectToStringComposer.cpp b/alib2str/src/object/ObjectToStringComposer.cpp index 410bbbbc63..e899b43ce1 100644 --- a/alib2str/src/object/ObjectToStringComposer.cpp +++ b/alib2str/src/object/ObjectToStringComposer.cpp @@ -7,6 +7,7 @@ #include "ObjectToStringComposer.h" #include "../StringApi.hpp" +#include <registration/AlgoRegistration.hpp> namespace alib { @@ -24,25 +25,25 @@ void ObjectToStringComposer::compose(std::ostream& out, const Object& object) { compose( out, object.getData ( ) ); } -auto ObjectToStringComposerObject = WrapperBaseDispatcher::RegistratorWrapper<void, Object>(ObjectToStringComposer::compose); +auto ObjectToStringComposerObject = registration::OverloadRegister < WrapperBaseDispatcher, void, Object>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const primitive::Primitive& primitive) { compose(out, primitive.getData()); } -auto ObjectToStringComposerPrimitive = WrapperBaseDispatcher::RegistratorWrapper<void, primitive::Primitive>(ObjectToStringComposer::compose); +auto ObjectToStringComposerPrimitive = registration::OverloadRegister < WrapperBaseDispatcher, void, primitive::Primitive>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& output, const label::Label& label) { compose(output, label.getData()); } -auto ObjectToStringComposerLabel = WrapperBaseDispatcher::RegistratorWrapper<void, label::Label>(ObjectToStringComposer::compose); +auto ObjectToStringComposerLabel = registration::OverloadRegister < WrapperBaseDispatcher, void, label::Label>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const alphabet::Symbol& symbol) { compose(out, symbol.getData()); } -auto ObjectToStringComposerSymbol = WrapperBaseDispatcher::RegistratorWrapper<void, alphabet::Symbol>(ObjectToStringComposer::compose); +auto ObjectToStringComposerSymbol = registration::OverloadRegister < WrapperBaseDispatcher, void, alphabet::Symbol>(ObjectToStringComposer::compose); // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -50,19 +51,19 @@ void ObjectToStringComposer::compose(std::ostream& out, const Void&) { out << "Void"; } -auto ObjectToStringComposerVoid = ObjectBaseDispatcher::RegistratorWrapper<void, Void>(ObjectToStringComposer::compose); +auto ObjectToStringComposerVoid = registration::OverloadRegister < ObjectBaseDispatcher, void, Void>(ObjectToStringComposer::compose); -auto ObjectToStringComposerAnyObjectSet = ObjectBaseDispatcher::RegistratorWrapper<void, AnyObject < std::set < Object > > >(ObjectToStringComposer::compose); +auto ObjectToStringComposerAnyObjectSet = registration::OverloadRegister < ObjectBaseDispatcher, void, AnyObject < std::set < Object > > >(ObjectToStringComposer::compose); -auto ObjectToStringComposerAnyObjectPair = ObjectBaseDispatcher::RegistratorWrapper<void, AnyObject < std::pair < Object, Object > > >(ObjectToStringComposer::compose); +auto ObjectToStringComposerAnyObjectPair = registration::OverloadRegister < ObjectBaseDispatcher, void, AnyObject < std::pair < Object, Object > > >(ObjectToStringComposer::compose); -auto ObjectToStringComposerAnyObjectUnsigned = ObjectBaseDispatcher::RegistratorWrapper<void, AnyObject < unsigned > >(ObjectToStringComposer::compose); +auto ObjectToStringComposerAnyObjectUnsigned = registration::OverloadRegister < ObjectBaseDispatcher, void, AnyObject < unsigned > >(ObjectToStringComposer::compose); -auto ObjectToStringComposerObjectsPair = ObjectBaseDispatcher::RegistratorWrapper<void, container::ObjectsPair < Object, Object > >(ObjectToStringComposer::compose); +auto ObjectToStringComposerObjectsPair = registration::OverloadRegister < ObjectBaseDispatcher, void, container::ObjectsPair < Object, Object > >(ObjectToStringComposer::compose); -auto ObjectToStringComposerObjectsSet = ObjectBaseDispatcher::RegistratorWrapper<void, container::ObjectsSet < Object > >(ObjectToStringComposer::compose); +auto ObjectToStringComposerObjectsSet = registration::OverloadRegister < ObjectBaseDispatcher, void, container::ObjectsSet < Object > >(ObjectToStringComposer::compose); -auto ObjectToStringComposerObjectsVector = ObjectBaseDispatcher::RegistratorWrapper<void, container::ObjectsVector < Object > >(ObjectToStringComposer::compose); +auto ObjectToStringComposerObjectsVector = registration::OverloadRegister < ObjectBaseDispatcher, void, container::ObjectsVector < Object > >(ObjectToStringComposer::compose); // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -70,25 +71,25 @@ void ObjectToStringComposer::compose(std::ostream& out, const primitive::String& out << primitive.getData(); } -auto ObjectToStringComposerString = ObjectBaseDispatcher::RegistratorWrapper<void, primitive::String>(ObjectToStringComposer::compose); +auto ObjectToStringComposerString = registration::OverloadRegister < ObjectBaseDispatcher, void, primitive::String>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const primitive::Character& primitive) { out << primitive.getData(); } -auto ObjectToStringComposerCharacter = ObjectBaseDispatcher::RegistratorWrapper<void, primitive::Character>(ObjectToStringComposer::compose); +auto ObjectToStringComposerCharacter = registration::OverloadRegister < ObjectBaseDispatcher, void, primitive::Character>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const primitive::Integer& primitive) { out << primitive.getData(); } -auto ObjectToStringComposerInteger = ObjectBaseDispatcher::RegistratorWrapper<void, primitive::Integer>(ObjectToStringComposer::compose); +auto ObjectToStringComposerInteger = registration::OverloadRegister < ObjectBaseDispatcher, void, primitive::Integer>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const primitive::Unsigned& primitive) { out << primitive.getData(); } -auto ObjectToStringComposerUnsigned = ObjectBaseDispatcher::RegistratorWrapper<void, primitive::Unsigned>(ObjectToStringComposer::compose); +auto ObjectToStringComposerUnsigned = registration::OverloadRegister < ObjectBaseDispatcher, void, primitive::Unsigned>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, unsigned primitive) { out << primitive; @@ -98,7 +99,7 @@ void ObjectToStringComposer::compose(std::ostream& out, const primitive::Bool& p out << (primitive.getData() ? "true" : "false"); } -auto ObjectToStringComposerBool = ObjectBaseDispatcher::RegistratorWrapper<void, primitive::Bool>(ObjectToStringComposer::compose); +auto ObjectToStringComposerBool = registration::OverloadRegister < ObjectBaseDispatcher, void, primitive::Bool>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const alphabet::LabeledSymbol& symbol) { compose(out, symbol.getLabel()); @@ -110,19 +111,19 @@ void ObjectToStringComposer::compose(std::ostream& out, const label::PrimitiveLa compose(out, label.getData()); } -auto ObjectToStringComposerPrimitiveLabel = ObjectBaseDispatcher::RegistratorWrapper<void, label::PrimitiveLabel>(ObjectToStringComposer::compose); +auto ObjectToStringComposerPrimitiveLabel = registration::OverloadRegister < ObjectBaseDispatcher, void, label::PrimitiveLabel>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const label::HexavigesimalLabel& label) { out << (std::string) label; } -auto ObjectToStringComposerHexavigesimalLabel = ObjectBaseDispatcher::RegistratorWrapper<void, label::HexavigesimalLabel>(ObjectToStringComposer::compose); +auto ObjectToStringComposerHexavigesimalLabel = registration::OverloadRegister < ObjectBaseDispatcher, void, label::HexavigesimalLabel>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const label::ObjectLabel& label) { out << (std::string) label; } -auto ObjectToStringComposerObjectLabel = ObjectBaseDispatcher::RegistratorWrapper<void, label::ObjectLabel>(ObjectToStringComposer::compose); +auto ObjectToStringComposerObjectLabel = registration::OverloadRegister < ObjectBaseDispatcher, void, label::ObjectLabel>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const label::UniqueLabel& label) { out << '<'; @@ -132,75 +133,75 @@ void ObjectToStringComposer::compose(std::ostream& out, const label::UniqueLabel out << '>'; } -auto ObjectToStringComposerUniqueLabel = ObjectBaseDispatcher::RegistratorWrapper<void, label::UniqueLabel>(ObjectToStringComposer::compose); +auto ObjectToStringComposerUniqueLabel = registration::OverloadRegister < ObjectBaseDispatcher, void, label::UniqueLabel>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const label::FailStateLabel& label) { out << (std::string) label; } -auto ObjectToStringComposerFailStateLabel = ObjectBaseDispatcher::RegistratorWrapper<void, label::FailStateLabel>(ObjectToStringComposer::compose); +auto ObjectToStringComposerFailStateLabel = registration::OverloadRegister < ObjectBaseDispatcher, void, label::FailStateLabel>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const label::InitialStateLabel& label) { out << (std::string) label; } -auto ObjectToStringComposerInitialStateLabel = ObjectBaseDispatcher::RegistratorWrapper<void, label::InitialStateLabel>(ObjectToStringComposer::compose); +auto ObjectToStringComposerInitialStateLabel = registration::OverloadRegister < ObjectBaseDispatcher, void, label::InitialStateLabel>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const label::FinalStateLabel& label) { out << (std::string) label; } -auto ObjectToStringComposerFinalStateLabel = ObjectBaseDispatcher::RegistratorWrapper<void, label::FinalStateLabel>(ObjectToStringComposer::compose); +auto ObjectToStringComposerFinalStateLabel = registration::OverloadRegister < ObjectBaseDispatcher, void, label::FinalStateLabel>(ObjectToStringComposer::compose); // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -auto ObjectToStringComposerLabeledSymbol = ObjectBaseDispatcher::RegistratorWrapper<void, alphabet::LabeledSymbol>(ObjectToStringComposer::compose); +auto ObjectToStringComposerLabeledSymbol = registration::OverloadRegister < ObjectBaseDispatcher, void, alphabet::LabeledSymbol>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const alphabet::BlankSymbol&) { out << "#B"; } -auto ObjectToStringComposerBlankSymbol = ObjectBaseDispatcher::RegistratorWrapper<void, alphabet::BlankSymbol>(ObjectToStringComposer::compose); +auto ObjectToStringComposerBlankSymbol = registration::OverloadRegister < ObjectBaseDispatcher, void, alphabet::BlankSymbol>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const alphabet::BottomOfTheStackSymbol&) { out << "#T"; } -auto ObjectToStringComposerBottomOfTheStackSymbol = ObjectBaseDispatcher::RegistratorWrapper<void, alphabet::BottomOfTheStackSymbol>(ObjectToStringComposer::compose); +auto ObjectToStringComposerBottomOfTheStackSymbol = registration::OverloadRegister < ObjectBaseDispatcher, void, alphabet::BottomOfTheStackSymbol>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const alphabet::EndSymbol&) { out << "#$"; } -auto ObjectToStringComposerEndSymbol = ObjectBaseDispatcher::RegistratorWrapper<void, alphabet::EndSymbol>(ObjectToStringComposer::compose); +auto ObjectToStringComposerEndSymbol = registration::OverloadRegister < ObjectBaseDispatcher, void, alphabet::EndSymbol>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const alphabet::StartSymbol&) { out << "#^"; } -auto ObjectToStringComposerStartSymbol = ObjectBaseDispatcher::RegistratorWrapper<void, alphabet::StartSymbol>(ObjectToStringComposer::compose); +auto ObjectToStringComposerStartSymbol = registration::OverloadRegister < ObjectBaseDispatcher, void, alphabet::StartSymbol>(ObjectToStringComposer::compose); -auto ObjectToStringComposerRankedSymbol = ObjectBaseDispatcher::RegistratorWrapper<void, alphabet::RankedSymbol < > >(ObjectToStringComposer::compose); +auto ObjectToStringComposerRankedSymbol = registration::OverloadRegister < ObjectBaseDispatcher, void, alphabet::RankedSymbol < > >(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const alphabet::BarSymbol&) { out << "#|"; } -auto ObjectToStringComposerBarSymbol = ObjectBaseDispatcher::RegistratorWrapper<void, alphabet::BarSymbol>(ObjectToStringComposer::compose); +auto ObjectToStringComposerBarSymbol = registration::OverloadRegister < ObjectBaseDispatcher, void, alphabet::BarSymbol>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const alphabet::VariablesBarSymbol&) { out << "#/"; } -auto ObjectToStringComposerVariablesBarSymbol = ObjectBaseDispatcher::RegistratorWrapper<void, alphabet::VariablesBarSymbol>(ObjectToStringComposer::compose); +auto ObjectToStringComposerVariablesBarSymbol = registration::OverloadRegister < ObjectBaseDispatcher, void, alphabet::VariablesBarSymbol>(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const alphabet::SubtreeWildcardSymbol&) { out << "#S"; } -auto ObjectToStringComposerSubtreeWildcardSymbol = ObjectBaseDispatcher::RegistratorWrapper<void, alphabet::SubtreeWildcardSymbol>(ObjectToStringComposer::compose); +auto ObjectToStringComposerSubtreeWildcardSymbol = registration::OverloadRegister < ObjectBaseDispatcher, void, alphabet::SubtreeWildcardSymbol>(ObjectToStringComposer::compose); -auto ObjectToStringComposerNonlinearVariableSymbol = ObjectBaseDispatcher::RegistratorWrapper<void, alphabet::NonlinearVariableSymbol < > >(ObjectToStringComposer::compose); +auto ObjectToStringComposerNonlinearVariableSymbol = registration::OverloadRegister < ObjectBaseDispatcher, void, alphabet::NonlinearVariableSymbol < > >(ObjectToStringComposer::compose); void ObjectToStringComposer::compose(std::ostream& out, const alphabet::UniqueSymbol& symbol) { out << '<'; @@ -210,6 +211,6 @@ void ObjectToStringComposer::compose(std::ostream& out, const alphabet::UniqueSy out << '>'; } -auto ObjectToStringComposerUniqueSymbol = ObjectBaseDispatcher::RegistratorWrapper<void, alphabet::UniqueSymbol>(ObjectToStringComposer::compose); +auto ObjectToStringComposerUniqueSymbol = registration::OverloadRegister < ObjectBaseDispatcher, void, alphabet::UniqueSymbol>(ObjectToStringComposer::compose); } /* namespace alib */ diff --git a/alib2str/src/regexp/RegExpToStringComposer.cpp b/alib2str/src/regexp/RegExpToStringComposer.cpp index de9c182b7e..6a5d08dc3e 100644 --- a/alib2str/src/regexp/RegExpToStringComposer.cpp +++ b/alib2str/src/regexp/RegExpToStringComposer.cpp @@ -6,6 +6,7 @@ */ #include "RegExpToStringComposer.h" +#include <registration/AlgoRegistration.hpp> namespace regexp { @@ -14,21 +15,21 @@ void RegExpToStringComposer::compose(std::ostream& output, const UnboundedRegExp RegExpToStringComposer::compose ( output, regexp.getRegExp ( ) ); } -auto RegExpToStringComposerUnboundedRegExp = RegExpToStringComposer::RegistratorWrapper<void, UnboundedRegExp < > >(RegExpToStringComposer::compose); -auto ObjectToStringComposerUnboundedRegExp = alib::ObjectBaseDispatcher::RegistratorWrapper<void, UnboundedRegExp < > >( RegExpToStringComposer::compose); +auto RegExpToStringComposerUnboundedRegExp = registration::OverloadRegister < RegExpToStringComposer, void, UnboundedRegExp < > >(RegExpToStringComposer::compose); +auto ObjectToStringComposerUnboundedRegExp = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, UnboundedRegExp < > >( RegExpToStringComposer::compose); template < class SymbolType > void RegExpToStringComposer::compose(std::ostream& output, const FormalRegExp < SymbolType > & regexp) { RegExpToStringComposer::compose ( output, regexp.getRegExp ( ) ); } -auto RegExpToStringComposerFormalRegExp = RegExpToStringComposer::RegistratorWrapper<void, FormalRegExp < > >(RegExpToStringComposer::compose); -auto ObjectToStringComposerFormalRegExp = alib::ObjectBaseDispatcher::RegistratorWrapper<void, FormalRegExp < > >( RegExpToStringComposer::compose); +auto RegExpToStringComposerFormalRegExp = registration::OverloadRegister < RegExpToStringComposer, void, FormalRegExp < > >(RegExpToStringComposer::compose); +auto ObjectToStringComposerFormalRegExp = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, FormalRegExp < > >( RegExpToStringComposer::compose); void RegExpToStringComposer::compose(std::ostream& output, const RegExp& regexp) { dispatch(output, regexp.getData()); } -auto ObjectToStringComposerRegExp = alib::WrapperBaseDispatcher::RegistratorWrapper<void, RegExp>(RegExpToStringComposer::compose); +auto ObjectToStringComposerRegExp = registration::OverloadRegister < alib::WrapperBaseDispatcher, void, RegExp>(RegExpToStringComposer::compose); } /* namespace regexp */ diff --git a/alib2str/src/string/StringToStringComposer.cpp b/alib2str/src/string/StringToStringComposer.cpp index 8bc76c2faa..7b09f744d2 100644 --- a/alib2str/src/string/StringToStringComposer.cpp +++ b/alib2str/src/string/StringToStringComposer.cpp @@ -12,6 +12,8 @@ #include "string/LinearString.h" #include "string/Epsilon.h" +#include <registration/AlgoRegistration.hpp> + namespace string { template < class SymbolType > @@ -30,8 +32,8 @@ void StringToStringComposer::compose ( std::ostream & out, const CyclicString < out << ">"; } -auto StringToStringComposerCyclicString = StringToStringComposer::RegistratorWrapper < void, CyclicString < > > ( StringToStringComposer::compose ); -auto ObjectToStringComposerCyclicString = alib::ObjectBaseDispatcher::RegistratorWrapper<void, CyclicString < > >( StringToStringComposer::compose); +auto StringToStringComposerCyclicString = registration::OverloadRegister < StringToStringComposer, void, CyclicString < > > ( StringToStringComposer::compose ); +auto ObjectToStringComposerCyclicString = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, CyclicString < > >( StringToStringComposer::compose); template < class SymbolType > void StringToStringComposer::compose ( std::ostream & out, const LinearString < SymbolType > & string ) { @@ -49,21 +51,21 @@ void StringToStringComposer::compose ( std::ostream & out, const LinearString < out << "\""; } -auto StringToStringComposerLinearString = StringToStringComposer::RegistratorWrapper < void, LinearString < > > ( StringToStringComposer::compose ); -auto ObjectToStringComposerLinearString = alib::ObjectBaseDispatcher::RegistratorWrapper<void, LinearString < > >( StringToStringComposer::compose); +auto StringToStringComposerLinearString = registration::OverloadRegister < StringToStringComposer, void, LinearString < > > ( StringToStringComposer::compose ); +auto ObjectToStringComposerLinearString = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, LinearString < > >( StringToStringComposer::compose); template < class SymbolType > void StringToStringComposer::compose ( std::ostream & out, const Epsilon < SymbolType > & ) { out << "#E"; } -auto StringToStringComposerEpsilon = StringToStringComposer::RegistratorWrapper < void, Epsilon < > > ( StringToStringComposer::compose ); -auto ObjectToStringComposerEpsilon = alib::ObjectBaseDispatcher::RegistratorWrapper<void, Epsilon < > >( StringToStringComposer::compose); +auto StringToStringComposerEpsilon = registration::OverloadRegister < StringToStringComposer, void, Epsilon < > > ( StringToStringComposer::compose ); +auto ObjectToStringComposerEpsilon = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, Epsilon < > >( StringToStringComposer::compose); void StringToStringComposer::compose ( std::ostream & out, const String & string ) { dispatch ( out, string.getData ( ) ); } -auto ObjectToStringComposerString = alib::WrapperBaseDispatcher::RegistratorWrapper<void, String>(StringToStringComposer::compose); +auto ObjectToStringComposerString = registration::OverloadRegister < alib::WrapperBaseDispatcher, void, String>(StringToStringComposer::compose); } /* namespace string */ diff --git a/alib2str/src/tree/TreeToStringComposer.cpp b/alib2str/src/tree/TreeToStringComposer.cpp index 4c0b79d471..cff19603f7 100644 --- a/alib2str/src/tree/TreeToStringComposer.cpp +++ b/alib2str/src/tree/TreeToStringComposer.cpp @@ -11,6 +11,8 @@ #include <tree/unranked/UnrankedTree.h> #include <tree/unranked/UnrankedPattern.h> +#include <registration/AlgoRegistration.hpp> + namespace tree { template < class SymbolType, class RankType > @@ -18,37 +20,37 @@ void TreeToStringComposer::compose ( std::ostream & out, const RankedTree < Symb compose ( out, tree.getContent ( ) ); } -auto StringToStringComposerRankedTree = TreeToStringComposer::RegistratorWrapper < void, RankedTree < > > ( TreeToStringComposer::compose ); -auto ObjectToStringComposerRankedTree = alib::ObjectBaseDispatcher::RegistratorWrapper<void, RankedTree < > >(TreeToStringComposer::compose); +auto StringToStringComposerRankedTree = registration::OverloadRegister < TreeToStringComposer, void, RankedTree < > > ( TreeToStringComposer::compose ); +auto ObjectToStringComposerRankedTree = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, RankedTree < > >(TreeToStringComposer::compose); template < class SymbolType, class RankType > void TreeToStringComposer::compose ( std::ostream & out, const RankedPattern < SymbolType, RankType > & tree ) { compose ( out, tree.getSubtreeWildcard ( ), tree.getContent ( ) ); } -auto StringToStringComposerRankedPattern = TreeToStringComposer::RegistratorWrapper < void, RankedPattern < > > ( TreeToStringComposer::compose ); -auto ObjectToStringComposerRankedPattern = alib::ObjectBaseDispatcher::RegistratorWrapper<void, RankedPattern < > >(TreeToStringComposer::compose); +auto StringToStringComposerRankedPattern = registration::OverloadRegister < TreeToStringComposer, void, RankedPattern < > > ( TreeToStringComposer::compose ); +auto ObjectToStringComposerRankedPattern = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, RankedPattern < > >(TreeToStringComposer::compose); template < class SymbolType > void TreeToStringComposer::compose ( std::ostream & out, const UnrankedTree < SymbolType > & tree ) { compose ( out, tree.getContent ( ) ); } -auto StringToStringComposerUnrankedTree = TreeToStringComposer::RegistratorWrapper < void, UnrankedTree < > > ( TreeToStringComposer::compose ); -auto ObjectToStringComposerUnrankedTree = alib::ObjectBaseDispatcher::RegistratorWrapper<void, UnrankedTree < > >(TreeToStringComposer::compose); +auto StringToStringComposerUnrankedTree = registration::OverloadRegister < TreeToStringComposer, void, UnrankedTree < > > ( TreeToStringComposer::compose ); +auto ObjectToStringComposerUnrankedTree = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, UnrankedTree < > >(TreeToStringComposer::compose); template < class SymbolType > void TreeToStringComposer::compose ( std::ostream & out, const UnrankedPattern < SymbolType > & tree ) { compose ( out, tree.getSubtreeWildcard ( ), tree.getContent ( ) ); } -auto StringToStringComposerUnrankedPattern = TreeToStringComposer::RegistratorWrapper < void, UnrankedPattern < > > ( TreeToStringComposer::compose ); -auto ObjectToStringComposerUnrankedPattern = alib::ObjectBaseDispatcher::RegistratorWrapper<void, UnrankedPattern < > >(TreeToStringComposer::compose); +auto StringToStringComposerUnrankedPattern = registration::OverloadRegister < TreeToStringComposer, void, UnrankedPattern < > > ( TreeToStringComposer::compose ); +auto ObjectToStringComposerUnrankedPattern = registration::OverloadRegister < alib::ObjectBaseDispatcher, void, UnrankedPattern < > >(TreeToStringComposer::compose); void TreeToStringComposer::compose ( std::ostream & out, const Tree & tree ) { dispatch ( out, tree.getData ( ) ); } -auto ObjectToStringComposerTree = alib::WrapperBaseDispatcher::RegistratorWrapper<void, Tree>(TreeToStringComposer::compose); +auto ObjectToStringComposerTree = registration::OverloadRegister < alib::WrapperBaseDispatcher, void, Tree>(TreeToStringComposer::compose); } /* namespace tree */ diff --git a/alib2str_experimental/src/graph/GraphToStringComposer.cpp b/alib2str_experimental/src/graph/GraphToStringComposer.cpp index c8f3c23aeb..a74ccf1fa5 100644 --- a/alib2str_experimental/src/graph/GraphToStringComposer.cpp +++ b/alib2str_experimental/src/graph/GraphToStringComposer.cpp @@ -11,6 +11,8 @@ #include <StringApi.hpp> #include <label/LabelStringApi.hpp> +#include <registration/AlgoRegistration.hpp> + namespace graph { void GraphToStringComposer::compose(std::ostream &out, const Graph &graph) @@ -34,7 +36,7 @@ void GraphToStringComposer::compose(std::ostream& out, const DirectedGraph &grap composeEdgeValues(out, graph); } -//auto GraphToStringComposerDirectedGraph = GraphToStringComposer::RegistratorWrapper<void, DirectedGraph>(GraphToStringComposer::compose); +//auto GraphToStringComposerDirectedGraph = registration::OverloadRegister < GraphToStringComposer, void, DirectedGraph>(GraphToStringComposer::compose); void GraphToStringComposer::compose(std::ostream& out, const UndirectedGraph &graph) { @@ -50,7 +52,7 @@ void GraphToStringComposer::compose(std::ostream& out, const UndirectedGraph &gr composeEdgeValues(out, graph); } -//auto> GraphToStringComposerUndirectedGraph = GraphToStringComposer::RegistratorWrapper<void, UndirectedGraph>(GraphToStringComposer::compose); +//auto> GraphToStringComposerUndirectedGraph = registration::OverloadRegister < GraphToStringComposer, void, UndirectedGraph>(GraphToStringComposer::compose); // !! add graph types/representations @@ -58,25 +60,25 @@ void composeALDG(std::ostream & out, const AdjacencyListDirectedGraph & graph) { GraphToStringComposer::compose(out, graph); } -auto GraphToStringComposerALDG = GraphToStringComposer::RegistratorWrapper<void, AdjacencyListDirectedGraph>(composeALDG); +auto GraphToStringComposerALDG = registration::OverloadRegister < GraphToStringComposer, void, AdjacencyListDirectedGraph>(composeALDG); void composeAMDG(std::ostream & out, const AdjacencyMatrixDirectedGraph & graph) { GraphToStringComposer::compose(out, graph); } -auto GraphToStringComposerAMDG = GraphToStringComposer::RegistratorWrapper<void, AdjacencyMatrixDirectedGraph>(composeAMDG); +auto GraphToStringComposerAMDG = registration::OverloadRegister < GraphToStringComposer, void, AdjacencyMatrixDirectedGraph>(composeAMDG); void composeALUG(std::ostream & out, const AdjacencyListUndirectedGraph & graph) { GraphToStringComposer::compose(out, graph); } -auto GraphToStringComposerALUG = GraphToStringComposer::RegistratorWrapper<void, AdjacencyListUndirectedGraph>(composeALUG); +auto GraphToStringComposerALUG = registration::OverloadRegister < GraphToStringComposer, void, AdjacencyListUndirectedGraph>(composeALUG); void composeAMUG(std::ostream & out, const AdjacencyMatrixUndirectedGraph & graph) { GraphToStringComposer::compose(out, graph); } -auto GraphToStringComposerAMUG = GraphToStringComposer::RegistratorWrapper<void, AdjacencyMatrixUndirectedGraph>(composeAMUG); +auto GraphToStringComposerAMUG = registration::OverloadRegister < GraphToStringComposer, void, AdjacencyMatrixUndirectedGraph>(composeAMUG); diff --git a/alib2str_experimental/src/label/LabelToStringComposer.cpp b/alib2str_experimental/src/label/LabelToStringComposer.cpp index aaccebc5e3..8445aabaa7 100644 --- a/alib2str_experimental/src/label/LabelToStringComposer.cpp +++ b/alib2str_experimental/src/label/LabelToStringComposer.cpp @@ -18,25 +18,27 @@ #include <StringApi.hpp> +#include <registration/AlgoRegistration.hpp> + namespace label { void LabelToStringComposer::compose(std::ostream& out, const PrimitiveLabel& label) { alib::stringApi<primitive::Primitive>::compose(out, label.getData()); } -auto LabelToStringComposerPrimitiveLabel = LabelToStringComposer::RegistratorWrapper<void, PrimitiveLabel>(LabelToStringComposer::compose); +auto LabelToStringComposerPrimitiveLabel = registration::OverloadRegister < LabelToStringComposer, void, PrimitiveLabel>(LabelToStringComposer::compose); void LabelToStringComposer::compose(std::ostream& out, const HexavigesimalLabel& label) { out << (std::string) label; } -auto LabelToStringComposerHexavigesimalLabel = LabelToStringComposer::RegistratorWrapper<void, HexavigesimalLabel>(LabelToStringComposer::compose); +auto LabelToStringComposerHexavigesimalLabel = registration::OverloadRegister < LabelToStringComposer, void, HexavigesimalLabel>(LabelToStringComposer::compose); void LabelToStringComposer::compose(std::ostream& out, const ObjectLabel& label) { out << (std::string) label; } -auto LabelToStringComposerObjectLabel = LabelToStringComposer::RegistratorWrapper<void, ObjectLabel>(LabelToStringComposer::compose); +auto LabelToStringComposerObjectLabel = registration::OverloadRegister < LabelToStringComposer, void, ObjectLabel>(LabelToStringComposer::compose); void LabelToStringComposer::compose(std::ostream& out, const UniqueLabel& label) { out << '<'; @@ -46,25 +48,25 @@ void LabelToStringComposer::compose(std::ostream& out, const UniqueLabel& label) out << '>'; } -auto LabelToStringComposerUniqueLabel = LabelToStringComposer::RegistratorWrapper<void, UniqueLabel>(LabelToStringComposer::compose); +auto LabelToStringComposerUniqueLabel = registration::OverloadRegister < LabelToStringComposer, void, UniqueLabel>(LabelToStringComposer::compose); void LabelToStringComposer::compose(std::ostream& out, const FailStateLabel& label) { out << (std::string) label; } -auto LabelToStringComposerFailStateLabel = LabelToStringComposer::RegistratorWrapper<void, FailStateLabel>(LabelToStringComposer::compose); +auto LabelToStringComposerFailStateLabel = registration::OverloadRegister < LabelToStringComposer, void, FailStateLabel>(LabelToStringComposer::compose); void LabelToStringComposer::compose(std::ostream& out, const InitialStateLabel& label) { out << (std::string) label; } -auto LabelToStringComposerInitialStateLabel = LabelToStringComposer::RegistratorWrapper<void, InitialStateLabel>(LabelToStringComposer::compose); +auto LabelToStringComposerInitialStateLabel = registration::OverloadRegister < LabelToStringComposer, void, InitialStateLabel>(LabelToStringComposer::compose); void LabelToStringComposer::compose(std::ostream& out, const FinalStateLabel& label) { out << (std::string) label; } -auto LabelToStringComposerFinalStateLabel = LabelToStringComposer::RegistratorWrapper<void, FinalStateLabel>(LabelToStringComposer::compose); +auto LabelToStringComposerFinalStateLabel = registration::OverloadRegister < LabelToStringComposer, void, FinalStateLabel>(LabelToStringComposer::compose); void LabelToStringComposer::compose(std::ostream& output, const Label& label) { dispatch(output, label.getData()); diff --git a/alib2str_experimental/src/primitive/PrimitiveToStringComposer.cpp b/alib2str_experimental/src/primitive/PrimitiveToStringComposer.cpp index c6fee77ab0..8985c268a1 100644 --- a/alib2str_experimental/src/primitive/PrimitiveToStringComposer.cpp +++ b/alib2str_experimental/src/primitive/PrimitiveToStringComposer.cpp @@ -14,6 +14,8 @@ #include "primitive/Unsigned.h" #include "primitive/Bool.h" +#include <registration/AlgoRegistration.hpp> + namespace primitive { void PrimitiveToStringComposer::compose(std::ostream& out, const String& primitive) { @@ -30,31 +32,31 @@ void PrimitiveToStringComposer::compose(std::ostream& out, const String& primiti out << '\'' << tmp << '\''; } -auto PrimitiveToStringComposerString = PrimitiveToStringComposer::RegistratorWrapper<void, String>(PrimitiveToStringComposer::compose); +auto PrimitiveToStringComposerString = registration::OverloadRegister < PrimitiveToStringComposer, void, String>(PrimitiveToStringComposer::compose); void PrimitiveToStringComposer::compose(std::ostream& out, const Character& primitive) { out << primitive.getData(); } -auto PrimitiveToStringComposerCharacter = PrimitiveToStringComposer::RegistratorWrapper<void, Character>(PrimitiveToStringComposer::compose); +auto PrimitiveToStringComposerCharacter = registration::OverloadRegister < PrimitiveToStringComposer, void, Character>(PrimitiveToStringComposer::compose); void PrimitiveToStringComposer::compose(std::ostream& out, const Integer& primitive) { out << primitive.getData(); } -auto PrimitiveToStringComposerInteger = PrimitiveToStringComposer::RegistratorWrapper<void, Integer>(PrimitiveToStringComposer::compose); +auto PrimitiveToStringComposerInteger = registration::OverloadRegister < PrimitiveToStringComposer, void, Integer>(PrimitiveToStringComposer::compose); void PrimitiveToStringComposer::compose(std::ostream& out, const Unsigned& primitive) { out << primitive.getData(); } -auto PrimitiveToStringComposerUnsigned = PrimitiveToStringComposer::RegistratorWrapper<void, Unsigned>(PrimitiveToStringComposer::compose); +auto PrimitiveToStringComposerUnsigned = registration::OverloadRegister < PrimitiveToStringComposer, void, Unsigned>(PrimitiveToStringComposer::compose); void PrimitiveToStringComposer::compose(std::ostream& out, const Bool& primitive) { out << (primitive.getData() ? "true" : "false"); } -auto PrimitiveToStringComposerBool = PrimitiveToStringComposer::RegistratorWrapper<void, Bool>(PrimitiveToStringComposer::compose); +auto PrimitiveToStringComposerBool = registration::OverloadRegister < PrimitiveToStringComposer, void, Bool>(PrimitiveToStringComposer::compose); void PrimitiveToStringComposer::compose(std::ostream& out, const Primitive& primitive) { dispatch(out, primitive.getData()); diff --git a/astat2/src/SizeStat.cpp b/astat2/src/SizeStat.cpp index 72684d1981..1c8166680d 100644 --- a/astat2/src/SizeStat.cpp +++ b/astat2/src/SizeStat.cpp @@ -6,6 +6,7 @@ */ #include "SizeStat.h" +#include <registration/AlgoRegistration.hpp> void SizeStat::stat ( const container::Container & container ) { dispatch ( container.getData ( ) ); @@ -15,4 +16,4 @@ void SizeStat::stat ( const container::ObjectsSet < > & set ) { std::cout << set.size ( ) << std::endl; } -auto SizeStatObjectsSet = SizeStat::RegistratorWrapper < void, container::ObjectsSet < > > ( SizeStat::stat ); +auto SizeStatObjectsSet = registration::OverloadRegister < SizeStat, void, container::ObjectsSet < > > ( SizeStat::stat ); -- GitLab