expand Array documentation

pull/1/head
an 2019-02-02 21:07:05 -05:00
parent 8ffeb2acfc
commit c755814632
1 changed files with 48 additions and 36 deletions

View File

@ -1,40 +1,66 @@
# Array # Array
While ZScript does not have proper user-facing generics, `Array` is one such While ZScript does not have proper user-facing generics, `Array` is one such
type that does have a type parameter. It mirrors the internal `TArray` type. 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> struct Array<Type>
{ {
void Clear(); uint Max() const;
uint Size() const;
void Copy(array<Type> other); void Copy(array<Type> other);
void Move(array<Type> other);
void Clear();
void Delete(uint index, int deletecount = 1); void Delete(uint index, int deletecount = 1);
bool Pop();
uint Find(Type item) const; uint Find(Type item) const;
void Grow(uint amount); void Grow(uint amount);
void Insert(uint index, Type item); void Insert(uint index, Type item);
uint Max() const;
void Move(array<Type> other);
bool Pop();
uint Push(Type item); uint Push(Type item);
uint Reserve(uint amount); uint Reserve(uint amount);
void Resize(uint amount); void Resize(uint amount);
void ShrinkToFit(); void ShrinkToFit();
uint Size() const;
} }
``` ```
- `Max`
Returns the amount of allocated objects in the array.
- `Size`
Returns the amount of constructed objects in the array.
- `Clear` - `Clear`
Clears out the entire array. Clears out the entire array, possibly destroying all objects in it.
- `Copy`
Copies another array's contents into this array.
- `Delete` - `Delete`
Deletes `count` object(s) at `index`. Moves objects after them into their Removes `count` objects starting at `index`, possibly destroying them. Moves
place. objects after `index + count` to the left.
- `Pop`
Removes the last item in the array, possibly destroying it. Returns `false`
if there are no items in the array to begin with.
- `Copy`
Value-copies another array's contents into this array. The contents of
`other` are preserved. This operation can be extremely taxing in some cases.
- `Move`
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.
- `Find` - `Find`
@ -42,45 +68,31 @@ struct Array<Type>
- `Grow` - `Grow`
Ensures the array can hold at least `amount` new members. Ensures the array can hold at least `amount` new members, growing the
allocated object amount if necessary.
- `Insert` - `Insert`
Inserts `item` at `index`. Moves objects after `index` to the right. Inserts `item` at `index`. Moves objects after `index` to the right.
- `Max`
Returns the allocated size of the array.
- `Move`
Moves another array's contents into this array.
- `Pop`
Deletes the last item in the array. Returns `false` if there are no items in
the array.
- `Push` - `Push`
Places `item` at the end of the array, calling `Grow` if necessary. Places `item` at the end of the array, calling `Grow` if necessary.
- `Reserve` - `Reserve`
Adds `amount` new entries at the end of the array, increasing `Size`. Calls Adds `amount` new empty-constructed objects at the end of the array,
`Grow` if necessary. increasing `Size` and calling `Grow` if necessary. Value types are
initialized to zero and reference types to `null`.
- `Resize` - `Resize`
Changes the allocated array size to `amount`. Deletes members if `amount` is Adds or removes objects based on `amount`. If it is less than `Size` then
smaller than `Size`. objects are destroyed, if it is more then objects are empty-constructed. New
objects follow the same initialization rules as `Reserve`.
- `ShrinkToFit` - `ShrinkToFit`
Shrinks the allocated array size `Max` to `Size`. Shrinks `Max` to `Size`. Does not mutate any objects in the array.
- `Size`
Returns the amount of objects in the array.
<!-- EOF --> <!-- EOF -->