From 8c406d3153756a7aa02e188eb29e4e338563ffc5 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Sun, 10 Sep 2017 10:18:13 +0200 Subject: [PATCH] use cli in aquery binary --- .../CompressedBitParallelismPatterns.cpp | 10 +- .../query/CompressedBitParallelismPatterns.h | 6 +- .../query/FullAndLinearIndexPatterns.cpp | 10 +- .../query/FullAndLinearIndexPatterns.h | 6 +- ...linearCompressedBitParallelismPatterns.cpp | 8 +- ...onlinearCompressedBitParallelismPatterns.h | 6 +- .../NonlinearFullAndLinearIndexPatterns.cpp | 10 +- .../NonlinearFullAndLinearIndexPatterns.h | 6 +- .../determinize/DeterminizeIDPDAPart.cxx | 2 - alib2algo/src/automaton/run/Run.h | 1 - .../query/BitParallelismFactors.cpp | 8 +- .../stringology/query/BitParallelismFactors.h | 7 +- .../query/CompressedBitParallelismFactors.cpp | 8 +- .../query/CompressedBitParallelismFactors.h | 6 +- .../stringology/query/PositionHeapFactors.cpp | 8 +- .../stringology/query/PositionHeapFactors.h | 6 +- .../stringology/query/SuffixArrayFactors.cpp | 8 +- .../stringology/query/SuffixArrayFactors.h | 11 +- .../stringology/query/SuffixTrieFactors.cpp | 8 +- .../src/stringology/query/SuffixTrieFactors.h | 6 +- aquery2/makefile.conf | 6 +- aquery2/src/aquery.cpp | 173 ++++++------------ 22 files changed, 78 insertions(+), 242 deletions(-) diff --git a/alib2algo/src/arbology/query/CompressedBitParallelismPatterns.cpp b/alib2algo/src/arbology/query/CompressedBitParallelismPatterns.cpp index 0cc3588656..9990d00b19 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 faca2ce27e..66a9f6b935 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 d52f4b315a..9e79e03286 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 25ceb45059..365ed27511 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 96cdfe379a..26328c88fa 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 2e47e1b001..4854f7e7f8 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 287c409366..fa105a365c 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 01b2991aa4..798392eeee 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 2f6ca8e5e5..a97184d13b 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 8b553ae2b5..b01d7b903e 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 fd45e5e879..89e8746a8b 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 9792b5206a..5b95761538 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 b0a131de24..b6b4a53ed5 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 1636724356..de31d9005e 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 4441a2af5e..b173a44667 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 0dda492746..79e43aff25 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 93f48f8341..7cb13a0a1f 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 20faba1106..5788885d1b 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 a846243e36..14f2f9326c 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 149d9f4cfc..a47b716927 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 43220083ea..06e0b01dbc 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 c8a9de3692..5325b9df47 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 ( ); -- GitLab