範本 (X 檔案格式、文字編碼)
範本會定義如何解譯資料流程 - 資料會由範本定義調整。 本節討論範本的下列層面,並提供範例範本。
有一個特殊範本 - 標頭範本。 建議每個應用程式定義標頭範本,並使用它來定義應用程式特定資訊,例如版本資訊。 如果存在,此標頭會由 .x 檔案格式 API 讀取。 如果旗標成員可供使用,則會用來判斷如何解譯下列資料。 如果已定義,旗標成員應該是 DWORD。 目前已定義一個位 - 位 0。 如果這個位清楚,則檔案中的下列資料是二進位檔。 如果設定,則下列資料為文字。 您可以使用多個標頭資料物件,在檔案內的二進位和文字之間切換。
範本表單、名稱和 UUID
範本具有下列表單。
template <template-name> {
<UUID>
<member 1>;
...
<member n>;
[restrictions]
}
範本名稱是英數位元名稱,可包含底線字元 (_) 。 它不得以數位開頭。 UUID 是格式化為 Open Software Foundation 分散式運算環境標準的通用唯一識別碼,並以角括弧括住 (<>) 。 例如: < 3D82AB43-62DA-11cf-AB39-0020AF71E433 > 。
範本成員
範本成員是由具名資料類型所組成,後面接著選擇性的名稱或具名資料類型的陣列。 下表定義有效的基本資料類型。
類型 | 大小 |
---|---|
WORD | 16 位元 |
DWORD | 32 位元 |
FLOAT | IEEE float |
DOUBLE | 64 位元 |
CHAR | 8 位元 |
UCHAR | 8 位元 |
BYTE | 8 位元 |
STRING | Null 終止字串 |
CSTRING | 不支援格式化 C 字串 () |
UNICODE | 不支援 Unicode 字串 () |
您也可以在範本定義中參考稍早在資料流程中遇到的範本所定義的其他資料類型。 不允許轉送參考。
任何有效的資料類型都可以在範本定義中以陣列表示。 下列範例顯示基本語法。
array <data-type> <name>[<dimension-size>];
<維度大小 > 可以是整數或另一個樣板成員的具名參考,其值接著會被取代。 陣列可以是 n 維,其中 n 是由語句結尾的配對方括弧數目所決定,如下列範例所示。
array DWORD FixedHerd[24];
array DWORD Herd[nCows];
array FLOAT Matrix4x4[4][4];
範本限制
範本可以開啟、關閉或限制。 這些限制會決定哪些資料類型可以出現在範本所定義之資料物件的直接階層中。 開啟的範本沒有限制、關閉的範本會拒絕所有資料類型,而受限制的範本允許具名的資料類型清單。
表示開啟範本的語法是以方括弧括住的三個句點。
[ ... ]
以逗號分隔的具名資料類型清單,後面會選擇性地加上以方括弧括住的 UUID,表示受限制的範本。
[ { data-type [ UUID ] , } ... ]
上述任一項不存在表示已關閉的範本。
範本範例
以下顯示範例範本。
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
}
相關主題