X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=tree.mli;h=ba0fc440d91261d8ad7c6419bc807f0dc582fbf6;hb=f0557f21878be17ddc75b1bc8f4f86da68c8e604;hp=d8a49c96d55bee08f9b2fab2ca1c8a4f0aafebfa;hpb=25dd7fcc77c2188732d96d5ff98d759bb81737cb;p=SXSI%2Fxpathcomp.git diff --git a/tree.mli b/tree.mli index d8a49c9..ba0fc44 100644 --- a/tree.mli +++ b/tree.mli @@ -1,54 +1,80 @@ type t + val init_contains : 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 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_ctx : Tag.t -> t -> t -> t -(* -val select_desc_only : Ptset.Int.t -> t -> t -val select_foll_only : Ptset.Int.t -> t -> t -> t -val select_below : Ptset.Int.t -> Ptset.Int.t -> t -> t -val select_next : Ptset.Int.t -> Ptset.Int.t -> t -> t -> t -*) + + +type 'a node = private int +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 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_ctx : t -> [ `Tree ] node -> [ `Tree ] node -> [ `Tree ] node +val next_element_ctx : t -> [ `Tree ] node -> [ `Tree ] node -> [ `Tree ] node + +val tagged_sibling : t -> Tag.t -> [ `Tree ] node -> [ `Tree ] node +val tagged_sibling_ctx : t -> Tag.t -> [ `Tree ] node -> [ `Tree ] node -> [ `Tree ] node + +val select_sibling : t -> Ptset.Int.t -> [ `Tree ] node -> [ `Tree ] node +val select_sibling_ctx : 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_desc : t -> Tag.t -> [ `Tree ] node -> [`Tree] node +val select_desc : t -> Ptset.Int.t -> [ `Tree ] node -> [`Tree] node + +val tagged_foll_ctx : t -> Tag.t -> [ `Tree ] node -> [`Tree] node -> [ `Tree ] node +val select_foll_ctx : 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 print_xml_fast : out_channel -> t -> [ `Tree ] node -> 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 -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 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_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 text_size : t -> int -val doc_ids : t -> int*int -val subtree_tags : t -> Tag.t -> int -val get_text : t -> string +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 dump_tree : Format.formatter -> t -> unit +val subtree_size : t -> [`Tree] node -> int +val text_below : t -> [`Tree] node -> [`Tree] node +val text_next : t -> [`Tree] node -> [`Tree] node -> [`Tree] node