module type Pool = sig
.. end
module type S = Pool_intf.S
include Pool_intf.Pool.S
This uses an Obj_array.t
to implement the pool. We expose that Pointer.t
is an
int
so that OCaml can avoid the write barrier, due to knowing that Pointer.t
isn't an OCaml pointer.
module Unsafe: sig
.. end
An Unsafe
pool is like an ordinary pool, except that the create
function does
not require an initial element.
module Debug: functor (
Pool
:
S
) ->
sig
.. end
Debug
builds a pool in which every function can run invariant
on its pool
argument(s) and/or print a debug message to stderr, as determined by
!check_invariant
and !show_messages
, which are initially both true
.
module Error_check:
Error_check
builds a pool that has additional error checking for pointers, in
particular to detect using a free
d pointer or multiply free
ing a pointer.