LZ index support
[SXSI/TextCollection.git] / TextCollectionBuilder.cpp
index ff10f7b..467bf94 100644 (file)
@@ -33,9 +33,8 @@ struct TCBuilderRep
 /**
  * Init text collection
  *
- * See CSA.h for more details.
  */
-TextCollectionBuilder::TextCollectionBuilder(unsigned samplerate)
+TextCollectionBuilder::TextCollectionBuilder(unsigned samplerate, ulong estimatedInputLength)
     : p_(new struct TCBuilderRep())
 {
     p_->n = 0;
@@ -43,8 +42,11 @@ TextCollectionBuilder::TextCollectionBuilder(unsigned samplerate)
     p_->numberOfTexts = 0;
     p_->numberOfSamples = 0;
     
-    // Current params: 8 bytes, 15 MB, no samples
-    p_->sa = new CSA::RLCSABuilder(8, 0, 15 * 1024 * 1024);
+    // Current params: 8 bytes, no samples, buffer size n/10 bytes.
+    // Buffer size is always at least 15MB:
+    if (estimatedInputLength < TEXTCOLLECTION_DEFAULT_INPUT_LENGTH)
+        estimatedInputLength = TEXTCOLLECTION_DEFAULT_INPUT_LENGTH;
+    p_->sa = new CSA::RLCSABuilder(8, 0, estimatedInputLength/10);
     assert(p_->sa->isOk());
 
 #ifdef TCB_TEST_BWT
@@ -93,7 +95,7 @@ void TextCollectionBuilder::InsertText(uchar const * text)
 }
 
 
-TextCollection * TextCollectionBuilder::InitTextCollection()
+TextCollection * TextCollectionBuilder::InitTextCollection(char type)
 {
     uchar * bwt = 0;
     CSA::usint length = 0;
@@ -149,7 +151,7 @@ TextCollection * TextCollectionBuilder::InitTextCollection()
     }
 
     TextCollection *result = new TCImplementation(bwt, (ulong)length, 
-                      p_->samplerate, p_->numberOfTexts, p_->maxTextLength, p_->numberOfSamples);
+                   p_->samplerate, p_->numberOfTexts, p_->maxTextLength, p_->numberOfSamples, type);
     return result;
 }