sig
module type S =
sig
type event
type +'a t
val empty : 'a Zed_input.S.t
val add :
Zed_input.S.event list -> 'a -> 'a Zed_input.S.t -> 'a Zed_input.S.t
val remove :
Zed_input.S.event list -> 'a Zed_input.S.t -> 'a Zed_input.S.t
val fold :
(Zed_input.S.event list -> 'a -> 'b -> 'b) ->
'a Zed_input.S.t -> 'b -> 'b
val bindings : 'a Zed_input.S.t -> (Zed_input.S.event list * 'a) list
type 'a resolver
type 'a pack
val pack : ('a -> 'b) -> 'a Zed_input.S.t -> 'b Zed_input.S.pack
val resolver : 'a Zed_input.S.pack list -> 'a Zed_input.S.resolver
type 'a result =
Accepted of 'a
| Continue of 'a Zed_input.S.resolver
| Rejected
val resolve :
Zed_input.S.event -> 'a Zed_input.S.resolver -> 'a Zed_input.S.result
end
module Make :
functor (Event : Map.OrderedType) ->
sig
type event = Event.t
type +'a t
val empty : 'a t
val add : event list -> 'a -> 'a t -> 'a t
val remove : event list -> 'a t -> 'a t
val fold : (event list -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val bindings : 'a t -> (event list * 'a) list
type 'a resolver
type 'a pack
val pack : ('a -> 'b) -> 'a t -> 'b pack
val resolver : 'a pack list -> 'a resolver
type 'a result = Accepted of 'a | Continue of 'a resolver | Rejected
val resolve : event -> 'a resolver -> 'a result
end
end