Skip to content
Snippets Groups Projects
BeginToEndIndex.h 1.83 KiB
Newer Older
  • Learn to ignore specific revisions
  • /*
     * BeginToEndIndex.h
     *
     *  Created on: 5. 11. 2014
     *      Author: Jan Travnicek
     */
    
    #ifndef _ARBOLOGY_BEGIN_TO_END_INDEX_H_
    #define _ARBOLOGY_BEGIN_TO_END_INDEX_H_
    
    
    #include <alib/set>
    
    #include <tree/properties/SubtreeJumpTable.h>
    
    
    #include <tree/ranked/PrefixRankedBarTree.h>
    #include <tree/ranked/PrefixRankedTree.h>
    
    
    namespace arbology {
    
    namespace transform {
    
    /**
     */
    
    class BeginToEndIndex {
    
    public:
    	/**
    	 * Search for pattern in linear string.
    	 * @return set set of occurences
    	 */
    
    	template < class SymbolType, class RankType >
    
    	static ext::set < unsigned > transform ( const tree::PrefixRankedBarTree < SymbolType, RankType > & subject, const ext::set < unsigned > & indexes );
    
    	template < class SymbolType, class RankType >
    
    	static ext::set < unsigned > transform ( const tree::PrefixRankedTree < SymbolType, RankType > & subject, const ext::set < unsigned > & indexes );
    
    template < class SymbolType, class RankType >
    
    ext::set < unsigned > BeginToEndIndex::transform ( const tree::PrefixRankedBarTree < SymbolType, RankType > & subject, const ext::set < unsigned > & indexes ) {
    
    	ext::vector < int > subjectSubtreeJumpTable = tree::properties::SubtreeJumpTable::compute ( subject );
    
    	ext::set < unsigned > res;
    
    
    	for ( unsigned index : indexes )
    		res.insert ( subjectSubtreeJumpTable[index] );
    
    	return res;
    }
    
    template < class SymbolType, class RankType >
    
    ext::set < unsigned > BeginToEndIndex::transform ( const tree::PrefixRankedTree < SymbolType, RankType > & subject, const ext::set < unsigned > & indexes ) {
    
    	ext::vector < int > subjectSubtreeJumpTable = tree::properties::SubtreeJumpTable::compute ( subject );
    
    	ext::set < unsigned > res;
    
    
    	for ( unsigned index : indexes )
    		res.insert ( subjectSubtreeJumpTable[index] );
    
    	return res;
    }
    
    
    } /* namespace transform */
    
    } /* namespace arbology */
    
    #endif /* _ARBOLOGY_BEGIN_TO_END_INDEX_H_ */