cherry pick from local- branch
[SXSI/xpathcomp.git] / tree.mli
index 75fb8fd..539103c 100644 (file)
--- a/tree.mli
+++ b/tree.mli
 type t 
-val init_contains : t -> string -> unit
+
+val init_textfun : [ `CONTAINS | `STARTSWITH | `ENDSWITH | `EQUALS ] -> t -> string -> unit
 val init_naive_contains : t -> string -> unit
-val is_nil : t -> bool
-val is_node : t -> bool
-val dump_node : t -> string
+
+
 val parse_xml_uri : string -> t
 val parse_xml_string : string -> t
 val save : t -> string -> unit
-val load : ?sample:int -> string -> t
+val load : ?sample:int -> ?load_text:bool -> string -> t
 val tag_pool : t -> Tag.pool
-val compare : t -> t -> int
-val equal : t -> t -> bool
-val mk_nil : t -> t
-val root : t -> t
-val is_root : t -> bool
-val parent : t -> t
-val first_child : t -> t
-val next_sibling : t -> t
-val next_sibling_ctx : t -> t -> t
-val left : t -> t
-val right : t -> t
-val id : t -> int
-val tag : t -> Tag.t
-val text_below : t -> t
-val text_next : t -> t -> t
-val tagged_desc : Tag.t -> t -> t
-val tagged_foll_below : Tag.t -> t -> t -> t
-val select_desc_only : Ptset.t -> t -> t
-val select_foll_only : Ptset.t -> t -> t -> t
-val select_below :   Ptset.t -> Ptset.t ->  t -> t
-val select_next :  Ptset.t -> Ptset.t -> t -> t -> t
+
+
+type 'a node
+type node_kind = [ `Tree | `Text ]
+val equal : [ `Tree ] node -> [ `Tree ] node -> bool
+val compare : [ `Tree ] node -> [ `Tree ] node -> int
+val dump_node : 'a node -> string
+
+
+val nil : [ `Tree ] node
+val root : [ `Tree ] node
+val size : t -> int
+val is_root : [ `Tree ] node -> bool
+val is_nil : [ `Tree ] node -> bool
+
+val parent : t -> [ `Tree ] node -> [ `Tree ] node
+val first_child : t -> [ `Tree ] node -> [ `Tree ] node
+val first_element : t -> [ `Tree ] node -> [ `Tree ] node
+val tagged_child : t -> Tag.t -> [ `Tree ] node -> [ `Tree ] node
+
+val select_child : t -> Ptset.Int.t -> [ `Tree ] node -> [ `Tree ] node
+
+val next_sibling : t -> [ `Tree ] node -> [ `Tree ] node
+val next_element : t -> [ `Tree ] node -> [ `Tree ] node
+
+val next_sibling_below : t -> [ `Tree ] node -> [ `Tree ] node ->  [ `Tree ] node
+val next_element_below : t -> [ `Tree ] node -> [ `Tree ] node ->  [ `Tree ] node
+
+val tagged_following_sibling : t ->  Tag.t ->  [ `Tree ] node -> [ `Tree ] node
+val tagged_following_sibling_below : t -> Tag.t -> [ `Tree ] node -> [ `Tree ] node -> [ `Tree ] node
+
+val select_following_sibling : t -> Ptset.Int.t -> [ `Tree ] node -> [ `Tree ] node
+val select_following_sibling_below : t -> Ptset.Int.t -> [ `Tree ] node -> [ `Tree ] node -> [ `Tree ] node 
+
+
+
+val tag : t -> [ `Tree ] node -> Tag.t
+val id : t -> [ `Tree ] node -> int
+
+val tagged_descendant : t -> Tag.t -> [ `Tree ] node -> [`Tree] node
+val select_descendant : t -> Ptset.Int.t -> [ `Tree ] node -> [`Tree] node
+
+val tagged_following_below : t -> Tag.t ->  [ `Tree ] node -> [`Tree] node -> [ `Tree ] node
+val select_following_below : t -> Ptset.Int.t ->  [ `Tree ] node -> [`Tree] node -> [ `Tree ] node
+
 val count : t -> string -> int
-val print_xml_fast : out_channel -> t -> unit
-val node_child : t -> t
-val node_sibling : t -> t
-val node_sibling_ctx : t -> t -> t
-val tags_below : t -> Tag.t -> Ptset.t
-val tags_after : t -> Tag.t -> Ptset.t
-val tags : t -> Tag.t -> Ptset.t*Ptset.t
-val is_below_right : t -> t -> bool
-val is_left : t -> bool
-val tagged_lowest : t -> Tag.t -> t
-val tagged_next : t -> Tag.t -> t
-val binary_parent : t -> t
-val benchmark_text : t -> string array
+val print_xml_fast : out_channel -> t -> [ `Tree ] node -> unit
+val print_xml_fast2 : out_channel -> t -> [ `Tree ] node -> unit
+val print_xml_fast3 : t -> [ `Tree ] node -> Unix.file_descr -> unit
+
+val tags_children : t -> Tag.t -> Ptset.Int.t
+val tags_below : t -> Tag.t -> Ptset.Int.t
+val tags_siblings : t -> Tag.t -> Ptset.Int.t
+val tags_after : t -> Tag.t -> Ptset.Int.t
+val tags : t ->  Tag.t  -> Ptset.Int.t*Ptset.Int.t*Ptset.Int.t*Ptset.Int.t
+val is_below_right : t ->  [`Tree] node ->  [`Tree] node -> bool
+val is_binary_ancestor : t ->  [`Tree] node ->  [`Tree] node -> bool
+val is_left : t ->  [`Tree] node -> bool
+
+val binary_parent : t ->  [`Tree] node -> [`Tree] node 
+
 val count_contains : t -> string -> int
-val unsorted_contains : t -> string -> unit
+(* val unsorted_contains : t -> string -> unit *)
 val text_size : t -> int
-val doc_ids : t -> int*int
+val doc_ids : t ->  [`Tree] node ->  [`Text] node *  [`Text] node 
+val subtree_tags : t -> Tag.t ->  [`Tree] node -> int
+val get_text : t -> [`Tree] node ->  string
+val get_text_id : t -> [`Tree] node ->  [`Text ] node
+
+val dump_tree : Format.formatter -> t -> unit
+val subtree_size : t -> [`Tree] node -> int
+val subtree_elements : t -> [`Tree] node -> int
+val text_below : t -> [`Tree] node -> [`Tree] node
+val text_next :  t -> [`Tree] node -> [`Tree] node -> [`Tree] node 
+
+val closing : t -> [`Tree] node -> [`Tree] node
+val is_open : t -> [`Tree] node -> bool
+
+val benchmark_jump : t -> Tag.t -> unit
+val benchmark_fcns : t -> int
+val benchmark_fene : t -> int
+val benchmark_lcps : t -> unit
+val benchmark_iter : t -> int
+val stats : t -> unit
+
+val test_suffix : t -> string -> int
+val test_prefix : t -> string -> int
+val test_equals : t -> string -> int
+val test_contains : t -> string -> int