Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1429)

Unified Diff: third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/encoding_macros.tmpl

Issue 1157843002: Update mojo sdk to rev 1dc8a9a5db73d3718d99917fadf31f5fb2ebad4f (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/encoding_macros.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/encoding_macros.tmpl
similarity index 70%
copy from third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/struct.tmpl
copy to third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/encoding_macros.tmpl
index f523ba6b8589ec3fab2a76801e28e4f3fd48f2f0..31e5c639739a345e19ccc9cc788a1882af8f66e7 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/encoding_macros.tmpl
@@ -1,70 +1,3 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-{% macro define(struct, exported=True) %}
-type {{struct|name(exported)}} struct {
-{% for field in struct.fields %}
- {{field|name(exported)}} {{field.kind|go_type}}
-{% endfor %}
-}
-
-func (s *{{struct|name(exported)}}) Encode(encoder *bindings.Encoder) error {
-{% 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()}}
-{% endfor %}
-{% endfor %}
- if err := encoder.Finish(); err != nil {
- return err
- }
- return nil
-}
-
-var {{struct|name(False)}}_Versions []bindings.DataHeader = []bindings.DataHeader{
-{% for versionInfo in struct.versions %}
- bindings.DataHeader{{'{'}}{{versionInfo.num_bytes}}, {{versionInfo.version}}{{'}'}},
-{% endfor %}
-}
-
-func (s *{{struct|name(exported)}}) Decode(decoder *bindings.Decoder) error {
- header, err := decoder.StartStruct()
- if err != nil {
- return err
- }
- index := sort.Search(len({{struct|name(False)}}_Versions), func(i int) bool {
- return {{struct|name(False)}}_Versions[i].ElementsOrVersion >= header.ElementsOrVersion
- })
- if index < len({{struct|name(False)}}_Versions) {
- if {{struct|name(False)}}_Versions[index].ElementsOrVersion > header.ElementsOrVersion {
- index--
- }
- expectedSize := {{struct|name(False)}}_Versions[index].Size
- if expectedSize != header.Size {
- return &bindings.ValidationError{bindings.UnexpectedStructHeader,
- fmt.Sprintf("invalid struct header size: should be %d, but was %d", expectedSize, header.Size),
- }
- }
- }
-{% for byte in struct.bytes %}
-{% for packed_field in byte.packed_fields %}
- if header.ElementsOrVersion >= {{packed_field.min_version}} {
- {{decode('s.'~packed_field.field|name(exported), packed_field.field.kind)|tab_indent(2)}}
- }
-{% endfor %}
-{% endfor %}
- if err := decoder.Finish(); err != nil {
- return err
- }
- return nil
-}
-
-{% endmacro %}
-
-
-
{% macro encode(value, kind, level=0) %}
{% if kind|is_nullable %}
if {{value}} == nil {
@@ -72,6 +5,8 @@ if {{value}} == nil {
encoder.WriteInvalidInterface()
{% elif kind|is_handle %}
encoder.WriteInvalidHandle()
+{% elif kind|is_union %}
+ encoder.WriteNullUnion()
{% else %}
encoder.WriteNullPointer()
{% endif %}
@@ -91,7 +26,7 @@ if err := encoder.WritePointer(); err != nil {
return err
}
{% endif %}
-{% if kind|is_struct %}
+{% if kind|is_struct or kind|is_union %}
if err := {{value}}.Encode(encoder); err != nil {
return err
}
@@ -199,6 +134,8 @@ if err != nil {
if err := {{value}}.Decode(decoder); err != nil {
return err
}
+{% elif kind|is_union %}
+// TODO(azani): Implement union decoding.
{% elif kind|is_array %}
len{{level}}, err := decoder.StartArray({{kind.kind|bit_size}})
if err != nil {

Powered by Google App Engine
This is Rietveld 408576698