mirror of
https://git.mirrors.martin98.com/https://github.com/google/draco
synced 2025-04-21 05:09:52 +08:00
1.9 KiB
1.9 KiB
Metadata Decoder
DecodeMetadata()
void DecodeMetadata() {
ParseMetadataCount();
for (i = 0; i < num_att_metadata; ++i) {
ParseAttributeMetadataId(i);
DecodeMetadataElement(att_metadata[i]);
}
DecodeMetadataElement(file_metadata);
}
{:.draco-syntax}
ParseMetadataCount()
void ParseMetadataCount() {
num_att_metadata varUI32
}
{:.draco-syntax}
ParseAttributeMetadataId()
void ParseAttributeMetadataId(index) {
att_metadata_id[index] varUI32
}
{:.draco-syntax}
ParseMetadataElement()
void ParseMetadataElement(metadata) {
metadata.num_entries varUI32
for (i = 0; i < metadata.num_entries; ++i) {
sz = metadata.key_size[i] UI8
metadata.key[i] I8[sz]
sz = metadata.value_size[i] UI8
metadata.value[i] I8[sz]
}
metadata.num_sub_metadata varUI32
}
{:.draco-syntax}
ParseSubMetadataKey()
void ParseSubMetadataKey(metadata, index) {
sz = metadata.sub_metadata_key_size[index] UI8
metadata.sub_metadata_key[index] I8[sz]
}
{:.draco-syntax}
DecodeMetadataElement()
void DecodeMetadataElement(metadata) {
ParseMetadataElement(metadata);
for (i = 0; i < metadata.num_sub_metadata; ++i) {
ParseSubMetadataKey(metadata, i);
DecodeMetadataElement(metadata.sub_metadata[i]);
}
}
{:.draco-syntax}