Update caching infrastructure to automatically resize when needed.
[SXSI/xpathcomp.git] / src / formula.mli
1 type 'a expr =
2     False
3     | True
4     | Or of 'a * 'a
5     | And of 'a * 'a
6     | Atom of ([ `Left |`Right | `Epsilon ] * bool * State.t)
7     | Pred of Tree.Predicate.t
8
9 type t
10 val hash : t -> int
11 val uid : t -> Uid.t
12 val equal : t -> t -> bool
13 val expr : t -> t expr
14 val st :
15   t ->
16   (StateSet.t * StateSet.t * StateSet.t) *
17     (StateSet.t * StateSet.t * StateSet.t)
18 val compare : t -> t -> int
19 val size : t -> int
20 val print : Format.formatter -> t -> unit
21 val is_true : t -> bool
22 val is_false : t -> bool
23 val true_ : t
24 val false_ : t
25 val atom_ :
26   [ `Left | `Right | `Epsilon ] -> bool -> StateSet.elt -> t
27 val pred_ : Tree.Predicate.t -> t
28 val not_ : t -> t
29 val or_ : t -> t -> t
30 val and_ : t -> t -> t
31 val of_bool : bool -> t
32 val or_pred : t -> t -> t
33 val and_pred : t -> t -> t
34
35
36 module Infix : sig
37   val ( +| ) : t -> t -> t
38   val ( *& ) : t -> t -> t
39   val ( *+ ) :
40     [ `Left | `Right | `Epsilon ] -> StateSet.elt -> t
41   val ( *- ) :
42     [ `Left | `Right | `Epsilon ] -> StateSet.elt -> t
43 end