`sig
type 'a hobj = private { obj : 'a; tag : int; hcode : int; }
type 'a t = 'a BatHashcons.hobj
val compare : 'a BatHashcons.hobj -> 'a BatHashcons.hobj -> int
module type Table =
sig
type key
type t
val create : int -> BatHashcons.Table.t
val clear : BatHashcons.Table.t -> unit
val hashcons :
BatHashcons.Table.t ->
BatHashcons.Table.key -> BatHashcons.Table.key BatHashcons.hobj
val iter :
(BatHashcons.Table.key BatHashcons.hobj -> unit) ->
BatHashcons.Table.t -> unit
val fold :
(BatHashcons.Table.key BatHashcons.hobj -> 'a -> 'a) ->
BatHashcons.Table.t -> 'a -> 'a
val count : BatHashcons.Table.t -> int
end
module MakeTable :
functor (HT : BatHashtbl.HashedType) ->
sig
type key = HT.t
type t
val create : int -> t
val clear : t -> unit
val hashcons : t -> key -> key hobj
val iter : (key hobj -> unit) -> t -> unit
val fold : (key hobj -> 'a -> 'a) -> t -> 'a -> 'a
val count : t -> int
end
module H :
sig
val hc0_ : int -> int
val hc0 : 'a BatHashcons.hobj -> int
val hc1_ : int -> int -> int
val hc1 : 'a BatHashcons.hobj -> int -> int
end
end`