Arrays which grow in size as needed. These arrays have an actual size (number of elements) and a maximum size (number of elements which can be inserted into the array without exceeding ).
List of Import References :
See Array
See BOOL
See Bitset
See DENOTATION
See Nat
See Option
SIGNATURE DArray [data]
$Date: 2010-09-30 18:24:17 +0200 (Do, 30. Sep 2010) $ ($Revision: 616 $)
Parameter
SORT data
Imports
IMPORT Nat ONLY nat Option[data] ONLY option
SORT dArray
init (n,d) === init (n,\\ _ .d)
: generate dArray of size
n
and initial data f(i)
for i = 0 .. n-1
.
init(0, f)
is the empty dArray. The maximum size is the double
initial size
FUN init: nat**data->dArray init: nat**(nat->data)->dArray
As above, butwih additional higher-order parameter to set the maximum size explicitly
FUN init: nat -> nat ** data -> dArray init: nat -> nat ** (nat -> data) -> dArray
the empty dArray (maximum size is 16) or explicitly given
FUN empty: dArray FUN empty: nat -> dArray
upd (i,d,a) === (a,i) := d
:
update i
-th element of dArray a
with value d
where i
ranges from 0
upto #(a)
. dArray is
extended, as needed.
FUN upd : nat**data**dArray->dArray := : dArray**nat**data->dArray
upd (i,f,a)
: update i
-th element of dArray a
with value f(a!i)
where i
ranges from 0
upto
#(a)
.
FUN upd : nat**(data->data)**dArray->dArray
swap(a,i,j)
: swap elements i
and j
of dArray
a
; undefined, if either i >= #(a)
or j >= #(a)
FUN swap: dArray**nat**nat->dArray
extend(a,n,d) === extend(a,n,\\ _ . d)
: extend dArray by
n
entrys at the end. Informally: extend(a,n,f) == a ++
init(n,f)
, but maximum size is only extended, if necessary (in
contrast to ++
).
FUN extend: dArray ** nat ** data -> dArray extend: dArray ** nat ** (nat -> data) -> dArray
a ! i
: select i
-th element of dArray a
, where
i
ranges from 0
upto #(a)-1
.
FUN ! : dArray**nat->data FUN !? : dArray ** nat -> option[data]
#(a)
: (actual size of dArray a
.
FUN # : dArray->nat
is dArray empty?
FUN empty? : dArray -> bool
guaranteed free entry
FUN new: dArray -> nat
is Array defined at position
FUN def? : nat ** dArray -> bool
The inner nondynamic array
IMPORT Bitset ONLY set Array[data] ONLY array TYPE dArray == abs(rep: array[data], occ: set, new: nat)
next node: DArrayConv,
prev node: Subsystem Dynamic Arrays,
up to node: Subsystem Dynamic Arrays