[Yunq] Move message parser to shared internal function.

This commit is contained in:
Drew Galbraith 2024-01-11 20:47:39 -08:00
parent a71d5e9d24
commit 984d8b143e
10 changed files with 109 additions and 155 deletions

View file

@ -74,36 +74,15 @@ glcr::Status {{message.name}}::ParseFromBytesInternal(const yunq::MessageView& m
uint64_t {{message.name}}::SerializeToBytes(glcr::ByteBuffer& bytes, uint64_t offset) const {
yunq::Serializer serializer(bytes, offset, {{ message.fields | length }});
{%- for field in message.fields %}
// Write {{field.name}}.
{%- if not field.repeated %}
{%- if field.type != Type.CAPABILITY %}
serializer.WriteField<{{field.cpp_type()}}>({{loop.index0}}, {{field.name}}_);
{%- else %}
serializer.WriteCapability({{loop.index0}}, {{field.name}}_);
{%- endif %}
{%- else %}
{%- if field.type != Type.CAPABILITY %}
serializer.WriteRepeated<{{field.cpp_type()}}>({{loop.index0}}, {{field.name}}_);
{%- else %}
serializer.WriteRepeatedCapability({{loop.index0}}, {{field.name}}_);
{%- endif %}
{%- endif %}
{%- endfor %}
serializer.WriteHeader();
return serializer.size();
return SerializeInternal(serializer);
}
uint64_t {{message.name}}::SerializeToBytes(glcr::ByteBuffer& bytes, uint64_t offset, glcr::CapBuffer& caps) const {
yunq::Serializer serializer(bytes, offset, {{ message.fields | length }}, caps);
return SerializeInternal(serializer);
}
uint64_t {{message.name}}::SerializeInternal(yunq::Serializer& serializer) const {
{%- for field in message.fields %}
// Write {{field.name}}.
{%- if not field.repeated %}