Random fixes
[SXSI/xpathcomp.git] / tree.ml
diff --git a/tree.ml b/tree.ml
index 4b7cb54..7ea6f03 100644 (file)
--- a/tree.ml
+++ b/tree.ml
@@ -34,8 +34,8 @@ let equal_node : 'a node -> 'a node -> bool = (==)
 external parse_xml_uri : string -> int -> bool -> bool -> tree = "caml_call_shredder_uri"         
 external parse_xml_string :  string -> int -> bool -> bool -> tree = "caml_call_shredder_string"
 external tree_print_xml_fast3 : tree -> [`Tree ] node -> Unix.file_descr ->unit = "caml_xml_tree_print"
-external tree_save : tree -> Unix.file_descr -> unit = "caml_xml_tree_save"
-external tree_load : Unix.file_descr -> bool -> int -> tree = "caml_xml_tree_load"
+external tree_save : tree -> Unix.file_descr -> string -> unit = "caml_xml_tree_save"
+external tree_load : Unix.file_descr -> string -> bool -> int -> tree = "caml_xml_tree_load"
   
 external nullt : unit -> 'a node = "caml_xml_tree_nullt"
 
@@ -132,7 +132,7 @@ external benchmark_jump : tree -> Tag.t -> unit = "caml_benchmark_jump" "noalloc
 
 let benchmark_jump t s = benchmark_jump t.doc s
 
-external benchmark_fcns : tree -> unit = "caml_benchmark_fcns" "noalloc"
+external benchmark_fcns : tree -> int = "caml_benchmark_fcns" "noalloc"
 
 let benchmark_fcns t = benchmark_fcns t.doc
 
@@ -421,7 +421,7 @@ let save t str =
     (* we need to move the fd to the correct position *)
     flush out_c;
     ignore (Unix.lseek fd (pos_out out_c) Unix.SEEK_SET);
-    tree_save t.doc fd;
+    tree_save t.doc fd str;
     close_out out_c
 ;;
 
@@ -430,7 +430,7 @@ let load ?(sample=64) ?(load_text=true) str =
   let in_c = Unix.in_channel_of_descr fd in
   let _ = set_binary_mode_in in_c true in
   let load_table () = 
-    (let ms = input_line in_c in if ms <> magic_string then failwith ("Invalid index file " ^ ms));
+    (let ms = input_line in_c in if ms <> magic_string then failwith "Invalid index file");
     (let vs = input_line in_c in if vs <> version_string then failwith "Invalid version file");
     let table : (Tag.t,(Ptset.Int.t*Ptset.Int.t*Ptset.Int.t*Ptset.Int.t)) Hashtbl.t =
       Marshal.from_channel in_c 
@@ -450,9 +450,9 @@ let load ?(sample=64) ?(load_text=true) str =
       ntable
   in
   let _ = Printf.eprintf "\nLoading tag table : " in
-  let ntable = time ~count:0 load_table () in
+  let ntable = time (load_table) () in
   ignore(Unix.lseek fd (pos_in in_c) Unix.SEEK_SET);
-  let tree = { doc = tree_load fd load_text sample;
+  let tree = { doc = tree_load fd str load_text sample;
               ttable = ntable;}
   in close_in in_c;
   tree
@@ -513,7 +513,8 @@ let select_following_sibling t = fun ts ->
     fun n -> tree_select_following_sibling t.doc n v
 
 let next_sibling_below t = (); fun n _ -> tree_next_sibling t.doc n
-let next_element_below t = (); fun n _ ->  tree_next_element t.doc n
+let next_element_below t = (); fun n _ -> tree_next_element t.doc n
+
 let tagged_following_sibling_below t tag = (); fun n  _ -> tree_tagged_following_sibling t.doc n tag
 
 let select_following_sibling_below t = fun ts ->