Debug swcsa
[SXSI/TextCollection.git] / TextCollection.cpp
index 9c94724..abc6f91 100644 (file)
@@ -1,16 +1,35 @@
 #include "TextCollection.h"
-#include "TCImplementation.h"
+#include "FMIndex.h"
+#include "SWCSAWrapper.h"
+#include "RLCSAWrapper.h"
 
 namespace SXSI
 {
+
     /**
      * Init text collection from a file
      *
      * See TCImplementation.h for more details.
      */
-    TextCollection * TextCollection::Load(FILE *fp, unsigned samplerate)
+    TextCollection * TextCollection::Load(FILE *fp, char const *filename, index_mode_t im, unsigned samplerate)
     {
-        TextCollection *result = new TCImplementation(fp, samplerate);
-        return result;
+        char type = 0;
+        if (std::fread(&type, 1, 1, fp) != 1)
+            throw std::runtime_error("TextCollection::Load(): file read error (type flag).");
+        switch (type)
+        {
+        case 'F':
+            return new FMIndex(fp, im, samplerate);
+            break;
+        case 'W':
+            return new SWCSAWrapper(fp, filename);
+            break;
+        case 'R':
+            return new RLCSAWrapper(fp, filename);
+            break;
+        }
+
+        std::cerr << "TextCollection::Load(): invalid save file version or corrupted input file." << std::endl;
+        std::exit(1);
     }
 }