X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=incbwt%2Ftext_generator.cpp;fp=incbwt%2Ftext_generator.cpp;h=901295ed4f18fe2ea659a54d93afffd7099ff482;hb=13e254b7c0ee22dffbc7c3125cee0408f9b375da;hp=0000000000000000000000000000000000000000;hpb=e4b6bdc7cc2a1372e4d4dae50acac55cebcc7e9b;p=SXSI%2FTextCollection.git diff --git a/incbwt/text_generator.cpp b/incbwt/text_generator.cpp new file mode 100644 index 0000000..901295e --- /dev/null +++ b/incbwt/text_generator.cpp @@ -0,0 +1,47 @@ +#include +#include +#include +#include +#include + +#include "rlcsa.h" +#include "misc/utils.h" + + +using namespace CSA; + + +int main(int argc, char** argv) +{ + std::cout << "Markov chain text generator" << std::endl; + if(argc < 5) + { + std::cout << "Usage: text_generator index_name initial_context context_length output" << std::endl; + return 1; + } + + std::cout << "Index name: " << argv[1] << std::endl; + std::cout << "Initial context: " << argv[2] << std::endl; + + usint context_length = atoi(argv[3]); + std::cout << "Context length: " << context_length << std::endl; + + std::cout << "Output: " << argv[4] << std::endl; + std::ofstream output(argv[4], std::ios_base::binary); + if(!output) + { + std::cerr << "Error creating output file!" << std::endl; + return 2; + } + std::cout << std::endl; + + RLCSA rlcsa(argv[1]); + srand((long)readTimer()); + uchar* buffer = new uchar[MEGABYTE]; + usint len = rlcsa.generateText(argv[2], context_length, buffer, MEGABYTE); + output.write((char*)buffer, len); + + delete[] buffer; + output.close(); + return 0; +}