Templat (format file X, pengodean teks)
Templat menentukan bagaimana aliran data ditafsirkan - data di modulasi oleh definisi templat. Bagian ini membahas aspek templat berikut dan menyediakan contoh templat.
Ada satu templat khusus - templat header. Disarankan agar setiap aplikasi menentukan templat header dan menggunakannya untuk menentukan informasi khusus aplikasi, seperti informasi versi. Jika ada, header ini dibaca oleh API format file .x. Jika anggota bendera tersedia, itu digunakan untuk menentukan bagaimana data berikut ditafsirkan. Anggota bendera, jika ditentukan, harus berupa DWORD. Satu bit saat ini ditentukan - bit 0. Jika bit ini jelas, data berikut dalam file adalah biner. Jika diatur, data berikut adalah teks. Anda dapat menggunakan beberapa objek data header untuk beralih antara biner dan teks dalam file.
Formulir Templat, Nama, dan UUID
Templat memiliki formulir berikut.
template <template-name> {
<UUID>
<member 1>;
...
<member n>;
[restrictions]
}
Nama templat adalah nama alfanumerik yang dapat menyertakan karakter garis bawah (_). Ini tidak boleh dimulai dengan digit. UUID adalah pengidentifikasi unik universal yang diformat ke standar Lingkungan Komputasi Terdistribusi Open Software Foundation dan diapit oleh kurung sudut (<>). Misalnya: <3D82AB43-62DA-11cf-AB39-0020AF71E433>.
Anggota Templat
Anggota templat terdiri dari jenis data bernama diikuti dengan nama opsional atau array dari jenis data bernama. Jenis data primitif yang valid ditentukan dalam tabel berikut.
Jenis | Ukuran |
---|---|
WORD | 16 bit |
DWORD | 32 bit |
FLOAT | IEEE float |
DOUBLE | 64 bit |
CHAR | 8 bit |
UCHAR | 8 bit |
BYTE | 8 bit |
STRING | String yang dihentikan NULL |
CSTRING | String C yang diformat (tidak didukung) |
UNICODE | Untai (tidak didukung) Unicode |
Jenis data tambahan yang ditentukan oleh templat yang ditemui sebelumnya di aliran data juga dapat direferensikan dalam definisi templat. Tidak ada referensi penerusan yang diperbolehkan.
Setiap jenis data yang valid dapat dinyatakan sebagai array dalam definisi templat. Sintaks dasar diperlihatkan dalam contoh berikut.
array <data-type> <name>[<dimension-size>];
<ukuran> dimensi dapat berupa bilangan bulat atau referensi bernama ke anggota templat lain yang nilainya kemudian diganti. Array dapat berupa n-dimensi, di mana n ditentukan oleh jumlah tanda kurung siku yang dipasangkan di belakang pernyataan, seperti dalam contoh berikut.
array DWORD FixedHerd[24];
array DWORD Herd[nCows];
array FLOAT Matrix4x4[4][4];
Pembatasan Templat
Templat dapat dibuka, ditutup, atau dibatasi. Pembatasan ini menentukan jenis data mana yang dapat muncul dalam hierarki langsung objek data yang ditentukan oleh templat. Templat terbuka tidak memiliki batasan, templat tertutup menolak semua jenis data, dan templat terbatas memungkinkan daftar tipe data bernama.
Sintaks untuk menunjukkan templat terbuka adalah tiga titik yang diapit oleh tanda kurung siku.
[ ... ]
Daftar jenis data bernama yang dipisahkan koma diikuti secara opsional oleh UUID mereka yang diapit oleh tanda kurung siku menunjukkan templat terbatas.
[ { data-type [ UUID ] , } ... ]
Tidak adanya salah satu hal di atas menunjukkan templat tertutup.
Contoh Templat
Berikut ini memperlihatkan contoh templat.
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
}
Topik terkait