Newer
Older
/*
* 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 <tree/properties/SubtreeJumpTable.h>
#include <tree/ranked/PrefixRankedBarTree.h>
#include <tree/ranked/PrefixRankedTree.h>
namespace arbology {
namespace transform {
/**
*/
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 );
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 );
for ( unsigned index : indexes )
res.insert ( subjectSubtreeJumpTable[index] );
return res;
}
} /* namespace transform */
} /* namespace arbology */
#endif /* _ARBOLOGY_BEGIN_TO_END_INDEX_H_ */