module Weak = struct ... end
Functions |
create
: int -> 'b t |
Weak.create n
returns a new weak array of length n
.
All the pointers are initially empty. Raise Invalid_argument
if n
is negative or greater than Sys.max_array_length-1
.
length
: 'c t -> int |
Weak.length ar
returns the length (number of elements) of
ar
.
set
: 'd t -> int -> 'd option -> unit |
Weak.set ar n (Some el)
sets the n
th cell of ar
to be a
(full) pointer to el
; Weak.set ar n None
sets the n
th
cell of ar
to empty.
Raise Invalid_argument "Weak.set"
if n
is not in the range
0 to Weak.length a - 1
.
get
: 'e t -> int -> 'e option |
Weak.get ar n
returns None if the n
th cell of ar
is
empty, Some x
(where x
is the value) if it is full.
Raise Invalid_argument "Weak.get"
if n
is not in the range
0 to Weak.length a - 1
.
get_copy
: 'f t -> int -> 'f option |
Weak.get_copy ar n
returns None if the n
th cell of ar
is
empty, Some x
(where x
is a (shallow) copy of the value) if
it is full.
In addition to pitfalls with mutable values, the interesting
difference with get
is that get_copy
does not prevent
the incremental GC from erasing the value in its current cycle
(get
may delay the erasure to the next GC cycle).
Raise Invalid_argument "Weak.get"
if n
is not in the range
0 to Weak.length a - 1
.
check
: 'g t -> int -> bool |
Weak.check ar n
returns true
if the n
th cell of ar
is
full, false
if it is empty. Note that even if Weak.check ar n
returns true
, a subsequent Weak.get ar n
can return None
.
fill
: 'h t -> pos:int -> len:int -> 'h option -> unit |
Weak.fill ar ofs len el
sets to el
all pointers of ar
from
ofs
to ofs + len - 1
. Raise Invalid_argument "Weak.fill"
if ofs
and len
do not designate a valid subarray of a
.
blit
: src:'i t -> |
Weak.blit ar1 off1 ar2 off2 len
copies len
weak pointers
from ar1
(starting at off1
) to ar2
(starting at off2
).
It works correctly even if ar1
and ar2
are the same.
Raise Invalid_argument "Weak.blit"
if off1
and len
do
not designate a valid subarray of ar1
, or if off2
and len
do not designate a valid subarray of ar2
.