make suffix dumpable and some minors cleanup
[tedtools.git] / sfxtest.c
index 4f2a10d..f374036 100644 (file)
--- a/sfxtest.c
+++ b/sfxtest.c
@@ -50,7 +50,7 @@ STRINGCMP(const void *a, const void *b) {
 static void
 usage() {
        puts("Usage:");
-       puts("./sfxtest -d datafile [-b| [-a addondatafile] [-l | -p | -r | -g] [-n]] [-q]");
+       puts("./sfxtest -d datafile [-b| [-a addondatafile] [-P [-R] [-D] [-l | -p | -r | -g] [-n]] [-q]");
        puts("Detailed description:");
 
        puts("  Binary search");
@@ -58,13 +58,16 @@ usage() {
        puts("       -q - quiet (no output)");
 
        puts("  Optimal suffix search");
-       puts("    ./sfxtest -d datafile [-a addondatafile] [-l | -p | -r | -g]  [-n] [-q]");
+       puts("    ./sfxtest -d datafile [-a addondatafile] [-P [-R]] [-D] [-l | -p | -r | -g]  [-n] [-q]");
        puts("       -a addondatafile - addon file data for loading");
        puts("       -g - histogramm mode");
        puts("       -l - listing mode");
        puts("       -p - prefix search mode");
        puts("       -r - range search mode");
        puts("       -n - enumerate entries");
+       puts("       -P - use plain memory");
+       puts("       -R - use plain memory");
+       puts("       -D - dump/load tree");
        puts("       -q - quiet (no output)");
        
        exit(1);
@@ -103,14 +106,14 @@ main(int argn, char *argv[]) {
        FILE *in;
        char buf[4096];
        double sumtime=0.0;
-       int structsize=0, list=0, prefix=0, range=0, enumerate=0,gmode=0;
+       int structsize=0, list=0, prefix=0, range=0, enumerate=0,gmode=0, plain=0, revert=0, dump=0;
        char *addondatafile=NULL;
 
        int len=4096, curlen=0, checked=0, success=0;
        char **data;
        void *res;
        
-       while ((i = getopt(argn, argv, "pd:bqha:lrng")) != EOF) {
+       while ((i = getopt(argn, argv, "pd:bqha:lrngPRD")) != EOF) {
                switch(i) {
                        case 'a':
                                addondatafile=optarg;
@@ -139,6 +142,15 @@ main(int argn, char *argv[]) {
                        case 'q':
                                verbose=0;
                                break;
+                       case 'P':
+                               plain=1;
+                               break;
+                       case 'R':
+                               revert=1;
+                               break;
+                       case 'D':
+                               dump=1;
+                               break;
                        case 'h':
                        default: 
                                usage();
@@ -146,7 +158,7 @@ main(int argn, char *argv[]) {
        }
 
        if (!datafile) usage();
-
+               
        opentlog(TL_OPEN_STDERR|TL_OPEN_SYSLOG|TL_OPEN_FILE, TL_INFO, "./sfxtest.log");
        if ( (in=fopen(datafile,"r"))==NULL ) 
                tlog(TL_CRIT|TL_EXIT,"Beda with %s", datafile);
@@ -236,6 +248,18 @@ main(int argn, char *argv[]) {
                        tlog(TL_INFO,"Memory allocated: %.2fMb", ((float)info.totalen)/(1024.0*1024.0));
                        tlog(TL_INFO,"Number of nodes: %d", info.nnodes);
                        curlen+=cntadd;
+               } 
+
+               if ( plain && !gmode ) { 
+                       SFSMakePlain(&info, NULL);
+                       if ( revert )
+                               tfree( SFSRevertPlain(&info) );
+               }
+
+               if ( dump ) {
+                       SFSWriteDump(&info, "./sfxtest.dump");
+                       SFSFree(&info,NULL);
+                       SFSReadDump(&info, "./sfxtest.dump");
                }
 
                if (list) {