pub struct Gff {
pub header: Header,
pub structs: Vec<Struct>,
pub fields: Vec<Field>,
pub labels: Vec<Label>,
pub field_data: Vec<u8>,
pub field_indices: Vec<u32>,
pub list_indices: Vec<u32>,
}Expand description
Описание всей структуры GFF файла, как она хранится в GFF файле
Fields§
§header: HeaderЗаголовок файла, содержащий метаинформацию о нем: тип содержимого, версию структуры, количество и местоположение структур в файле
structs: Vec<Struct>Список структур внутри GFF файла. Структура – группирующий элемент, состоящий из полей, помеченных метками
fields: Vec<Field>Список полей из всех структур GFF файла. Каждое поле ссылается на метку и данные, а также имеет некоторый тип
labels: Vec<Label>Список меток из всех полей GFF файла. В корректном GFF файле каждая метка должна быть уникальна, однако неуникальность не является фатальной ошибкой – просто неэффективным расходованием места
field_data: Vec<u8>Данные для значений полей, которые не влезают в 4 байта и не могут храниться в структуре поля
field_indices: Vec<u32>Плоский массив, содержащий индексы полей, которые входят в каждую структуру, содержащую
более одного поля. Например, при наличии двух структур, первая из которых ссылается на поля
0 и 1, а вторая на поля 2, 3 и 4, массив может содержать [0, 1, 2, 3, 4] или [2, 3, 4, 0, 1],
в зависимости от того, в каком порядке будут записаны структуры
list_indices: Vec<u32>Плоский массив индексов структуры, которые входят в списки. Каждый элемент массива описывает
или индекс структуры, или количество следующих индексов в массиве, которые относятся к одному
списку. Например, если файл содержит два поля-списка, первое из которых состоит из структур
1 и 3, а второй – из структур 0, 2 и 4, то массив может содержать [2, 1, 3, 3, 0, 2, 4]
или [3, 0, 2, 4, 2, 1, 3] в зависимости от порядка записи списков. Каждый подсписок начинается
с числа, указывающего его размер: в данном примере [2| 1, 3] и [3| 0, 2, 4]