1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
module type S = sig
type t
val hash : t -> int
val equal : t -> t -> bool
val compare : t -> t -> Ordering.t
val to_dyn : t -> Dyn.t
val to_string : t -> string
val make : string -> t
(** Like [make] except it returns [None] if the string hasn't been registered
with [make] previously. *)
val get : string -> t option
(** Return the list of all existing [t]s. *)
val all : unit -> t list
module Set : sig
include Set.S with type elt = t
val to_dyn : t -> Dyn.t
val make : string list -> t
end
module Map : Map.S with type key = t
(** Same as a hash table, but optimized for the case where we are using one
entry for every possible [t] *)
module Table : sig
type key = t
type 'a t
val create : default_value:'a -> 'a t
val get : 'a t -> key -> 'a
val set : 'a t -> key:key -> data:'a -> unit
end
with type key := t
end
|