Split the Options module in two to remove a circular dependency in
[SXSI/xpathcomp.git] / src / main.ml
index 2030452..af00682 100644 (file)
@@ -21,19 +21,19 @@ let tuned_gc = { default_gc with
 
 let mk_runtime run auto doc arg count print outfile =
   fun () ->
-    if !Options.do_perf then start_perf ();
-    let r = time ~count:!Options.repeat ~msg:"Execution time" (run auto doc) arg in
-    if !Options.do_perf then stop_perf ();
+    if !Config.do_perf then start_perf ();
+    let r = time ~count:!Config.repeat ~msg:"Execution time" (run auto doc) arg in
+    if !Config.do_perf then stop_perf ();
     Logger.verbose Format.err_formatter "Number of results: %i@\n" (count r);
     match outfile with
        None -> ()
       | Some file ->
-       time ~count:1 ~msg:"Serialization time" (print file !Options.no_wrap_results doc) r
+       time ~count:1 ~msg:"Serialization time" (print file !Config.no_wrap_results doc) r
 ;;
 
 let main v query_string output =
   Tag.init (Tree.tag_operations v);
-  if !Options.docstats then Tree.stats v;
+  if !Config.docstats then Tree.stats v;
   let query =
     time ~msg:"Parsing query" XPath.parse query_string
   in
@@ -42,39 +42,39 @@ let main v query_string output =
   let auto, bu_info =
     time ~msg:"Compiling query" Compile.compile query
   in
-  if !Options.verbose then Ata.print Format.err_formatter auto;
+  if !Config.verbose then Ata.print Format.err_formatter auto;
   Gc.full_major();
   Gc.compact();
   Gc.set (tuned_gc);
   let runtime =
-    match !Options.bottom_up, bu_info with
+    match !Config.bottom_up, bu_info with
 
     | true, Some [ (query, pattern) ] ->
-      if !Options.count_only then
+      if !Config.count_only then
         let module R = ResJIT.Count in
         let module M = Runtime.Make(R) in
-        mk_runtime M.bottom_up_run auto v (query, pattern) R.NS.length R.NS.serialize !Options.output_file
+        mk_runtime M.bottom_up_run auto v (query, pattern) R.NS.length R.NS.serialize !Config.output_file
       else
         let module R = ResJIT.Mat in
         let module M = Runtime.Make(R) in
-        mk_runtime M.bottom_up_run auto v (query, pattern) R.NS.length R.NS.serialize !Options.output_file
+        mk_runtime M.bottom_up_run auto v (query, pattern) R.NS.length R.NS.serialize !Config.output_file
 
     | _ ->
       (* run the query top_down *)
 
-      if !Options.bottom_up then
+      if !Config.bottom_up then
         Logger.verbose Format.err_formatter "Cannot run the query in bottom-up mode, using top-down evaluator@\n@?";
-      if !Options.count_only then
+      if !Config.count_only then
         let module R = ResJIT.Count in
         let module M = Runtime.Make(R) in
-        if !Options.twopass then
+        if !Config.twopass then
           mk_runtime M.twopass_top_down_run auto v Tree.root R.NS.length R.NS.serialize None
         else
-          mk_runtime M.top_down_run auto v Tree.root R.NS.length R.NS.serialize !Options.output_file
+          mk_runtime M.top_down_run auto v Tree.root R.NS.length R.NS.serialize !Config.output_file
       else
         let module R = ResJIT.Mat in
         let module M = Runtime.Make(R) in
-        mk_runtime M.top_down_run auto v Tree.root R.NS.length R.NS.serialize !Options.output_file
+        mk_runtime M.top_down_run auto v Tree.root R.NS.length R.NS.serialize !Config.output_file
   in
   runtime ()
 ;;
@@ -85,32 +85,32 @@ let _ =
   try
     Printexc.record_backtrace true;
     let document =
-      if Filename.check_suffix !Options.input_file ".srx"
+      if Filename.check_suffix !Config.input_file ".srx"
       then
        time
          ~msg:"Loading file"
          (Tree.load
-            ~sample:!Options.sample_factor
-            ~load_text:(not !Options.disable_text_collection))
-         !Options.input_file
+            ~sample:!Config.sample_factor
+            ~load_text:(not !Config.disable_text_collection))
+         !Config.input_file
       else
        let v =
          time
            ~msg:"Parsing document"
            (Tree.parse_xml_uri)
-           !Options.input_file
+           !Config.input_file
        in
         let () =
-          if !Options.save_file <> ""
+          if !Config.save_file <> ""
           then
            time
              ~msg:"Writing file to disk"
              (Tree.save v)
-             !Options.save_file;
+             !Config.save_file;
        in
        v
     in
-    main document !Options.query !Options.output_file;
+    main document !Config.query !Config.output_file;
     Logger.verbose Format.err_formatter "Maximum resident set size: %s @\n" (read_procmem());
     Gc.full_major();
     Profile.summary Format.err_formatter