diff --git a/alib2algo/src/arbology/query/CompressedBitParallelismPatterns.cpp b/alib2algo/src/arbology/query/CompressedBitParallelismPatterns.cpp index 0cc3588656688ed13cf491966c9d8d9d47d3d537..9990d00b197801c8eb6c0f4166dd0a5880d18dd4 100644 --- a/alib2algo/src/arbology/query/CompressedBitParallelismPatterns.cpp +++ b/alib2algo/src/arbology/query/CompressedBitParallelismPatterns.cpp @@ -6,20 +6,14 @@ */ #include "CompressedBitParallelismPatterns.h" - -#include <tree/ranked/PrefixRankedPattern.h> #include <registration/AlgoRegistration.hpp> namespace arbology { namespace query { -ext::set < unsigned > CompressedBitParallelismPatterns::query ( const indexes::arbology::CompressedBitParallelTreeIndex < > & compressedBitParallelIndex, const tree::RankedTreeWrapper & tree ) { - return dispatch ( compressedBitParallelIndex, tree.getData ( ) ); -} - -auto CompressedBitParallelismPatternsPrefixRankedPattern = registration::OverloadRegister < CompressedBitParallelismPatterns, ext::set < unsigned >, tree::PrefixRankedPattern < > > ( CompressedBitParallelismPatterns::query ); -auto CompressedBitParallelismPatternsPrefixRankedBarPattern = registration::OverloadRegister < CompressedBitParallelismPatterns, ext::set < unsigned >, tree::PrefixRankedBarPattern < > > ( CompressedBitParallelismPatterns::query ); +auto CompressedBitParallelismPatternsPrefixRankedPattern = registration::AbstractRegister < CompressedBitParallelismPatterns, ext::set < unsigned >, const indexes::arbology::CompressedBitParallelTreeIndex < > &, const tree::PrefixRankedPattern < > & > ( CompressedBitParallelismPatterns::query ); +auto CompressedBitParallelismPatternsPrefixRankedBarPattern = registration::AbstractRegister < CompressedBitParallelismPatterns, ext::set < unsigned >, const indexes::arbology::CompressedBitParallelTreeIndex < > &, const tree::PrefixRankedBarPattern < > & > ( CompressedBitParallelismPatterns::query ); } /* namespace query */ diff --git a/alib2algo/src/arbology/query/CompressedBitParallelismPatterns.h b/alib2algo/src/arbology/query/CompressedBitParallelismPatterns.h index faca2ce27ec77fc8eeb67fdd9fbefcbb9c71aad4..66a9f6b935f7a3699dba8416770e3186ca883731 100644 --- a/alib2algo/src/arbology/query/CompressedBitParallelismPatterns.h +++ b/alib2algo/src/arbology/query/CompressedBitParallelismPatterns.h @@ -9,10 +9,8 @@ #define COMPRESSED_BIT_PARALLELISM_PATTERNS_H_ #include <indexes/arbology/CompressedBitParallelTreeIndex.h> -#include <tree/RankedTreeWrapper.h> #include <tree/ranked/PrefixRankedPattern.h> #include <tree/ranked/PrefixRankedBarPattern.h> -#include <core/multipleDispatch.hpp> #include <global/GlobalData.h> namespace arbology { @@ -24,7 +22,7 @@ namespace query { * */ -class CompressedBitParallelismPatterns : public alib::SingleDispatchFirstStaticParam < CompressedBitParallelismPatterns, ext::set < unsigned >, const indexes::arbology::CompressedBitParallelTreeIndex < > &, const tree::RankedTreeBase & > { +class CompressedBitParallelismPatterns { public: /** @@ -33,8 +31,6 @@ public: * @param tree tree to query by * @return occurences of factors */ - static ext::set < unsigned > query ( const indexes::arbology::CompressedBitParallelTreeIndex < > & compressedBitParallelIndex, const tree::RankedTreeWrapper & pattern ); - template < class SymbolType, class RankType > static ext::set < unsigned > query ( const indexes::arbology::CompressedBitParallelTreeIndex < SymbolType, RankType > & compressedBitParallelTreeIndex, const tree::PrefixRankedPattern < SymbolType, RankType > & pattern ); diff --git a/alib2algo/src/arbology/query/FullAndLinearIndexPatterns.cpp b/alib2algo/src/arbology/query/FullAndLinearIndexPatterns.cpp index d52f4b315a8618825bb22947b4670a3c029763b6..9e79e03286dc806a5715c63364482373a243f787 100644 --- a/alib2algo/src/arbology/query/FullAndLinearIndexPatterns.cpp +++ b/alib2algo/src/arbology/query/FullAndLinearIndexPatterns.cpp @@ -6,20 +6,14 @@ */ #include "FullAndLinearIndexPatterns.h" - -#include <tree/ranked/PrefixRankedPattern.h> #include <registration/AlgoRegistration.hpp> namespace arbology { namespace query { -ext::set < unsigned > FullAndLinearIndexPatterns::query ( const indexes::arbology::FullAndLinearIndex < > & fullAndLinearIndex, const tree::RankedTreeWrapper & tree ) { - return dispatch ( fullAndLinearIndex, tree.getData ( ) ); -} - -auto fullAndLinearIndexPatternsPrefixRankedPattern = registration::OverloadRegister < FullAndLinearIndexPatterns, ext::set < unsigned >, tree::PrefixRankedPattern < > > ( FullAndLinearIndexPatterns::query ); -auto fullAndLinearIndexPatternsPrefixRankedBarPattern = registration::OverloadRegister < FullAndLinearIndexPatterns, ext::set < unsigned >, tree::PrefixRankedBarPattern < > > ( FullAndLinearIndexPatterns::query ); +auto fullAndLinearIndexPatternsPrefixRankedPattern = registration::AbstractRegister < FullAndLinearIndexPatterns, ext::set < unsigned >, const indexes::arbology::FullAndLinearIndex < > &, const tree::PrefixRankedPattern < > & > ( FullAndLinearIndexPatterns::query ); +auto fullAndLinearIndexPatternsPrefixRankedBarPattern = registration::AbstractRegister < FullAndLinearIndexPatterns, ext::set < unsigned >, const indexes::arbology::FullAndLinearIndex < > &, const tree::PrefixRankedBarPattern < > & > ( FullAndLinearIndexPatterns::query ); } /* namespace query */ diff --git a/alib2algo/src/arbology/query/FullAndLinearIndexPatterns.h b/alib2algo/src/arbology/query/FullAndLinearIndexPatterns.h index 25ceb45059887de35b1791144414ad4784842ee4..365ed27511d2e00c03a012095afbe13fa646e341 100644 --- a/alib2algo/src/arbology/query/FullAndLinearIndexPatterns.h +++ b/alib2algo/src/arbology/query/FullAndLinearIndexPatterns.h @@ -9,10 +9,8 @@ #define FULL_AND_LINEAR_INDEX_PATTERNS_H_ #include <indexes/arbology/FullAndLinearIndex.h> -#include <tree/RankedTreeWrapper.h> #include <tree/ranked/PrefixRankedPattern.h> #include <tree/ranked/PrefixRankedBarPattern.h> -#include <core/multipleDispatch.hpp> #include <global/GlobalData.h> #include <stringology/query/PositionHeapFactors.h> @@ -26,7 +24,7 @@ namespace query { * */ -class FullAndLinearIndexPatterns : public alib::SingleDispatchFirstStaticParam < FullAndLinearIndexPatterns, ext::set < unsigned >, const indexes::arbology::FullAndLinearIndex < > &, const tree::RankedTreeBase & > { +class FullAndLinearIndexPatterns { template < class SymbolType, class RankType > static ext::vector < std::pair < unsigned, unsigned > > FindOccurrences ( const indexes::stringology::PositionHeap < common::ranked_symbol < SymbolType, RankType > > & stringIndex, const ext::vector < common::ranked_symbol < SymbolType, RankType > > & string ) { ext::vector < std::pair < unsigned, unsigned > > res; @@ -61,8 +59,6 @@ public: * @param tree tree to query by * @return occurences of factors */ - static ext::set < unsigned > query ( const indexes::arbology::FullAndLinearIndex < > & fullAndLinearIndex, const tree::RankedTreeWrapper & pattern ); - template < class SymbolType, class RankType > static ext::set < unsigned > query ( const indexes::arbology::FullAndLinearIndex < SymbolType, RankType > & compressedBitParallelTreeIndex, const tree::PrefixRankedPattern < SymbolType, RankType > & pattern ); diff --git a/alib2algo/src/arbology/query/NonlinearCompressedBitParallelismPatterns.cpp b/alib2algo/src/arbology/query/NonlinearCompressedBitParallelismPatterns.cpp index 96cdfe379aba70f23ec4757172d1019a58478182..26328c88fa8d23f14e69e742d76237b7e4e085f5 100644 --- a/alib2algo/src/arbology/query/NonlinearCompressedBitParallelismPatterns.cpp +++ b/alib2algo/src/arbology/query/NonlinearCompressedBitParallelismPatterns.cpp @@ -6,19 +6,13 @@ */ #include "NonlinearCompressedBitParallelismPatterns.h" - -#include <tree/ranked/PrefixRankedPattern.h> #include <registration/AlgoRegistration.hpp> namespace arbology { namespace query { -ext::set < unsigned > NonlinearCompressedBitParallelismPatterns::query ( const indexes::arbology::NonlinearCompressedBitParallelTreeIndex < > & nonlinearCompressedBitParallelIndex, const tree::RankedTreeWrapper & tree ) { - return dispatch ( nonlinearCompressedBitParallelIndex, tree.getData ( ) ); -} - -auto NonlinearCompressedBitParallelismPatternsPrefixRankedBarPattern = registration::OverloadRegister < NonlinearCompressedBitParallelismPatterns, ext::set < unsigned >, tree::PrefixRankedBarNonlinearPattern < > > ( NonlinearCompressedBitParallelismPatterns::query ); +auto NonlinearCompressedBitParallelismPatternsPrefixRankedBarPattern = registration::AbstractRegister < NonlinearCompressedBitParallelismPatterns, ext::set < unsigned >, const indexes::arbology::NonlinearCompressedBitParallelTreeIndex < > &, const tree::PrefixRankedBarNonlinearPattern < > & > ( NonlinearCompressedBitParallelismPatterns::query ); } /* namespace query */ diff --git a/alib2algo/src/arbology/query/NonlinearCompressedBitParallelismPatterns.h b/alib2algo/src/arbology/query/NonlinearCompressedBitParallelismPatterns.h index 2e47e1b001987140e5b1a75b464cd2933fd28bf6..4854f7e7f80ee8d90b349367ed3fb066054d9f99 100644 --- a/alib2algo/src/arbology/query/NonlinearCompressedBitParallelismPatterns.h +++ b/alib2algo/src/arbology/query/NonlinearCompressedBitParallelismPatterns.h @@ -9,9 +9,7 @@ #define NONLINEAR_COMPRESSED_BIT_PARALLELISM_PATTERNS_H_ #include <indexes/arbology/NonlinearCompressedBitParallelTreeIndex.h> -#include <tree/RankedTreeWrapper.h> #include <tree/ranked/PrefixRankedBarNonlinearPattern.h> -#include <core/multipleDispatch.hpp> #include <global/GlobalData.h> namespace arbology { @@ -23,7 +21,7 @@ namespace query { * */ -class NonlinearCompressedBitParallelismPatterns : public alib::SingleDispatchFirstStaticParam < NonlinearCompressedBitParallelismPatterns, ext::set < unsigned >, const indexes::arbology::NonlinearCompressedBitParallelTreeIndex < > &, const tree::RankedTreeBase & > { +class NonlinearCompressedBitParallelismPatterns { public: /** @@ -32,8 +30,6 @@ public: * @param tree tree to query by * @return occurences of factors */ - static ext::set < unsigned > query ( const indexes::arbology::NonlinearCompressedBitParallelTreeIndex < > & nonlinearCompressedBitParallelIndex, const tree::RankedTreeWrapper & pattern ); - template < class SymbolType, class RankType > static ext::set < unsigned > query ( const indexes::arbology::NonlinearCompressedBitParallelTreeIndex < SymbolType, RankType > & nonlinearCompressedBitParallelTreeIndex, const tree::PrefixRankedBarNonlinearPattern < SymbolType, RankType > & pattern ); }; diff --git a/alib2algo/src/arbology/query/NonlinearFullAndLinearIndexPatterns.cpp b/alib2algo/src/arbology/query/NonlinearFullAndLinearIndexPatterns.cpp index 287c4093664f34aa8ae132976789dc61ea888002..fa105a365c9d407488e8a783176eb07d24f0c53e 100644 --- a/alib2algo/src/arbology/query/NonlinearFullAndLinearIndexPatterns.cpp +++ b/alib2algo/src/arbology/query/NonlinearFullAndLinearIndexPatterns.cpp @@ -6,20 +6,14 @@ */ #include "NonlinearFullAndLinearIndexPatterns.h" - -#include <tree/ranked/PrefixRankedPattern.h> #include <registration/AlgoRegistration.hpp> namespace arbology { namespace query { -ext::set < unsigned > NonlinearFullAndLinearIndexPatterns::query ( const indexes::arbology::NonlinearFullAndLinearIndex < > & nonlinearFullAndLinearIndex, const tree::RankedTreeWrapper & tree ) { - return dispatch ( nonlinearFullAndLinearIndex, tree.getData ( ) ); -} - -auto nonlinearFullAndLinearIndexPatternsPrefixRankedPattern = registration::OverloadRegister < NonlinearFullAndLinearIndexPatterns, ext::set < unsigned >, tree::PrefixRankedNonlinearPattern < > > ( NonlinearFullAndLinearIndexPatterns::query ); -auto nonlinearFullAndLinearIndexPatternsPrefixRankedBarPattern = registration::OverloadRegister < NonlinearFullAndLinearIndexPatterns, ext::set < unsigned >, tree::PrefixRankedBarNonlinearPattern < > > ( NonlinearFullAndLinearIndexPatterns::query ); +auto nonlinearFullAndLinearIndexPatternsPrefixRankedPattern = registration::AbstractRegister < NonlinearFullAndLinearIndexPatterns, ext::set < unsigned >, const indexes::arbology::NonlinearFullAndLinearIndex < > &, const tree::PrefixRankedNonlinearPattern < > & > ( NonlinearFullAndLinearIndexPatterns::query ); +auto nonlinearFullAndLinearIndexPatternsPrefixRankedBarPattern = registration::AbstractRegister < NonlinearFullAndLinearIndexPatterns, ext::set < unsigned >, const indexes::arbology::NonlinearFullAndLinearIndex < > &, const tree::PrefixRankedBarNonlinearPattern < > & > ( NonlinearFullAndLinearIndexPatterns::query ); } /* namespace query */ diff --git a/alib2algo/src/arbology/query/NonlinearFullAndLinearIndexPatterns.h b/alib2algo/src/arbology/query/NonlinearFullAndLinearIndexPatterns.h index 01b2991aa4ba7ccae6e523c3627fb76efab2358c..798392eeee957dd81a01966188f1444963ef2af6 100644 --- a/alib2algo/src/arbology/query/NonlinearFullAndLinearIndexPatterns.h +++ b/alib2algo/src/arbology/query/NonlinearFullAndLinearIndexPatterns.h @@ -9,10 +9,8 @@ #define NONLINEAR_FULL_AND_LINEAR_INDEX_PATTERNS_H_ #include <indexes/arbology/NonlinearFullAndLinearIndex.h> -#include <tree/RankedTreeWrapper.h> #include <tree/ranked/PrefixRankedNonlinearPattern.h> #include <tree/ranked/PrefixRankedBarNonlinearPattern.h> -#include <core/multipleDispatch.hpp> #include <global/GlobalData.h> #include <stringology/query/PositionHeapFactors.h> @@ -26,7 +24,7 @@ namespace query { * */ -class NonlinearFullAndLinearIndexPatterns : public alib::SingleDispatchFirstStaticParam < NonlinearFullAndLinearIndexPatterns, ext::set < unsigned >, const indexes::arbology::NonlinearFullAndLinearIndex < > &, const tree::RankedTreeBase & > { +class NonlinearFullAndLinearIndexPatterns { template < class SymbolType, class RankType > static ext::vector < std::pair < unsigned, unsigned > > FindOccurrences ( const indexes::stringology::PositionHeap < common::ranked_symbol < SymbolType, RankType > > & stringIndex, const ext::vector < common::ranked_symbol < SymbolType, RankType > > & string ) { ext::vector < std::pair < unsigned, unsigned > > res; @@ -61,8 +59,6 @@ public: * @param tree tree to query by * @return occurences of factors */ - static ext::set < unsigned > query ( const indexes::arbology::NonlinearFullAndLinearIndex < > & fullAndLinearIndex, const tree::RankedTreeWrapper & pattern ); - template < class SymbolType, class RankType > static ext::set < unsigned > query ( const indexes::arbology::NonlinearFullAndLinearIndex < SymbolType, RankType > & compressedBitParallelTreeIndex, const tree::PrefixRankedNonlinearPattern < SymbolType, RankType > & pattern ); diff --git a/alib2algo/src/automaton/determinize/DeterminizeIDPDAPart.cxx b/alib2algo/src/automaton/determinize/DeterminizeIDPDAPart.cxx index 2f6ca8e5e5850d1ea7fcdb58f0f7c5eea352ab2f..a97184d13b5f10dbd3292687f9a3e14d2970fc52 100644 --- a/alib2algo/src/automaton/determinize/DeterminizeIDPDAPart.cxx +++ b/alib2algo/src/automaton/determinize/DeterminizeIDPDAPart.cxx @@ -5,8 +5,6 @@ * Author: Jan Vesely */ -#include <core/multipleDispatch.hpp> - #include "common/NFACommon.h" #include <automaton/PDA/InputDrivenNPDA.h> diff --git a/alib2algo/src/automaton/run/Run.h b/alib2algo/src/automaton/run/Run.h index 8b553ae2b52c4212be7d679e2aa71b821e1a1641..b01d7b903efb8ae993192800973a6d63d7d062f0 100644 --- a/alib2algo/src/automaton/run/Run.h +++ b/alib2algo/src/automaton/run/Run.h @@ -8,7 +8,6 @@ #ifndef _AUTOMATON_RUN_H__ #define _AUTOMATON_RUN_H__ -#include <core/multipleDispatch.hpp> #include <string/LinearString.h> #include <tree/ranked/RankedTree.h> diff --git a/alib2algo/src/stringology/query/BitParallelismFactors.cpp b/alib2algo/src/stringology/query/BitParallelismFactors.cpp index fd45e5e87928b4abe240eb59aa6c923b9f0d2484..89e8746a8b7f552bf546ff8c80bb924e3d86f9f3 100644 --- a/alib2algo/src/stringology/query/BitParallelismFactors.cpp +++ b/alib2algo/src/stringology/query/BitParallelismFactors.cpp @@ -6,19 +6,13 @@ */ #include "BitParallelismFactors.h" - -#include <string/LinearString.h> #include <registration/AlgoRegistration.hpp> namespace stringology { namespace query { -ext::set < unsigned > BitParallelismFactors::query ( const indexes::stringology::BitParallelIndex < DefaultSymbolType > & bitParallelIndex, const string::String & string ) { - return dispatch ( bitParallelIndex, string.getData ( ) ); -} - -auto BitParallelismFactorsLinearString = registration::OverloadRegister < BitParallelismFactors, ext::set < unsigned >, string::LinearString < > > ( BitParallelismFactors::query ); +auto BitParallelismFactorsLinearString = registration::AbstractRegister < BitParallelismFactors, ext::set < unsigned >, const indexes::stringology::BitParallelIndex < > &, const string::LinearString < > & > ( BitParallelismFactors::query ); } /* namespace query */ diff --git a/alib2algo/src/stringology/query/BitParallelismFactors.h b/alib2algo/src/stringology/query/BitParallelismFactors.h index 9792b5206a96766bb950bfd0e6c25fbc4330e3bc..5b9576153858c597ae5031350c8ebc8fe343cf42 100644 --- a/alib2algo/src/stringology/query/BitParallelismFactors.h +++ b/alib2algo/src/stringology/query/BitParallelismFactors.h @@ -9,9 +9,7 @@ #define BIT_PARALLELISM_FACTORS_H_ #include <indexes/stringology/BitParallelIndex.h> -#include <string/String.h> #include <string/LinearString.h> -#include <core/multipleDispatch.hpp> #include <global/GlobalData.h> #include <foreach> @@ -25,8 +23,7 @@ namespace query { * */ -class BitParallelismFactors : public alib::SingleDispatchFirstStaticParam < BitParallelismFactors, ext::set < unsigned >, const indexes::stringology::BitParallelIndex < DefaultSymbolType > &, const string::StringBase & > { - +class BitParallelismFactors { public: /** * Query a suffix trie @@ -34,8 +31,6 @@ public: * @param string string to query by * @return occurences of factors */ - static ext::set < unsigned > query ( const indexes::stringology::BitParallelIndex < DefaultSymbolType > & bitParallelIndex, const string::String & string ); - template < class SymbolType > static ext::set < unsigned > query ( const indexes::stringology::BitParallelIndex < SymbolType > & bitParallelIndex, const string::LinearString < SymbolType > & string ); diff --git a/alib2algo/src/stringology/query/CompressedBitParallelismFactors.cpp b/alib2algo/src/stringology/query/CompressedBitParallelismFactors.cpp index b0a131de246228ef299bbb86d33fccf3330b37e3..b6b4a53ed504bf4d293eece1197752ed7ace3495 100644 --- a/alib2algo/src/stringology/query/CompressedBitParallelismFactors.cpp +++ b/alib2algo/src/stringology/query/CompressedBitParallelismFactors.cpp @@ -6,19 +6,13 @@ */ #include "CompressedBitParallelismFactors.h" - -#include <string/LinearString.h> #include <registration/AlgoRegistration.hpp> namespace stringology { namespace query { -ext::set < unsigned > CompressedBitParallelismFactors::query ( const indexes::stringology::CompressedBitParallelIndex < DefaultSymbolType > & compressedBitParallelIndex, const string::String & string ) { - return dispatch ( compressedBitParallelIndex, string.getData ( ) ); -} - -auto CompressedBitParallelismFactorsLinearString = registration::OverloadRegister < CompressedBitParallelismFactors, ext::set < unsigned >, string::LinearString < > > ( CompressedBitParallelismFactors::query ); +auto CompressedBitParallelismFactorsLinearString = registration::AbstractRegister < CompressedBitParallelismFactors, ext::set < unsigned >, const indexes::stringology::CompressedBitParallelIndex < > &, const string::LinearString < > & > ( CompressedBitParallelismFactors::query ); } /* namespace query */ diff --git a/alib2algo/src/stringology/query/CompressedBitParallelismFactors.h b/alib2algo/src/stringology/query/CompressedBitParallelismFactors.h index 16367243565efa4afa5c07441ffcebbf611fd32e..de31d9005e1534f4af2b4cea38fca70b9e192a5e 100644 --- a/alib2algo/src/stringology/query/CompressedBitParallelismFactors.h +++ b/alib2algo/src/stringology/query/CompressedBitParallelismFactors.h @@ -9,9 +9,7 @@ #define COMPRESSED_BIT_PARALLELISM_FACTORS_H_ #include <indexes/stringology/CompressedBitParallelIndex.h> -#include <string/String.h> #include <string/LinearString.h> -#include <core/multipleDispatch.hpp> #include <global/GlobalData.h> #include <foreach> @@ -25,7 +23,7 @@ namespace query { * */ -class CompressedBitParallelismFactors : public alib::SingleDispatchFirstStaticParam < CompressedBitParallelismFactors, ext::set < unsigned >, const indexes::stringology::CompressedBitParallelIndex < DefaultSymbolType > &, const string::StringBase & > { +class CompressedBitParallelismFactors { public: /** @@ -34,8 +32,6 @@ public: * @param string the string to query with * @return occurences of factors */ - static ext::set < unsigned > query ( const indexes::stringology::CompressedBitParallelIndex < DefaultSymbolType > & compressedBitParallelIndex, const string::String & string ); - template < class SymbolType > static ext::set < unsigned > query ( const indexes::stringology::CompressedBitParallelIndex < SymbolType > & compressedBitParallelIndex, const string::LinearString < SymbolType > & string ); }; diff --git a/alib2algo/src/stringology/query/PositionHeapFactors.cpp b/alib2algo/src/stringology/query/PositionHeapFactors.cpp index 4441a2af5e6e3d50c16a015402fda28b9eee3059..b173a446678827ef203cb1552632237ba9abec28 100644 --- a/alib2algo/src/stringology/query/PositionHeapFactors.cpp +++ b/alib2algo/src/stringology/query/PositionHeapFactors.cpp @@ -6,19 +6,13 @@ */ #include "PositionHeapFactors.h" - -#include <string/LinearString.h> #include <registration/AlgoRegistration.hpp> namespace stringology { namespace query { -ext::set < unsigned > PositionHeapFactors::query ( const indexes::stringology::PositionHeap < DefaultSymbolType > & positionHeap, const string::String & string ) { - return dispatch ( positionHeap, string.getData ( ) ); -} - -auto PositionHeapFactorsLinearString = registration::OverloadRegister < PositionHeapFactors, ext::set < unsigned >, string::LinearString < > > ( PositionHeapFactors::query ); +auto PositionHeapFactorsLinearString = registration::AbstractRegister < PositionHeapFactors, ext::set < unsigned >, const indexes::stringology::PositionHeap < > &, const string::LinearString < > & > ( PositionHeapFactors::query ); } /* namespace query */ diff --git a/alib2algo/src/stringology/query/PositionHeapFactors.h b/alib2algo/src/stringology/query/PositionHeapFactors.h index 0dda4927468f040562064050fb546104bc3ca9d0..79e43aff2598ad2f6f4faf9804f3294c233a785c 100644 --- a/alib2algo/src/stringology/query/PositionHeapFactors.h +++ b/alib2algo/src/stringology/query/PositionHeapFactors.h @@ -9,9 +9,7 @@ #define POSITION_HEAP_FACTORS_H_ #include <indexes/stringology/PositionHeap.h> -#include <string/String.h> #include <string/LinearString.h> -#include <core/multipleDispatch.hpp> #include <global/GlobalData.h> namespace stringology { @@ -26,7 +24,7 @@ namespace query { * */ -class PositionHeapFactors : public alib::SingleDispatchFirstStaticParam < PositionHeapFactors, ext::set < unsigned >, const indexes::stringology::PositionHeap < DefaultSymbolType > &, const string::StringBase & > { +class PositionHeapFactors { template < class SymbolType > static void accumulateResult ( const ext::trie < SymbolType, unsigned > & trie, ext::set < unsigned > & res, unsigned indexedStringSize ) { res.insert ( indexedStringSize - trie.getData ( ) ); @@ -55,8 +53,6 @@ public: * @param string string to query by * @return occurences of factors */ - static ext::set < unsigned > query ( const indexes::stringology::PositionHeap < DefaultSymbolType > & positionHeap, const string::String & string ); - template < class SymbolType > static ext::set < unsigned > query ( const indexes::stringology::PositionHeap < SymbolType > & positionHeap, const string::LinearString < SymbolType > & string ); diff --git a/alib2algo/src/stringology/query/SuffixArrayFactors.cpp b/alib2algo/src/stringology/query/SuffixArrayFactors.cpp index 93f48f83418b2dff9f296bdf8f6e0aa0e7b524a1..7cb13a0a1fb0b575fa9feb430ab3ae4afe747543 100644 --- a/alib2algo/src/stringology/query/SuffixArrayFactors.cpp +++ b/alib2algo/src/stringology/query/SuffixArrayFactors.cpp @@ -6,19 +6,13 @@ */ #include "SuffixArrayFactors.h" - -#include <string/LinearString.h> #include <registration/AlgoRegistration.hpp> namespace stringology { namespace query { -ext::set < unsigned > SuffixArrayFactors::query ( const indexes::stringology::SuffixArray < > & suffixArray, const string::String & string ) { - return dispatch ( suffixArray, string.getData ( ) ); -} - -auto SuffixArrayFactorsLinearString = registration::OverloadRegister < SuffixArrayFactors, ext::set < unsigned >, string::LinearString < > > ( SuffixArrayFactors::query ); +auto SuffixArrayFactorsLinearString = registration::AbstractRegister < SuffixArrayFactors, ext::set < unsigned >, const indexes::stringology::SuffixArray < > &, const string::LinearString < > & > ( SuffixArrayFactors::query ); } /* namespace query */ diff --git a/alib2algo/src/stringology/query/SuffixArrayFactors.h b/alib2algo/src/stringology/query/SuffixArrayFactors.h index 20faba1106b5e661417a8e31040240559a5ac08f..5788885d1baf9650f5de3967f041d765d21af332 100644 --- a/alib2algo/src/stringology/query/SuffixArrayFactors.h +++ b/alib2algo/src/stringology/query/SuffixArrayFactors.h @@ -9,10 +9,7 @@ #define SUFFIX_ARRAY_FACTORS_H_ #include <indexes/stringology/SuffixArray.h> -#include <string/String.h> #include <string/LinearString.h> -#include <core/multipleDispatch.hpp> - #include <algorithm> namespace stringology { @@ -25,7 +22,7 @@ namespace query { * Source: ?? */ -class SuffixArrayFactors : public alib::SingleDispatchFirstStaticParam < SuffixArrayFactors, ext::set < unsigned >, const indexes::stringology::SuffixArray < DefaultSymbolType > &, const string::StringBase & > { +class SuffixArrayFactors { public: /** * Query a suffix array @@ -33,8 +30,6 @@ public: * @param string string to query by * @return occurences of factors */ - static ext::set < unsigned > query ( const indexes::stringology::SuffixArray < DefaultSymbolType > & suffixArray, const string::String & string ); - template < class SymbolType > static ext::set < unsigned > query ( const indexes::stringology::SuffixArray < SymbolType > & suffixArray, const string::LinearString < SymbolType > & string ); @@ -65,11 +60,11 @@ ext::set < unsigned > SuffixArrayFactors::query ( const indexes::stringology::Su } ); // The value returned by comparator indicates whether the first argument is considered to go before the second. - ext::vector < unsigned >::const_iterator up = std::upper_bound ( suffixArray.getData ( ).begin ( ), suffixArray.getData ( ).end ( ), string, [ & ] ( const string::LinearString < SymbolType > & str, unsigned second ) { + ext::vector < unsigned >::const_iterator high = std::upper_bound ( suffixArray.getData ( ).begin ( ), suffixArray.getData ( ).end ( ), string, [ & ] ( const string::LinearString < SymbolType > & str, unsigned second ) { return comparator ( str.getContent ( ), 0, suffixArray.getString ( ), second, str.getContent ( ).size ( ) ) < 0; } ); - return ext::set < unsigned > ( low, up ); + return ext::set < unsigned > ( low, high ); } } /* namespace query */ diff --git a/alib2algo/src/stringology/query/SuffixTrieFactors.cpp b/alib2algo/src/stringology/query/SuffixTrieFactors.cpp index a846243e3686656e449b4ba8a2a13833deab411e..14f2f9326cca0e6e2f19bd824eadd98f25a2d89c 100644 --- a/alib2algo/src/stringology/query/SuffixTrieFactors.cpp +++ b/alib2algo/src/stringology/query/SuffixTrieFactors.cpp @@ -6,19 +6,13 @@ */ #include "SuffixTrieFactors.h" - -#include <string/LinearString.h> #include <registration/AlgoRegistration.hpp> namespace stringology { namespace query { -ext::set < unsigned > SuffixTrieFactors::query ( const indexes::stringology::SuffixTrie < DefaultSymbolType > & suffixTrie, const string::String & string ) { - return dispatch ( suffixTrie, string.getData ( ) ); -} - -auto SuffixTrieFactorsLinearString = registration::OverloadRegister < SuffixTrieFactors, ext::set < unsigned >, string::LinearString < > > ( SuffixTrieFactors::query ); +auto SuffixTrieFactorsLinearString = registration::AbstractRegister < SuffixTrieFactors, ext::set < unsigned >, const indexes::stringology::SuffixTrie < > &, const string::LinearString < > & > ( SuffixTrieFactors::query ); } /* namespace query */ diff --git a/alib2algo/src/stringology/query/SuffixTrieFactors.h b/alib2algo/src/stringology/query/SuffixTrieFactors.h index 149d9f4cfc750a4c3757dab1b7ebdcaa6cd89d25..a47b7169273665ef562c14836ba26ca978a6e592 100644 --- a/alib2algo/src/stringology/query/SuffixTrieFactors.h +++ b/alib2algo/src/stringology/query/SuffixTrieFactors.h @@ -9,9 +9,7 @@ #define SUFFIX_TRIE_FACTORS_H_ #include <indexes/stringology/SuffixTrie.h> -#include <string/String.h> #include <string/LinearString.h> -#include <core/multipleDispatch.hpp> namespace stringology { @@ -23,7 +21,7 @@ namespace query { * Source: ?? */ -class SuffixTrieFactors : public alib::SingleDispatchFirstStaticParam < SuffixTrieFactors, ext::set < unsigned >, const indexes::stringology::SuffixTrie < DefaultSymbolType > &, const string::StringBase & > { +class SuffixTrieFactors { template < class SymbolType > static void accumulateResult ( const ext::trie < SymbolType, ext::variant < void, unsigned > > & trie, ext::set < unsigned > & res ) { if ( trie.getData ( ).template is < unsigned > ( ) ) @@ -41,8 +39,6 @@ public: * @param string string to query by * @return occurences of factors */ - static ext::set < unsigned > query ( const indexes::stringology::SuffixTrie < DefaultSymbolType > & suffixTrie, const string::String & string ); - template < class SymbolType > static ext::set < unsigned > query ( const indexes::stringology::SuffixTrie < SymbolType > & suffixTrie, const string::LinearString < SymbolType > & string ); diff --git a/aquery2/makefile.conf b/aquery2/makefile.conf index 43220083ea43d02d8ff94fa79d3d70f3340fb42b..06e0b01dbca46182c66419819bab4ff940202971 100644 --- a/aquery2/makefile.conf +++ b/aquery2/makefile.conf @@ -1,4 +1,4 @@ EXECUTABLE:=aquery2 -LINK_PATHS=../alib2elgo/ ../alib2algo/ ../alib2data/ ../alib2common/ ../alib2std/ -LINK_LIBRARIES=alib2elgo alib2algo alib2data alib2common alib2std xml2 -INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2elgo/src/ \$$(SOURCES_BASE_DIR)/../../alib2algo/src/ \$$(SOURCES_BASE_DIR)/../../alib2data/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/ +LINK_PATHS=../alib2cli/ ../alib2elgo/ ../alib2algo/ ../alib2data/ ../alib2common/ ../alib2std/ +LINK_LIBRARIES=alib2cli alib2elgo alib2algo alib2data alib2common alib2std xml2 +INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2cli/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/ diff --git a/aquery2/src/aquery.cpp b/aquery2/src/aquery.cpp index c8a9de3692868bf095549d9daeeae477751d1ee9..5325b9df478d4e9f5299ad500de93908ecf75579 100644 --- a/aquery2/src/aquery.cpp +++ b/aquery2/src/aquery.cpp @@ -8,22 +8,10 @@ #include <tclap/CmdLine.h> #include <global/GlobalData.h> #include <measure> -#include <vector> -#include <sax/FromXMLParserHelper.h> -#include <factory/XmlDataFactory.hpp> #include <exception/CommonException.h> -#include <string/String.h> - -#include <stringology/query/SuffixTrieFactors.h> -#include <stringology/query/SuffixArrayFactors.h> -#include <stringology/query/PositionHeapFactors.h> -#include <stringology/query/BitParallelismFactors.h> -#include <stringology/query/CompressedBitParallelismFactors.h> -#include <arbology/query/CompressedBitParallelismPatterns.h> -#include <arbology/query/NonlinearCompressedBitParallelismPatterns.h> -#include <arbology/query/FullAndLinearIndexPatterns.h> -#include <arbology/query/NonlinearFullAndLinearIndexPatterns.h> +#include <lexer/Lexer.h> +#include <parser/Parser.h> int main ( int argc, char * argv[] ) { try { @@ -66,130 +54,73 @@ int main ( int argc, char * argv[] ) { if(measure.isSet()) common::GlobalData::measure = true; + cli::Environment environment; + environment.setBinding ( "indexData", indexInput.getValue ( ) ); + environment.setBinding ( "stdout", "-" ); + measurements::start ( "Overal", measurements::Type::OVERALL ); measurements::start ( "Input read", measurements::Type::AUXILIARY ); - if ( query.getValue ( ) == "suffixTrieFactors" ) { - indexes::stringology::SuffixTrie < DefaultSymbolType > suffixTrie = alib::XmlDataFactory::fromTokens ( sax::FromXMLParserHelper::parseInput ( indexInput ) ); - string::String pattern = alib::XmlDataFactory::fromTokens ( std::move ( sax::FromXMLParserHelper::parseInput(true, patternInput).front ( ) ) ); - - measurements::end ( ); - measurements::start ( "Algorithm", measurements::Type::MAIN ); - - ext::set < unsigned > res = stringology::query::SuffixTrieFactors::query ( suffixTrie, pattern ); + cli::Parser parser ( cli::Lexer ( "execute <#indexData > $index" ) ); + parser.parse ( )->run ( environment ); + + if ( query.getValue ( ) == "suffixTrieFactors" + || query.getValue ( ) == "suffixArrayFactors" + || query.getValue ( ) == "positionHeapFactors" + || query.getValue ( ) == "bitParallelismFactors" + || query.getValue ( ) == "compressedBitParallelismFactors" + || query.getValue ( ) == "compressedBitParallelismPatterns" + || query.getValue ( ) == "nonlinearCompressedBitParallelismPatterns" + || query.getValue ( ) == "fullAndLinearIndexPatterns" + || query.getValue ( ) == "nonlinearFullAndLinearIndexPatterns" ) { + std::string input; + if ( patternInput.getValue ( ).size ( ) == 0 ) + input = "-"; + else if ( patternInput.getValue ( ).size ( ) == 1 ) + input = * patternInput.getValue ( ).begin ( ); + else + throw exception::CommonException("Multiple parameters when single required."); + + environment.setBinding ( "patternData", input ); + parser = cli::Parser ( cli::Lexer ( "execute <#patternData > $pattern" ) ); + parser.parse ( )->run ( environment ); + } - measurements::end ( ); - measurements::start ( "Output write", measurements::Type::AUXILIARY ); + measurements::end ( ); + measurements::start ( "Algorithm", measurements::Type::MAIN ); - alib::XmlDataFactory::toStdout ( res ); + std::string cliCommand; + if ( query.getValue ( ) == "suffixTrieFactors" ) { + cliCommand = "execute stringology::query::SuffixTrieFactors $index $pattern > $output"; } else if ( query.getValue ( ) == "suffixArrayFactors" ) { - indexes::stringology::SuffixArray < > suffixArray = alib::XmlDataFactory::fromTokens ( sax::FromXMLParserHelper::parseInput ( indexInput ) ); - string::String pattern = alib::XmlDataFactory::fromTokens ( std::move ( sax::FromXMLParserHelper::parseInput(true, patternInput).front ( ) ) ); - - measurements::end ( ); - measurements::start ( "Algorithm", measurements::Type::MAIN ); - - ext::set < unsigned > res = stringology::query::SuffixArrayFactors::query ( suffixArray, pattern ); - - measurements::end ( ); - measurements::start ( "Output write", measurements::Type::AUXILIARY ); - - alib::XmlDataFactory::toStdout ( res ); + cliCommand = "execute stringology::query::SuffixArrayFactors $index $pattern > $output"; } else if ( query.getValue ( ) == "positionHeapFactors" ) { - indexes::stringology::PositionHeap < > positionHeap = alib::XmlDataFactory::fromTokens ( sax::FromXMLParserHelper::parseInput ( indexInput ) ); - string::String pattern = alib::XmlDataFactory::fromTokens ( std::move ( sax::FromXMLParserHelper::parseInput(true, patternInput).front ( ) ) ); - - measurements::end ( ); - measurements::start ( "Algorithm", measurements::Type::MAIN ); - - ext::set < unsigned > res = stringology::query::PositionHeapFactors::query ( positionHeap, pattern ); - - measurements::end ( ); - measurements::start ( "Output write", measurements::Type::AUXILIARY ); - - alib::XmlDataFactory::toStdout ( res ); + cliCommand = "execute stringology::query::PositionHeapFactors $index $pattern > $output"; } else if ( query.getValue ( ) == "bitParallelismFactors" ) { - indexes::stringology::BitParallelIndex < > bitParallelIndex = alib::XmlDataFactory::fromTokens ( sax::FromXMLParserHelper::parseInput ( indexInput ) ); - string::String pattern = alib::XmlDataFactory::fromTokens ( std::move ( sax::FromXMLParserHelper::parseInput(true, patternInput).front ( ) ) ); - - measurements::end ( ); - measurements::start ( "Algorithm", measurements::Type::MAIN ); - - ext::set < unsigned > res = stringology::query::BitParallelismFactors::query ( bitParallelIndex, pattern ); - - measurements::end ( ); - measurements::start ( "Output write", measurements::Type::AUXILIARY ); - - alib::XmlDataFactory::toStdout ( res ); + cliCommand = "execute stringology::query::BitParallelismFactors $index $pattern > $output"; } else if ( query.getValue ( ) == "compressedBitParallelismFactors" ) { - indexes::stringology::CompressedBitParallelIndex < > compressedBitParallelIndex = alib::XmlDataFactory::fromTokens ( sax::FromXMLParserHelper::parseInput ( indexInput ) ); - string::String pattern = alib::XmlDataFactory::fromTokens ( std::move ( sax::FromXMLParserHelper::parseInput(true, patternInput).front ( ) ) ); - - measurements::end ( ); - measurements::start ( "Algorithm", measurements::Type::MAIN ); - - ext::set < unsigned > res = stringology::query::CompressedBitParallelismFactors::query ( compressedBitParallelIndex, pattern ); - - measurements::end ( ); - measurements::start ( "Output write", measurements::Type::AUXILIARY ); - - alib::XmlDataFactory::toStdout ( res ); + cliCommand = "execute stringology::query::CompressedBitParallelismFactors $index $pattern > $output"; } else if ( query.getValue ( ) == "compressedBitParallelismPatterns" ) { - indexes::arbology::CompressedBitParallelTreeIndex < > compressedBitParallelTreeIndex = alib::XmlDataFactory::fromTokens ( sax::FromXMLParserHelper::parseInput ( indexInput ) ); - tree::RankedTreeWrapper pattern = alib::XmlDataFactory::fromTokens ( std::move ( sax::FromXMLParserHelper::parseInput(true, patternInput).front ( ) ) ); - - measurements::end ( ); - measurements::start ( "Algorithm", measurements::Type::MAIN ); - - ext::set < unsigned > res = arbology::query::CompressedBitParallelismPatterns::query ( compressedBitParallelTreeIndex, pattern ); - - measurements::end ( ); - measurements::start ( "Output write", measurements::Type::AUXILIARY ); - - alib::XmlDataFactory::toStdout ( res ); + cliCommand = "execute arbology::query::CompressedBitParallelismPatterns $index $pattern > $output"; } else if ( query.getValue ( ) == "nonlinearCompressedBitParallelismPatterns" ) { - indexes::arbology::NonlinearCompressedBitParallelTreeIndex < > nonlinearCompressedBitParallelTreeIndex = alib::XmlDataFactory::fromTokens ( sax::FromXMLParserHelper::parseInput ( indexInput ) ); - tree::RankedTreeWrapper pattern = alib::XmlDataFactory::fromTokens ( std::move ( sax::FromXMLParserHelper::parseInput(true, patternInput).front ( ) ) ); - - measurements::end ( ); - measurements::start ( "Algorithm", measurements::Type::MAIN ); - - ext::set < unsigned > res = arbology::query::NonlinearCompressedBitParallelismPatterns::query ( nonlinearCompressedBitParallelTreeIndex, pattern ); - - measurements::end ( ); - measurements::start ( "Output write", measurements::Type::AUXILIARY ); - - alib::XmlDataFactory::toStdout ( res ); + cliCommand = "execute arbology::query::NonlinearCompressedBitParallelismPatterns $index $pattern > $output"; } else if ( query.getValue ( ) == "fullAndLinearIndexPatterns" ) { - indexes::arbology::FullAndLinearIndex < > fullAndLinearIndex = alib::XmlDataFactory::fromTokens ( sax::FromXMLParserHelper::parseInput ( indexInput ) ); - tree::RankedTreeWrapper pattern = alib::XmlDataFactory::fromTokens ( std::move ( sax::FromXMLParserHelper::parseInput(true, patternInput).front ( ) ) ); - - measurements::end ( ); - measurements::start ( "Algorithm", measurements::Type::MAIN ); - - ext::set < unsigned > res = arbology::query::FullAndLinearIndexPatterns::query ( fullAndLinearIndex, pattern ); - - measurements::end ( ); - measurements::start ( "Output write", measurements::Type::AUXILIARY ); - - alib::XmlDataFactory::toStdout ( res ); + cliCommand = "execute arbology::query::FullAndLinearIndexPatterns $index $pattern > $output"; } else if ( query.getValue ( ) == "nonlinearFullAndLinearIndexPatterns" ) { - indexes::arbology::NonlinearFullAndLinearIndex < > nonlinearFullAndLinearIndex = alib::XmlDataFactory::fromTokens ( sax::FromXMLParserHelper::parseInput ( indexInput ) ); - tree::RankedTreeWrapper pattern = alib::XmlDataFactory::fromTokens ( std::move ( sax::FromXMLParserHelper::parseInput(true, patternInput).front ( ) ) ); - - measurements::end ( ); - measurements::start ( "Algorithm", measurements::Type::MAIN ); - - ext::set < unsigned > res = arbology::query::NonlinearFullAndLinearIndexPatterns::query ( nonlinearFullAndLinearIndex, pattern ); - - measurements::end ( ); - measurements::start ( "Output write", measurements::Type::AUXILIARY ); - - alib::XmlDataFactory::toStdout ( res ); + cliCommand = "execute arbology::query::NonlinearFullAndLinearIndexPatterns $index $pattern > $output"; } else { throw exception::CommonException ( "Invalid algorithm" ); } + parser = cli::Parser ( cli::Lexer ( cliCommand ) ); + parser.parse ( )->run ( environment ); + + measurements::end ( ); + measurements::start ( "Output write", measurements::Type::AUXILIARY ); + + parser = cli::Parser ( cli::Lexer ( "execute $output >#stdout" ) ); + parser.parse ( )->run ( environment ); + measurements::end ( ); measurements::end ( );