sig
type ('key, 'data) t = ('key, 'data) Bounded_int_table.t
val invariant : ('a, 'b) t -> unit
val create :
?sexp_of_key:('key -> Std_internal.Sexp.t) ->
num_keys:int -> key_to_int:('key -> int) -> unit -> ('key, 'data) t
val data : ('a, 'data) t -> 'data list
val find : ('key, 'data) t -> 'key -> 'data option
val find_exn : ('key, 'data) t -> 'key -> 'data
val find_or_add :
('key, 'data) t -> 'key -> default:(unit -> 'data) -> 'data
val fold :
('key, 'data) t ->
init:'accum -> f:(key:'key -> data:'data -> 'accum -> 'accum) -> 'accum
val iter : ('key, 'data) t -> f:(key:'key -> data:'data -> unit) -> unit
val iter_vals : ('a, 'data) t -> f:('data -> unit) -> unit
val keys : ('key, 'a) t -> 'key list
val length : ('a, 'b) t -> int
val mem : ('key, 'a) t -> 'key -> bool
val remove : ('key, 'a) t -> 'key -> unit
val set : ('a, 'b) t -> key:'a -> data:'b -> unit
val add : ('a, 'b) t -> key:'a -> data:'b -> [ `Duplicate of 'b | `Ok ]
val add_exn : ('a, 'b) t -> key:'a -> data:'b -> unit
val to_alist : ('key, 'data) t -> ('key * 'data) list
val debug : bool ref
val sexp_of_t :
('key -> Sexplib.Sexp.t) ->
('data -> Sexplib.Sexp.t) -> ('key, 'data) t -> Sexplib.Sexp.t
val ounit_tests : unit -> OUnit.test
end