////////////////////////////////////////////////////////////////////////////
// Class CSA::THuffAlphabetRank
-
+// FIXME Unused code
CSA::THuffAlphabetRank::THuffAlphabetRank(uchar *s, TextPosition n, TCodeEntry *codetable, unsigned level) {
left = NULL;
right = NULL;
delete bitrank;
}
-/**
- * Saving data fields:
- BitRank *bitrank;
- bool leaf;
- uchar ch;
- left child;
- right child;
-*/
-void CSA::THuffAlphabetRank::Save(FILE *file)
-{
-}
-
-CSA::THuffAlphabetRank::THuffAlphabetRank(FILE *file)
-{
-
-
-}
-
-/////////////////////////////////////////////f///////////////////////////////
+////////////////////////////////////////////////////////////////////////////
// Class CSA
/**
/******************************************************************
* Counting queries
*/
+ulong CSA::Count(uchar const * pattern) const
+{
+ TextPosition m = strlen((char *)pattern);
+ if (m == 0)
+ return 0;
+
+ TextPosition sp = 0, ep = 0;
+ unsigned count = (unsigned) Search(pattern, m, &sp, &ep);
+ return count;
+}
+
unsigned CSA::CountPrefix(uchar const * pattern) const
{
TextPosition m = strlen((char *)pattern);
if (std::fwrite(&(this->bwtEndPos), sizeof(TextPosition), 1, file) != 1)
throw std::runtime_error("CSA::Save(): file write error (bwt end position).");
-
+
alphabetrank->save(file);
sampled->Save(file);
suffixes->Save(file);
suffixDocId->Save(file);
-
+
if (std::fwrite(&(this->numberOfTexts), sizeof(unsigned), 1, file) != 1)
throw std::runtime_error("CSA::Save(): file write error (numberOfTexts).");
if (std::fwrite(&(this->numberOfAllTexts), sizeof(unsigned), 1, file) != 1)
endmarkerDocId->Save(file);
emptyTextRank->Save(file);
+ fflush(file);
}