Examples

template Mesh {

<3D82AB44-62DA-11cf-AB39-0020AF71E433>

DWORD nVertices;

array Vector vertices[nVertices];

DWORD nFaces;

array MeshFace faces[nFaces];

[ ... ] // An open template

}

template Vector {

<3D82AB5E-62DA-11cf-AB39-0020AF71E433>

FLOAT x;

FLOAT y;

FLOAT z;

} // A closed template

template FileSystem {

<UUID>

STRING name;

[ Directory <UUID>, File <UUID> ] // A restricted template

}

There is one special template - the Header template. It is recommended that each application define such a template and use it to define application specific information such as version information. If present, this header will be read by the File Format API and if a flags member is available, it will be used to determine how the following data is interpreted. The flags member, if defined, should be a DWORD. One bit is currently defined - bit 0. If this is clear, the following data in the file is binary, if set, the following data is text. Multiple header data objects can be used to switch between binary and text during the file.