Debug swcsa
[SXSI/TextCollection.git] / incbwt / text_generator.cpp
1 #include <algorithm>
2 #include <cstdlib>
3 #include <ctime>
4 #include <fstream>
5 #include <iostream>
6
7 #include "rlcsa.h"
8 #include "misc/utils.h"
9
10
11 using namespace CSA;
12
13
14 int main(int argc, char** argv)
15 {
16   std::cout << "Markov chain text generator" << std::endl;
17   if(argc < 5)
18   {
19     std::cout << "Usage: text_generator index_name initial_context context_length output" << std::endl;
20     return 1;
21   }
22
23   std::cout << "Index name: " << argv[1] << std::endl;
24   std::cout << "Initial context: " << argv[2] << std::endl;
25
26   usint context_length = atoi(argv[3]);
27   std::cout << "Context length: " << context_length << std::endl;
28
29   std::cout << "Output: " << argv[4] << std::endl;
30   std::ofstream output(argv[4], std::ios_base::binary);
31   if(!output)
32   {
33     std::cerr << "Error creating output file!" << std::endl;
34     return 2;
35   }
36   std::cout << std::endl;
37
38   RLCSA rlcsa(argv[1]);
39   srand((long)readTimer());
40   uchar* buffer = new uchar[MEGABYTE];
41   usint len = rlcsa.generateText(argv[2], context_length, buffer, MEGABYTE);
42   output.write((char*)buffer, len);
43
44   delete[] buffer;
45   output.close();
46   return 0;
47 }