X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=src%2Ftree.ml;fp=src%2Ftree.ml;h=66bf1593bcbd3ca71ea09d46238784a76a943609;hb=a145e1cff02534a93be2544303551c7ea94f0083;hp=9b3d4bc52bdcecdc0685053ccbad4ef8268cdfea;hpb=a127ef55715b51a4e8b943104af2ebdc60733f0c;p=SXSI%2Fxpathcomp.git diff --git a/src/tree.ml b/src/tree.ml index 9b3d4bc..66bf159 100644 --- a/src/tree.ml +++ b/src/tree.ml @@ -7,7 +7,6 @@ INCLUDE "debug.ml" INCLUDE "utils.ml" - external init_lib : unit -> unit = "sxsi_cpp_init" exception CPlusPlusError of string @@ -20,7 +19,6 @@ type node = [ `Tree ] Node.t type tree - external register_tag : tree -> string -> Tag.t = "caml_xml_tree_register_tag" external tag_name : tree -> Tag.t -> string = "caml_xml_tree_get_tag_name" @@ -75,7 +73,8 @@ struct (fun parser_ -> incr event_counter; if !event_counter land 0xffffff == 0 then - Printf.eprintf "Current position: %i\n%!" (Expat.get_current_byte_index parser_)) + Logger.print Format.err_formatter "Current position: %i@\n@?" (Expat.get_current_byte_index parser_)) + let do_text b t = if Buffer.length t > 0 then begin @@ -124,16 +123,16 @@ struct let finalize () = do_text build buf; close_tag build ""; - Printf.eprintf "Finished Parsing\n%!"; - Printf.eprintf "Started Index construction\n%!"; + Logger.print Format.err_formatter "Finished parsing@\n"; + Logger.print Format.err_formatter "Starting index construction@\n"; let r = close_document build in - Printf.eprintf "Finished Index construction\n%!"; + Logger.print Format.err_formatter "Finished index construction@\n"; r in Expat.set_start_element_handler parser_ (start_element_handler parser_ build buf); Expat.set_end_element_handler parser_ (end_element_handler parser_ build buf); Expat.set_character_data_handler parser_ (character_data_handler parser_ build buf); - Printf.eprintf "Started Parsing\n%!"; + Logger.print Format.err_formatter "Started parsing@\n"; open_document build !Options.index_empty_texts !Options.sample_factor !Options.disable_text_collection !Options.text_index_type; open_tag build ""; @@ -325,31 +324,22 @@ let tags t tag = open Format let dump_tag_table t = - eprintf "Child tags:\n%!"; - Array.iteri - (fun tag set -> eprintf "%s: %a\n%!" - (Tag.to_string tag) TagSet.print (TagSet.inj_positive set)) - t.children; - eprintf "-----------------------------\n%!"; - eprintf "Descendant tags:\n%!"; - Array.iteri - (fun tag set -> eprintf "%s: %a\n%!" - (Tag.to_string tag) TagSet.print (TagSet.inj_positive set)) - t.descendants; - eprintf "-----------------------------\n%!"; - eprintf "Sibling tags:\n%!"; - Array.iteri - (fun tag set -> eprintf "%s: %a\n%!" - (Tag.to_string tag) TagSet.print (TagSet.inj_positive set)) - t.siblings; - eprintf "-----------------------------\n%!"; - eprintf "Following tags:\n%!"; - Array.iteri - (fun tag set -> eprintf "%s: %a\n%!" - (Tag.to_string tag) TagSet.print (TagSet.inj_positive set)) - t.followings; - eprintf "-----------------------------\n%!" - + let tag = ref 0 in + let printer ppf set = + Logger.print ppf "%s: %a" + (Tag.to_string !tag) TagSet.print (TagSet.inj_positive set); + incr tag + in + let set_printer msg set = + tag := 0; + Logger.print err_formatter "%s :@\n" msg; + Pretty.pp_print_array ~sep:pp_force_newline printer err_formatter set; + Logger.print err_formatter "-----------------------------@\n"; + in + set_printer "Child tags" t.children; + set_printer "Descendant tags" t.descendants; + set_printer "Sibling tags" t.siblings; + set_printer "Following tags" t.followings external tree_subtree_tags : tree -> [`Tree] Node.t -> Tag.t -> int = "caml_xml_tree_subtree_tags" "noalloc" let subtree_tags t n tag = tree_subtree_tags t.doc n tag @@ -389,7 +379,7 @@ let stats t = in let a,b = loop true root 0 0 0 in - Printf.eprintf "Average depth: %f, number of leaves %i\n%!" ((float_of_int a)/. (float_of_int b)) b + Logger.print err_formatter "Average depth: %f, number of leaves %i@\n@?" ((float_of_int a)/. (float_of_int b)) b ;; module TagS = @@ -558,9 +548,9 @@ let is_node t = t != nil let is_root t = t == root let node_of_t t = - eprintf "Initializing tag structure\n%!"; + Logger.print err_formatter "Initializing tag structure@\n"; let _ = Tag.init (mk_tag_ops t) in - eprintf "Starting tag table construction\n%!"; + Logger.print err_formatter "Starting tag table construction@\n"; let f, n, c, d = time collect_labels t ~msg:"Building tag relationship table" in let c = Array.map TagS.to_ptset c in let n = Array.map TagS.to_ptset n in @@ -595,7 +585,7 @@ let version_string = "3" let pos fd = Unix.lseek fd 0 Unix.SEEK_CUR -let pr_pos fd = Printf.eprintf "At position %i\n%!" (pos fd) +let pr_pos fd = Logger.print err_formatter "At position %i@\n" (pos fd) let write fd s = let sl = String.length s in @@ -750,15 +740,9 @@ let mk_pred query s = in let bv = results.bv in memo := begin fun _ n -> - let b = - bit_vector_unsafe_get bv (Node.to_int n) - in - D_TRACE_(Printf.eprintf "Result of memoized call to query %s is %b for node %i\n" s b (Node.to_int n)); - b + bit_vector_unsafe_get bv (Node.to_int n) end; - let b = bit_vector_unsafe_get bv (Node.to_int node) in - D_TRACE_(Printf.eprintf "Result is %b for node %i\n" b (Node.to_int node)); - b + bit_vector_unsafe_get bv (Node.to_int node) end; Predicate.make memo