X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=src%2Fhcons.mli;h=3e80a036c886e6034a70cb8142882ac71bbf33a3;hp=af5618e3be018d33a5aba3fc624dcbe4be46fe5c;hb=41dd1fed04cabad212f10fce3484545f6e9d9444;hpb=cba2938d929fd5119b1491686ddc224d5af618c6 diff --git a/src/hcons.mli b/src/hcons.mli index af5618e..3e80a03 100644 --- a/src/hcons.mli +++ b/src/hcons.mli @@ -15,61 +15,20 @@ (** Implementation of generic hashconsing. *) -module type Abstract = - sig - type data - (** The type of the data to be hashconsed *) - - type t - (** The type of hashconsed data *) - - val make : data -> t - (** [make v] internalizes the value [v], making it an hashconsed - value. - *) - - val node : t -> data - (** [node h] extract the original data from its hashconsed value - *) - - val hash : t -> int - (** [hash h] returns a hash of [h], such that for every [h1] and - [h2], [equal h1 h2] implies [hash h1 = hash h2]. - *) - - val uid : t -> Uid.t - (** [uid h] returns a unique identifier *) - val equal : t -> t -> bool - (** Equality between hashconsed values. Equivalent to [==] *) - - val init : unit -> unit - (** Initializes the internal storage. Any previously hashconsed - element is discarded. *) - - end -(** Abstract signature of a module implementing an hashconsed datatype *) - -module type S = -sig - type data - type t = private { id : Uid.t; - key : int; - node : data } - include Abstract with type data := data and type t := t -end +include module type of Hcons_sig (** Output signature of the functor {!Hcons.Make} *) -module Make (H : Sigs.HashedType) : S with type data = H.t +module Make (H : Common_sig.HashedType) : S with type data = H.t (** Functor building an implementation of hashconsed values for a given - implementation of {!Sigs.HashedType}. Hashconsed values are + implementation of {!Common_sig.HashedType}. Hashconsed values are persistent: the are kept in memory even if no external reference remain. Calling [init()] explicitely will reclaim the space. *) -module Weak (H : Sigs.HashedType) : S with type data = H.t +module Weak (H : Common_sig.HashedType) : S with type data = H.t (** Functor building an implementation of hashconsed values for a given - implementation of {!Sigs.HashedType}. Hashconsed values have a + implementation of {!Common_sig.HashedType}. Hashconsed values have a weak semantics: they may be reclaimed as soon as no external reference to them exists. The space may still be reclaimed explicitely by calling [init].