Defunctorize the ResJIT module.
[SXSI/xpathcomp.git] / src / runtime.mli
index eec5980..fd36d23 100644 (file)
@@ -2,7 +2,16 @@ module type S = sig
   type result_set
   val top_down_run : Ata.t -> Tree.t -> Tree.node -> result_set
   val bottom_up_run : Ata.t -> Tree.t -> Compile.text_query * string -> result_set
-  val grammar_run : Ata.t -> Grammar.t -> unit -> result_set
+  val grammar_run : Ata.t -> Grammar2.t -> unit -> result_set
 end
 
 module Make (U : ResJIT.S) : S with type result_set = U.NS.t
+
+type 'a result_ops = {
+  empty : 'a;
+  subtree_tags : Tree.t -> Tree.node -> Tag.t -> 'a;
+  subtree_elements : Tree.t -> Tree.node -> 'a;
+  exec : 'a array -> 'a array -> 'a array -> Tree.node -> ResJIT.code -> unit;
+}
+
+val top_down_run : 'a result_ops -> Ata.t -> Tree.t -> Tree.node -> 'a