Merge branch 'local-ocamlbuild' into local-trunk
[SXSI/xpathcomp.git] / src / l2JIT.mli
diff --git a/src/l2JIT.mli b/src/l2JIT.mli
new file mode 100644 (file)
index 0000000..9575f34
--- /dev/null
@@ -0,0 +1,46 @@
+type jump =
+    NOP of unit
+  | FIRST_CHILD of StateSet.t
+  | NEXT_SIBLING of StateSet.t
+  | FIRST_ELEMENT of StateSet.t
+  | NEXT_ELEMENT of StateSet.t
+  | TAGGED_DESCENDANT of StateSet.t * Tag.t
+  | TAGGED_FOLLOWING of StateSet.t * Tag.t
+  | SELECT_DESCENDANT of StateSet.t * Ptset.Int.t * Tree.unordered_set
+  | SELECT_FOLLOWING of StateSet.t * Ptset.Int.t * Tree.unordered_set
+  | TAGGED_CHILD of StateSet.t * Tag.t
+  | TAGGED_FOLLOWING_SIBLING of StateSet.t * Tag.t
+  | SELECT_CHILD of StateSet.t * Ptset.Int.t * Tree.unordered_set
+  | SELECT_FOLLOWING_SIBLING of StateSet.t * Ptset.Int.t * Tree.unordered_set
+  | TAGGED_SUBTREE of StateSet.t * Tag.t
+  | ELEMENT_SUBTREE of StateSet.t
+
+val jump_stat_init : unit -> unit
+val jump_stat : jump -> unit
+
+val print_jump : Format.formatter -> jump -> unit
+
+val jump_stat_summary : Format.formatter -> unit
+
+type opcode =
+    CACHE of unit
+  | RETURN of unit
+  | LEFT of Translist.t * jump
+  | RIGHT of Translist.t * jump
+  | BOTH of Translist.t * jump * jump
+
+type t = opcode Cache.Lvl2.t
+
+val dummy : opcode
+
+val create : unit -> t
+
+val stats : Format.formatter -> t -> unit
+
+val find : t -> int -> StateSet.Node.t -> opcode
+
+val add : t -> int -> StateSet.Node.t -> opcode -> unit
+
+val compile : t -> Ata.t -> Tree.t -> TagSet.elt -> StateSet.t -> opcode
+
+val get_transitions : opcode -> Translist.t