#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);
}
}