module MemUnion = Hashtbl.Make (struct
type t = Ptset.Int.t*Ptset.Int.t
- let equal (x,y) (z,t) = x == z || y == t
+ let equal (x,y) (z,t) = x == z && y == t
let equal a b = equal a b || equal b a
let hash (x,y) = (* commutative hash *)
let x = Uid.to_int (Ptset.Int.uid x)
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");
+ (let ms = input_line in_c in if ms <> magic_string then failwith ("Invalid index file " ^ ms));
(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
ntable
in
let _ = Printf.eprintf "\nLoading tag table : " in
- let ntable = time (load_table) () in
+ let ntable = time ~count:0 load_table () in
ignore(Unix.lseek fd (pos_in in_c) Unix.SEEK_SET);
let tree = { doc = tree_load fd load_text sample;
ttable = ntable;}
+let test_prefix t s = Array.length (text_prefix t.doc s)
+let test_suffix t s = Array.length (text_suffix t.doc s)
+let test_contains t s = Array.length (text_contains t.doc s)
+let test_equals t s = Array.length (text_equals t.doc s)