Members

Template members consist of a named data type followed by an optional name or an array of a named data type. Valid primitive data types are

Type Size
WORD 16 bits
DWORD 32 bits
FLOAT IEEE float
DOUBLE 64 bits
CHAR 8 bits
UCHAR 8 bits
BYTE 8 bits
STRING NULL terminated string
CSTRING Formatted C-string (currently unsupported)
UNICODE UNICODE string (currently unsupported)

Additional data types defined by templates encountered earlier in the data stream may also be referenced within a template definition. No forward references are allowed.

Any valid data type can be expressed as an array in the template definition. The basic syntax is as follows

array <data-type> <name>[<dimension-size>];

Where <dimension-size> can either be an integer or a named reference to another template member whose value is then substituted.

Arrays may be n-dimensional where n is determined by the number of paired square brackets trailing the statement. For example

array DWORD FixedHerd[24];

array DWORD Herd[nCows];

array FLOAT Matrix4x4[4][4];