X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=src%2Foptions.ml;fp=src%2Foptions.ml;h=e1f02f2e8b8c1bccc9c70eef2f40b294aed181f5;hb=4b52da1a20a4fe031930bb96d2ca46bec06dc529;hp=0000000000000000000000000000000000000000;hpb=a223af3254fb51c279cfbccdc18c59484fdca74e;p=SXSI%2Fxpathcomp.git diff --git a/src/options.ml b/src/options.ml new file mode 100644 index 0000000..e1f02f2 --- /dev/null +++ b/src/options.ml @@ -0,0 +1,57 @@ +let index_empty_texts = ref false +let sample_factor = ref 64 +let disable_text_collection = ref false +let tc_threshold = ref 60000 + +let query = ref "" +let input_file = ref "" +let output_file = ref None +let save_file = ref "" +let count_only = ref false +let time = ref false +let bottom_up = ref false +let no_jump = ref false +let verbose = ref false +let text_index_type = ref 0 + +let set_index_type = function + | "default" -> text_index_type := 0 + | "swcsa" -> text_index_type := 1 + | "rlcsa" -> text_index_type := 2 + | s -> raise (Arg.Bad(s)) + +let usage_msg = Printf.sprintf "%s 'query' [output]" Sys.argv.(0) + + +let pos = ref 0 +let anon_fun = + fun s -> match !pos with + | 0 -> input_file:= s;incr pos + | 1 -> query := s; incr pos + | 2 -> output_file := Some s; incr pos + | _ -> raise (Arg.Bad(s)) + +let spec = [ "-c", Arg.Set(count_only), "counting only (don't materialize the result set)"; + "-t", Arg.Set(time), "print timing statistics"; + "-max-tc", Arg.Set_int(tc_threshold), "set maximum count for which the TextCollection is used"; + "-f", Arg.Set_int(sample_factor), "sample factor [default=64]"; + "-i", Arg.Set(index_empty_texts), "index empty texts [default=false]"; + "-d", Arg.Set(disable_text_collection), "disable text collection[default=false]"; + "-s", Arg.Set_string(save_file), "save the intermediate representation into file.srx"; + "-b", Arg.Set(bottom_up), "real bottom up run"; + "-nj", Arg.Set(no_jump), "disable jumping"; + "-index-type", Arg.Symbol ([ "default"; "swcsa"; "rlcsa" ], set_index_type), + "choose text index type"; + "-v", Arg.Set(verbose), "verbose mode"; + ] + +let parse_cmdline() = + let _ = Arg.parse spec anon_fun usage_msg + in + if (!pos > 3 || !pos < 2) + then begin Arg.usage spec usage_msg; exit 1 end + + + + +