Up

module Hashtbl2

: sig
#
module type Key = sig
#
type t
#
val hash : t -> int
#
val sexp_of_t : t -> Sexplib.Sexp.t
#
val compare : t -> t -> int
end
#
type ('key1, 'key2, 'data) t
include Core.Std.Invariant.S3 with type ('a, 'b, 'c) t := ('a, 'b, 'c) t
#
val clear : (_, _, _) t -> unit
#
val add_exn : ('key1, 'key2, 'data) t -> 'key1 -> 'key2 -> 'data -> unit
#
val set : ('key1, 'key2, 'data) t -> 'key1 -> 'key2 -> 'data -> unit
#
val remove_exn : ('key1, 'key2, 'data) t -> 'key1 -> 'key2 -> unit
#
val remove_all1 : ('key1, 'key2, 'data) t -> 'key1 -> unit
#
val find : ('key1, 'key2, 'data) t -> 'key1 -> 'key2 -> 'data option
#
val find1 : ('key1, 'key2, 'data) t -> 'key1 -> ('key2, 'data) Core.Std.Hashtbl.t option
#
val mem1 : ('key1, 'key2, 'data) t -> 'key1 -> bool

mem1 t key1 is true iff \exists key2 s.t. find t key1 key2 is not None *

#
val iter : ('key1, 'key2, 'data) t -> f:('key1 -> 'key2 -> 'data -> unit) -> unit
#
val iter_key2 : ('key1, 'key2, 'data) t -> 'key1 -> f:('key2 -> 'data -> unit) -> unit

iter_key2 t key1 ~f is a no-op unless mem1 t key1 *

#
module Make : functor (Key1 : Key) -> functor (Key2 : Key) -> sig
include sig
#
type ('a0, 'a1, 'a2) __pa_nonrec_0 = ('a0, 'a1, 'a2) t
#
type 'data t = (Key1.t, Key2.t, 'data) __pa_nonrec_0
end
with type ('a0, 'a1, 'a2) __pa_nonrec_0 := ('a0, 'a1, 'a2) t
include Core.Std.Equal.S1 with type 'a t := 'a t
#
val create : unit -> 'data t
#
val sexp_of_t : ('data -> Sexplib.Sexp.t) -> 'data t -> Sexplib.Sexp.t
end
#
val sexp_of_t : ('key1 -> Sexplib.Sexp.t) -> ('key2 -> Sexplib.Sexp.t) -> ('data -> Sexplib.Sexp.t) -> ('key1, 'key2, 'data) t -> Sexplib.Sexp.t
end