Merge branch 'handle-stdout'
[SXSI/xpathcomp.git] / src / sigs.mli
1 (* Quite useful, taken from CDuce, cduce/misc/custom.ml *)
2 module type Set = sig
3   include Set.S
4   val hash : t -> int
5   val equal : t -> t -> bool
6 end
7
8 module type T = sig
9   type t
10     (* Debugging *)
11   val dump : Format.formatter -> t -> unit
12   val check : t -> unit (* Check internal invariants *)
13
14   (* Data structures *)
15   val equal : t -> t -> bool
16   val hash : t -> int
17   val compare :t -> t -> int
18   val print : Format.formatter -> t -> unit
19 end
20
21 module type TAG =
22 sig
23   include T
24   val attribute : t
25   val pcdata : t
26   val to_string : t -> string
27   val tag : string -> t
28 end
29
30 module type BINARY_TREE =
31   functor (Tag:TAG) ->
32 sig
33   include T
34   module Tag : TAG with type t = Tag.t
35   val parse_xml_uri : string -> t
36   val parse_xml_string : string -> t
37
38   val root : t -> t
39
40   val is_string : t -> bool
41   val is_node : t -> bool
42   val is_nil : t -> bool
43
44   val string : t -> string
45   val first_child : t -> t
46   val next_sibling : t -> t
47   val parent : t -> t
48
49   val id : t -> int
50   val tag : t -> Tag.t
51
52   val print_xml : out_channel -> t -> unit
53   val size : t -> int*int*int*int
54 end
55 module type BINARY_TREE_S =
56 sig
57   include T
58   module Tag : TAG
59   val parse_xml_uri : string -> t
60   val parse_xml_string : string -> t
61
62   val root : t -> t
63
64   val is_string : t -> bool
65   val is_node : t -> bool
66   val is_nil : t -> bool
67
68   val string : t -> string
69   val first_child : t -> t
70   val next_sibling : t -> t
71   val parent : t -> t
72
73   val id : t -> int
74   val tag : t -> Tag.t
75
76   val print_xml : out_channel -> t -> unit
77   val dump : Format.formatter -> t -> unit
78   val size : t -> int*int*int*int
79 end