draco/docs/spec/metadata.decoder.md
2020-03-03 10:46:47 -08:00

78 lines
1.9 KiB
Markdown

## 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}