mirror of
https://github.com/c-cube/sidekick.git
synced 2026-01-24 18:36:43 -05:00
29 lines
671 B
OCaml
29 lines
671 B
OCaml
(** {1 A backtrackable hashtable} *)
|
|
|
|
module type S = sig
|
|
type key
|
|
type 'a t
|
|
|
|
val create : ?size:int -> unit -> 'a t
|
|
|
|
val find : 'a t -> key -> 'a
|
|
(** @raise Not_found if the key is not present *)
|
|
|
|
val get : 'a t -> key -> 'a option
|
|
val mem : _ t -> key -> bool
|
|
val length : _ t -> int
|
|
val iter : (key -> 'a -> unit) -> 'a t -> unit
|
|
val to_iter : 'a t -> (key * 'a) Iter.t
|
|
val add : 'a t -> key -> 'a -> unit
|
|
val remove : _ t -> key -> unit
|
|
val push_level : _ t -> unit
|
|
val pop_levels : _ t -> int -> unit
|
|
end
|
|
|
|
module type ARG = sig
|
|
type t
|
|
val equal : t -> t -> bool
|
|
val hash : t -> int
|
|
end
|
|
|
|
module Make(A : ARG) : S with type key = A.t
|