While ZScript does not have proper user-facing generics, Array
is one such
type that does have a (hard-coded) type parameter. It mirrors the internal
TArray
type exactly. Note that all Object types monomorphize to the same
implementation and structures cannot be stored in arrays due to no polymorphic
variant of TArray
existing in the engine.
struct Array<Type>
{
uint Max() const;
uint Size() const;
void Append(array<Type> other);
void Copy(array<Type> other);
void Move(array<Type> other);
void Clear();
void Delete(uint index, int deletecount = 1);
bool Pop();
uint Find(Type item) const;
void Grow(uint amount);
void Insert(uint index, Type item);
uint Push(Type item);
uint Reserve(uint amount);
void Resize(uint amount);
void ShrinkToFit();
}
Returns the amount of allocated objects in the array.
Returns the amount of constructed objects in the array.
Clears out the entire array, possibly destroying all objects in it.
Removes count
objects starting at index
, possibly destroying them. Moves
objects after index + count
to the left.
Removes the last item in the array, possibly destroying it. Returns false
if
there are no items in the array to begin with.
Value-copies another array's contents and places them into this array at the end.
Value-copies another array's contents into this array. The contents of other
are preserved. This operation can be extremely taxing in some cases.
Moves another array's contents into this array. The contents of other
are
left indeterminate and shall not be used. This operation is extremely fast
as it only copies pointers but must be used carefully to avoid error.
Finds the index of item
in the array, or Size
if it couldn't be found.
Ensures the array can hold at least amount
new members, growing the allocated
object amount if necessary.
Inserts item
at index
. Moves objects after index
to the right.
Places item
at the end of the array, calling Grow
if necessary.
Adds amount
new empty-constructed objects at the end of the array, increasing
Size
and calling Grow
if necessary. Value types are initialized to zero and
reference types to null
.
Adds or removes objects based on amount
. If it is less than Size
then
objects are destroyed, if it is more then objects are empty-constructed. New
objects follow the same initialization rules as Reserve
.
Shrinks Max
to Size
. Does not mutate any objects in the array.