pub enum Token {
RootBegin {
tag: Tag,
count: u32,
},
RootEnd,
Label(LabelIndex),
StructBegin {
tag: Tag,
count: u32,
},
StructEnd,
ListBegin(u32),
ListEnd,
ItemBegin {
tag: Tag,
count: u32,
index: u32,
},
ItemEnd,
Value(SimpleValueRef),
}
Expand description
Возможные виды событий, которые могут возникнуть при чтении GFF файла. Отражают появление в потоке значений из файла и структурных единиц (списков, структур, …)
Variants
RootBegin
Fields
tag: Tag
Уникальный (по задумке) идентификатор типа структуры в файле. На самом деле движок, похоже, не проверяет уникальность этих значений
count: u32
Количество полей в данной структуре
Событие о начале разбора GFF-читателем структуры с индексом 0 в GFF файле.
Возникает после чтения заголовка файла, и позиционирования на начало первой (с индексом 0) структуры, но перед ее чтением. Следующим событием может быть:
RootEnd
: если корневая структура не содержит полейStructBegin
: если первым полем корневой структуры является значение с типомStruct
ListBegin
: если первым полем корневой структуры является значение с типомList
Value
: если первым полем корневой структуры является значение с любым другим типом
RootEnd
Событие об окончании разбора GFF-читателем структуры с индексом 0 в GFF файле, что сигнализирует о завершении файла.
Это последнее событие при чтении файла, после него следующих событий не будет
Label(LabelIndex)
Событие о начале разбора поля в структуре. После данного события возникают события:
StructBegin
: если полем структуры является значение с типомStruct
ListBegin
: если полем структуры является значение с типомList
Value
: если полем структуры является значение с любым другим типом
StructBegin
Fields
tag: Tag
Уникальный (по задумке) идентификатор типа структуры в файле. На самом деле движок, похоже, не проверяет уникальность этих значений
count: u32
Количество полей в данной структуре
Событие о начале разбора GFF-читателем любой структуры, кроме самой первой
(для нее используется событие RootBegin
).
Возникает после позиционирования на начало любой структуры, кроме первой (с индексом 0), но перед ее чтением. Следующим событием может быть:
StructBegin
: если первым полем структуры является значение с типомStruct
ListBegin
: если первым полем структуры является значение с типомList
Value
: если первым полем структуры является значение с любым другим типом
StructEnd
Событие об окончании разбора GFF-читателем любой структуры, кроме самой первой
(для нее используется событие FileEnd
)
ListBegin(u32)
Событие о начале разбора GFF-читателем списка объектов структуры. В параметре содержится количество записей в списке.
Список всегда содержит набор структур, поэтому разбор каждой записи предваряется
событием ItemBegin
и завершается событием ItemEnd
ListEnd
Событие об окончании разбора GFF-читателем списка объектов
ItemBegin
Fields
tag: Tag
Уникальный (по задумке) идентификатор типа структуры в файле. На самом деле движок, похоже, не проверяет уникальность этих значений
count: u32
Количество полей в данной структуре
index: u32
Номер элемента в списке
Событие о начале разбора GFF-читателем любой структуры внутри списка. В отличие от обычных, такие структуры не имеют метки.
Возникает после позиционирования на начало любой структуры списка. Следующим событием может быть:
ItemEnd
: если структура списка не содержит полейStructBegin
: если первым полем структуры списка является поле с типомStruct
ListBegin
: если первым полем структуры списка является поле с типомList
Value
: если первым полем структуры списка является поле с любым другим типом
ItemEnd
Событие об окончании разбора GFF-читателем любой структуры списка
Value(SimpleValueRef)
Поле, представляющее примитивное (не имеющее структуры) значение, хранимое в файле