Also serialize results in counting mode (prints the count in the output file)
authorKim Nguyễn <kn@lri.fr>
Fri, 19 Oct 2012 13:06:54 +0000 (15:06 +0200)
committerKim Nguyễn <kn@lri.fr>
Fri, 19 Oct 2012 13:06:54 +0000 (15:06 +0200)
src/main.ml
src/nodeSet.ml

index 0fbebad..2534d01 100644 (file)
@@ -55,7 +55,7 @@ let main v query_string output =
       if !Options.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 None
+        mk_runtime M.bottom_up_run auto v (query, pattern) R.NS.length R.NS.serialize !Options.output_file
       else
         let module R = ResJIT.Mat in
         let module M = Runtime.Make(R) in
@@ -72,7 +72,7 @@ let main v query_string output =
         if !Options.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 None
+          mk_runtime M.top_down_run auto v Tree.root R.NS.length R.NS.serialize !Options.output_file
       else
         let module R = ResJIT.Mat in
         let module M = Runtime.Make(R) in
index 0828029..b8979cc 100644 (file)
@@ -52,7 +52,12 @@ module Count : S with type t = int =
     let fold _ _ _ = failwith "fold not implemented"
     let map _ _ = failwith "map not implemented"
     let length x = x
-    let serialize _ _ _ = ()
+    let serialize f _ x =
+      let o = open_out f in
+      output_string o "<xml_result>\n";
+      output_string o (string_of_int x);
+      output_string o "\n</xml_result>\n";
+      close_out o
   end
 
 type  clist =