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 dabbb0b636250a5179911745a41745c428193df3..a609c8e193e22191e0890981a0d220264a398df2 100644 |
--- a/mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl |
+++ b/mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl |
@@ -29,7 +29,8 @@ |
decltype({{original_input_field}}) in_{{name}} = {{original_input_field}}; |
{%- endif %} |
-{%- if kind|is_struct_kind or kind|is_string_kind %} |
+{%- if kind|is_struct_kind or kind|is_string_kind or kind|is_array_kind or |
+ kind|is_map_kind %} |
{%- set serializer_type = kind|unmapped_type_for_serializer %} |
size += mojo::internal::PrepareToSerialize<{{serializer_type}}>( |
{{input_field}}, {{context}}); |
@@ -66,6 +67,7 @@ |
{%- set name = pf.field.name %} |
{%- set kind = pf.field.kind %} |
{%- if kind|is_object_kind %} |
+{%- set serializer_type = kind|unmapped_type_for_serializer %} |
{%- set original_input_field = input_field_pattern|format(name) %} |
{%- set input_field = "in_%s"|format(name) if input_may_be_temp |
else original_input_field %} |
@@ -73,18 +75,13 @@ |
decltype({{original_input_field}}) in_{{name}} = {{original_input_field}}; |
{%- endif %} |
-{%- if kind|is_array_kind %} |
+{%- if kind|is_array_kind or kind|is_map_kind %} |
const mojo::internal::ArrayValidateParams {{name}}_validate_params( |
{{kind|get_array_validate_params_ctor_args|indent(10)}}); |
- mojo::SerializeArray_(std::move({{input_field}}), {{buffer}}, |
- &{{output}}->{{name}}.ptr, &{{name}}_validate_params, {{context}}); |
-{%- elif kind|is_map_kind %} |
- const mojo::internal::ArrayValidateParams {{name}}_validate_params( |
- {{kind.value_kind|get_map_validate_params_ctor_args|indent(10)}}); |
- mojo::SerializeMap_(std::move({{input_field}}), {{buffer}}, |
- &{{output}}->{{name}}.ptr, &{{name}}_validate_params, {{context}}); |
+ mojo::internal::Serialize<{{serializer_type}}>( |
+ {{input_field}}, {{buffer}}, &{{output}}->{{name}}.ptr, |
+ &{{name}}_validate_params, {{context}}); |
{%- elif kind|is_struct_kind or kind|is_string_kind %} |
-{%- set serializer_type = kind|unmapped_type_for_serializer %} |
mojo::internal::Serialize<{{serializer_type}}>( |
{{input_field}}, {{buffer}}, &{{output}}->{{name}}.ptr, {{context}}); |
{%- elif kind|is_union_kind %} |
@@ -172,7 +169,8 @@ |
if ({{input}}->header_.version < {{pf.min_version}}) |
break; |
{%- endif %} |
-{%- if kind|is_struct_kind or kind|is_string_kind %} |
+{%- if kind|is_struct_kind or kind|is_string_kind or kind|is_array_kind or |
+ kind|is_map_kind %} |
{%- set serializer_type = kind|unmapped_type_for_serializer %} |
if (!mojo::internal::Deserialize<{{serializer_type}}>( |
{{input}}->{{name}}.ptr, &{{output_field}}, {{context}})) { |