X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=src%2Foptions.ml;h=d72763ec8ba29a2277cb223530acf3716a4db5a1;hb=15925690fee382ffc7d78fa2fed8b686c180ec99;hp=6395b5cc949e29bd4591c99cef513cb68fc0ef9d;hpb=a3f00ceeb7a1c6de24cb255485b9466a74b78392;p=SXSI%2Fxpathcomp.git diff --git a/src/options.ml b/src/options.ml index 6395b5c..d72763e 100644 --- a/src/options.ml +++ b/src/options.ml @@ -13,6 +13,11 @@ let bottom_up = ref false let no_jump = ref false let verbose = ref false let text_index_type = ref 0 +let do_perf = ref false + +(* Only valid if compiled with -DTRACE *) +let trace_file = ref "trace.dot" + let set_index_type = function | "default" -> text_index_type := 0 @@ -20,7 +25,7 @@ let set_index_type = function | "rlcsa" -> text_index_type := 2 | s -> raise (Arg.Bad(s)) -let usage_msg = Printf.sprintf "%s 'query' [output]" Sys.argv.(0) +let usage_msg = Printf.sprintf "%s [options] 'query' [output]" Sys.argv.(0) let pos = ref 0 @@ -31,33 +36,47 @@ let anon_fun = | 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 spec = Arg.align + [ "-c", Arg.Set(count_only), + " counting only (don't materialize the result set)"; + + "-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"; + + "-p", Arg.Set(do_perf), " dump perf counters (Linux only)"; + + "-index-type", Arg.Symbol ([ "default"; "swcsa"; "rlcsa" ], + set_index_type), + " choose text index type"; + + "-v", Arg.Set(verbose), " verbose mode"; ] @ +IFDEF TRACE +THEN [ + "-trace-file", Arg.Set_string(trace_file), + " save the full trace in dot format in " + ] +ELSE [] +END + 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 + if (!pos > 3 || !pos < 2) + then begin Arg.usage spec usage_msg; exit 1 end