X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=src%2Fhcons.mli;fp=src%2Fhcons.mli;h=6b11bce6364aaba1b5aae6a5b5a3b665baeb3b94;hp=af5618e3be018d33a5aba3fc624dcbe4be46fe5c;hb=f5d90fb688bc1a9b29815fc33c369856e6c51a67;hpb=269daee8bbc5b86adeb9b23049c378e49cc82d2e diff --git a/src/hcons.mli b/src/hcons.mli index af5618e..6b11bce 100644 --- a/src/hcons.mli +++ b/src/hcons.mli @@ -15,59 +15,18 @@ (** 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 Sigs.HCONS (** Output signature of the functor {!Hcons.Make} *) -module Make (H : Sigs.HashedType) : S with type data = H.t +module Make (H : Sigs.AUX.HashedType) : S with type data = H.t (** Functor building an implementation of hashconsed values for a given implementation of {!Sigs.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 : Sigs.AUX.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 weak semantics: they may be reclaimed as soon as no external