X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=TCImplementation.h;h=ff5dff3fc744884778fd3508f98db7d1d64a1156;hb=ed61d2042a7ad7dd83bae32d7c31e69504dafa80;hp=f0a21cc91e17729d161816138f69ca099538d283;hpb=6048d243439020acd3b5acf8654641cb9cef8e27;p=SXSI%2FTextCollection.git diff --git a/TCImplementation.h b/TCImplementation.h index f0a21cc..ff5dff3 100644 --- a/TCImplementation.h +++ b/TCImplementation.h @@ -20,6 +20,9 @@ #ifndef _TCImplementation_H_ #define _TCImplementation_H_ + +#include "incbwt/bits/deltavector.h" + #include "BitRank.h" #include "TextCollection.h" #include "BlockArray.h" @@ -41,9 +44,11 @@ #undef bitset #undef bitget + #include "TextStorage.h" #include "ArrayDoc.h" #include +#include namespace SXSI { @@ -55,7 +60,8 @@ namespace SXSI */ class TCImplementation : public SXSI::TextCollection { public: - TCImplementation(uchar *, ulong, unsigned, unsigned, ulong, ulong, char); + TCImplementation(uchar *, ulong, unsigned, unsigned, ulong, ulong, + CSA::DeltaVector &, const std::string &, char); ~TCImplementation(); bool EmptyText(DocId) const; @@ -134,7 +140,7 @@ public: full_result FullKErrors(uchar const *, unsigned) const; // Index from/to disk - TCImplementation(FILE *, unsigned); + TCImplementation(FILE *, index_mode_t, unsigned); void Save(FILE *) const; private: @@ -167,7 +173,7 @@ private: // Following methods are not part of the public API uchar * BWT(uchar *); void makewavelet(uchar *); - void maketables(ulong, char); + void maketables(ulong, char, CSA::DeltaVector &, const std::string &); DocId DocIdAtTextPos(BlockArray*, TextPosition) const; ulong Search(uchar const *, TextPosition, TextPosition *, TextPosition *) const; ulong Search(uchar const *, TextPosition, TextPosition *, TextPosition *, DocId, DocId) const; @@ -324,14 +330,14 @@ private: // Rank among the end-markers in BWT unsigned endmarkerRank = tmp_rank_c-1; //alphabetrank->rank(0, i) - 1; DocId docId = Doc->access(endmarkerRank); - result.push_back(make_pair(docId, dist)); + result.push_back(std::make_pair(docId, dist)); } else { TextPosition textPos = (*suffixes)[sampled->rank1(i)-1] + dist; DocId docId = (*suffixDocId)[sampled->rank1(i)-1]; - result.push_back(make_pair(docId, textPos)); + result.push_back(std::make_pair(docId, textPos)); } } } @@ -360,7 +366,7 @@ private: unsigned endmarkerRank = tmp_rank_c-1; //alphabetrank->rank(0, i) - 1; DocId docId = Doc->access(endmarkerRank); if (docId >= begin && docId <= end) - result.push_back(make_pair(docId, dist)); + result.push_back(std::make_pair(docId, dist)); } else { @@ -368,7 +374,7 @@ private: DocId docId = (*suffixDocId)[sampled->rank1(i)-1]; if (docId >= begin && docId <= end) - result.push_back(make_pair(docId, textPos)); + result.push_back(std::make_pair(docId, textPos)); } } }