Aquefir One Library: Array Construct

Copyright © 2019-2020 Aquefir
Released under BSD-2-Clause.

§1. #UNI_ARRAY
---------------

Type-like shorthand for array structs of a given type. Be sure to declare it
using one of the DECL_* macros first.

Variables of this type have two properties, accessible by dot notation:
 1. val: the array itself, as a pointer to the given type
 2. sz: the size of the array, expressed as the number of elements allocated

§2. #UNI_ARRAYP
----------------

Like §1, but for arrays of pointer types. Necessary for token pasting to work.

§3. #UNI_DECL_ARR{_S,_P,_SP,}
------------------

Declare an array type of another type, in the type namespace (no prefixes). If
the ‘_S’ suffix is used, prepend a ‘struct’ keyword for the type. If the ‘_P’
suffix is used, make it a pointer to the type name. If ‘_SP’ is appended, make
it a pointer to the type and also prepend the ‘struct’ keyword. These variants
are needed to prevent token pasting from being broken by asterisks and spaces.
It is possible to use typedefs instead, but this choice is left up to the API
user as their types will need to be declared as such.

§4. #UNI_DECL_ARR_S
--------------------

Declare an array type of another struct type, in the struct namespace.
