Added Count
[SXSI/TextCollection.git] / CSA.cpp
diff --git a/CSA.cpp b/CSA.cpp
index 5f69aa8..04ace79 100644 (file)
--- a/CSA.cpp
+++ b/CSA.cpp
@@ -40,7 +40,7 @@ const uchar CSA::versionFlag = 2;
 
 ////////////////////////////////////////////////////////////////////////////
 // Class CSA::THuffAlphabetRank
-
+// FIXME Unused code
 CSA::THuffAlphabetRank::THuffAlphabetRank(uchar *s, TextPosition n, TCodeEntry *codetable, unsigned level) {
     left = NULL;
     right = NULL;
@@ -122,26 +122,8 @@ CSA::THuffAlphabetRank::~THuffAlphabetRank() {
         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
 
 /**
@@ -408,6 +390,17 @@ bool CSA::IsLessThan(uchar const*) const
 /******************************************************************
  * 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);