X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=src%2Futils%2Fhcons.mli;fp=src%2Futils%2Fhcons.mli;h=c1e8c004a11c4c092c8484231cbfdf1696c16554;hp=0000000000000000000000000000000000000000;hb=30bc0bb1291426e5e26eb2dee1ffc41e4c246349;hpb=d9c0e4863807eaf472e875a4bad35cfefe985c95 diff --git a/src/utils/hcons.mli b/src/utils/hcons.mli new file mode 100644 index 0000000..c1e8c00 --- /dev/null +++ b/src/utils/hcons.mli @@ -0,0 +1,45 @@ +(***********************************************************************) +(* *) +(* TAToo *) +(* *) +(* Kim Nguyen, LRI UMR8623 *) +(* Université Paris-Sud & CNRS *) +(* *) +(* Copyright 2010-2012 Université Paris-Sud and Centre National de la *) +(* Recherche Scientifique. All rights reserved. This file is *) +(* distributed under the terms of the GNU Lesser General Public *) +(* License, with the special exception on linking described in file *) +(* ../LICENSE. *) +(* *) +(***********************************************************************) + +(* + Time-stamp: +*) + +(** Implementation of generic hashconsing. *) + +include module type of Sigs.HCONS + +(** Output signature of the functor {!Hcons.Make} *) + +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.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 + reference to them exists. The space may still be reclaimed + explicitely by calling [init]. +*) + +module PosInt : Abstract with type data = int and type t = int +(** Compact implementation of hashconsed positive integer that + avoids boxing. [PosInt.make v] raises [Invalid_argument] if + [ v < 0 ] +*)