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];