merge from branch stable-succint-jumping
[SXSI/xpathcomp.git] / tree.mli
1 (******************************************************************************)
2 (*  SXSI : XPath evaluator                                                    *)
3 (*  Kim Nguyen (Kim.Nguyen@nicta.com.au)                                      *)
4 (*  Copyright NICTA 2008                                                      *)
5 (*  Distributed under the terms of the LGPL (see LICENCE)                     *)
6 (******************************************************************************)
7 module type BINARY =
8 sig
9   type node_content
10   type string_content
11   type descr = Nil| Node of node_content | String of string_content 
12   type t
13   val parse_xml_uri : string -> t
14   val parse_xml_string : string -> t
15   val save : t -> string -> unit
16   val load : ?sample:int -> string -> t
17   val tag_pool : t -> Tag.pool
18   val string : t -> string
19   val descr : t -> descr
20   val is_node : t -> bool
21   val left : t -> t
22   val right : t -> t
23   val first_child : t -> t
24   val next_sibling : t -> t
25   val parent : t -> t
26   val root : t -> t
27   val is_root : t -> bool
28   val id : t -> int
29   val tag : t -> Tag.t
30   val print_xml_fast : out_channel -> t -> unit
31   val compare : t -> t -> int
32   val equal : t -> t -> bool
33   module DocIdSet : 
34   sig 
35     include Set.S  
36   end with type elt = string_content
37   val string_below : t -> string_content -> bool
38   val contains : t -> string -> DocIdSet.t
39   val contains_old : t -> string -> DocIdSet.t
40   val contains_iter : t -> string -> DocIdSet.t
41   val count_contains : t -> string -> int
42   val count : t -> string -> int
43   val dump : t -> unit 
44   val get_string : t -> string_content -> string
45   val has_tagged_desc : t -> Tag.t -> bool
46   val has_tagged_foll : t -> Tag.t -> bool
47   val tagged_desc : t -> Tag.t -> t
48   val tagged_foll : t -> Tag.t -> t
49   val tagged_below : t -> Ptset.t -> Ptset.t -> t
50   val tagged_next : t -> Ptset.t -> Ptset.t -> t -> t
51   val tagged_desc_only : t -> Ptset.t -> t
52   val tagged_foll_only : t -> Ptset.t -> t -> t
53   val text_below : t -> t
54   val text_next : t -> t -> t
55   val init_tagged_next : t -> Tag.t -> unit
56   val subtree_tags : t -> Tag.t -> int
57   val is_left : t -> bool
58   val print_id : Format.formatter -> t -> unit 
59   val test_xml_tree : Format.formatter -> Ptset.t -> t -> unit
60   val init_contains : t -> string -> unit
61   val mk_nil : t -> t
62   val test_jump : t -> Tag.t -> unit
63 end
64
65 module Binary : BINARY
66
67 IFDEF DEBUG
68 THEN
69 module DEBUGTREE : sig
70   include BINARY
71   val print_stats : Format.formatter -> unit
72 end
73 ENDIF