| Index: third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/struct.tmpl
|
| diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/struct.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/struct.tmpl
|
| index c9f044a63e6f500b4f93cd3a0b255ff8a2ff9e8c..457e33946e76de12d39ab3af1bc7a5510c46b8a1 100644
|
| --- a/third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/struct.tmpl
|
| +++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/struct.tmpl
|
| @@ -4,13 +4,14 @@
|
|
|
| {% macro define(struct, exported=True) %}
|
| type {{struct|name(exported)}} struct {
|
| -{% for packed_field in struct.packed.packed_fields %}
|
| - {{packed_field.field|name(exported)}} {{packed_field.field.kind|go_type}}
|
| +{% for field in struct.fields %}
|
| + {{field|name(exported)}} {{field.kind|go_type}}
|
| {% endfor %}
|
| }
|
|
|
| func (s *{{struct|name(exported)}}) Encode(encoder *bindings.Encoder) error {
|
| - encoder.StartStruct({{struct.versions[-1].num_bytes}}, {{struct.versions[-1].version}})
|
| +{% set HEADER_SIZE = 8 %}
|
| + encoder.StartStruct({{struct.versions[-1].num_bytes - HEADER_SIZE}}, {{struct.versions[-1].version}})
|
| {% for byte in struct.bytes %}
|
| {% for packed_field in byte.packed_fields %}
|
| {{encode('s.'~packed_field.field|name(exported), packed_field.field.kind)|tab_indent()}}
|
| @@ -103,6 +104,10 @@ if err := encoder.Finish(); err != nil {
|
| if err := encoder.WriteInt32(int32({{value}})); err != nil {
|
| return err
|
| }
|
| +{% elif kind|is_handle_owner %}
|
| +if err := encoder.WriteHandle({{value}}.PassMessagePipe()); err != nil {
|
| + return err
|
| +}
|
| {% else %}
|
| if err := encoder.Write{{kind|encode_suffix}}({{value}}); err != nil {
|
| return err
|
| @@ -137,7 +142,12 @@ if err != nil {
|
| return err
|
| }
|
| if handle{{level}}.IsValid() {
|
| +{% if kind|is_handle_owner %}
|
| + handleOwner := bindings.NewMessagePipeHandleOwner(handle{{level}})
|
| + {{value}} = {% if kind|is_nullable %}&{% endif %}{{kind|go_type(False)}}{handleOwner}
|
| +{% else %}
|
| {{value}} = {% if kind|is_nullable %}&{% endif %}handle{{level}}
|
| +{% endif %}
|
| } else {
|
| {% if kind|is_nullable %}
|
| {{value}} = nil
|
|
|