Chromium Code Reviews| Index: mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl |
| diff --git a/mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl |
| index 08989492631f2dd823f7b3de70b9872e1ac6112c..10174d184b0c8e7ed183f7c3febf3d958199c392 100644 |
| --- a/mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl |
| +++ b/mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl |
| @@ -14,7 +14,10 @@ |
| {%- macro get_serialized_size(struct, input_field_pattern) -%} |
| size_t size = sizeof(internal::{{struct.name}}_Data); |
| {%- for pf in struct.packed.packed_fields_in_ordinal_order if pf.field.kind|is_object_kind %} |
| -{%- if pf.field.kind|is_union_kind %} |
| +{%- if pf.field.kind|is_native_only_kind %} |
| + size += mojo::internal::GetSerializedSizeNative_( |
|
yzshen1
2015/12/15 21:20:27
Please consider naming those Native-related functi
Ken Rockot(use gerrit already)
2015/12/15 23:31:08
This won't work. We don't know the types at bindin
yzshen1
2015/12/15 23:55:29
Right. I forgot that was why I used different name
|
| + {{input_field_pattern|format(pf.field.name)}}); |
| +{%- elif pf.field.kind|is_union_kind %} |
| size += GetSerializedSize_({{input_field_pattern|format(pf.field.name)}}, true); |
| {%- else %} |
| size += GetSerializedSize_({{input_field_pattern|format(pf.field.name)}}); |
| @@ -54,6 +57,9 @@ |
| {{kind.value_kind|get_map_validate_params_ctor_args|indent(10)}}); |
| mojo::SerializeMap_(std::move({{input_field}}), {{buffer}}, |
| &{{output}}->{{name}}.ptr, &{{name}}_validate_params); |
| +{%- elif kind|is_native_only_kind %} |
| + mojo::internal::SerializeNative_( |
| + {{input_field}}, {{buffer}}, &{{output}}->{{name}}.ptr); |
| {%- elif kind|is_union_kind %} |
| internal::{{kind.name}}_Data* {{name}}_ptr = &{{output}}->{{name}}; |
| SerializeUnion_(std::move({{input_field}}), {{buffer}}, &{{name}}_ptr, true); |
| @@ -132,7 +138,12 @@ |
| if ({{input}}->header_.version < {{pf.min_version}}) |
| break; |
| {%- endif %} |
| -{%- if kind|is_object_kind %} |
| +{%- if kind|is_native_only_kind %} |
| + if (!DeserializeNative_( |
| + {{input}}->{{name}}.ptr, &{{output_field}}, {{context}})) { |
| + return false; |
|
yzshen1
2015/12/15 21:20:27
We cannot short-circuit deserialization, so that w
Ken Rockot(use gerrit already)
2015/12/15 23:31:08
Oops, fixed
|
| + } |
| +{%- elif kind|is_object_kind %} |
| {%- if kind|is_union_kind %} |
| if (!Deserialize_(&{{input}}->{{name}}, &{{output_field}}, {{context}})) |
| {{success}} = false; |