| Index: mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl
|
| diff --git a/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl
|
| index 09bf392911709808ac8cbdf7729d8df2486bc0a8..9325338ef6d1b73d1d5560f306d69e78119e725b 100644
|
| --- a/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl
|
| +++ b/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl
|
| @@ -18,14 +18,35 @@ void Serialize_({{struct.name}}Ptr input, mojo::internal::Buffer* buf,
|
| {%- if pf.field.kind|is_any_array_kind %}
|
| mojo::SerializeArray_<{{pf.field.kind|get_array_validate_params|indent(26)}}>(
|
| mojo::internal::Forward(input->{{pf.field.name}}), buf, &result->{{pf.field.name}}.ptr);
|
| +{%- elif pf.field.kind|is_map_kind %}
|
| + mojo::Array<{{pf.field.kind.key_kind|cpp_result_type}}> {{pf.field.name}}_keys;
|
| + mojo::Array<{{pf.field.kind.value_kind|cpp_result_type}}> {{pf.field.name}}_values;
|
| + input->{{pf.field.name}}.DecomposeMapTo(&{{pf.field.name}}_keys,
|
| + &{{pf.field.name}}_values);
|
| +
|
| + mojo::SerializeArray_<{{pf.field.kind.key_kind|get_map_validate_params|indent(26)}}>(
|
| + mojo::internal::Forward({{pf.field.name}}_keys), buf, &result->{{pf.field.name}}_keys.ptr);
|
| + mojo::SerializeArray_<{{pf.field.kind.value_kind|get_map_validate_params|indent(26)}}>(
|
| + mojo::internal::Forward({{pf.field.name}}_values), buf, &result->{{pf.field.name}}_values.ptr);
|
| {%- else %}
|
| Serialize_(mojo::internal::Forward(input->{{pf.field.name}}), buf, &result->{{pf.field.name}}.ptr);
|
| {%- endif %}
|
| {%- if not pf.field.kind|is_nullable_kind %}
|
| +{%- if pf.field.kind|is_map_kind %}
|
| + MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
|
| + !result->{{pf.field.name}}_keys.ptr,
|
| + mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
|
| + "null key array for {{pf.field.name}} field in {{struct.name}} struct");
|
| + MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
|
| + !result->{{pf.field.name}}_values.ptr,
|
| + mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
|
| + "null value array for {{pf.field.name}} field in {{struct.name}} struct");
|
| +{%- else %}
|
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
|
| !result->{{pf.field.name}}.ptr,
|
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
|
| "null {{pf.field.name}} field in {{struct.name}} struct");
|
| +{%- endif %}
|
| {%- endif %}
|
| {%- elif pf.field.kind|is_any_handle_kind %}
|
| {%- if pf.field.kind|is_interface_kind %}
|
| @@ -54,7 +75,17 @@ void Deserialize_(internal::{{struct.name}}_Data* input,
|
| if (input) {
|
| {{struct.name}}Ptr result({{struct.name}}::New());
|
| {%- for pf in struct.packed.packed_fields %}
|
| -{%- if pf.field.kind|is_object_kind %}
|
| +{%- if pf.field.kind|is_map_kind %}
|
| + mojo::Array<{{pf.field.kind.key_kind|cpp_result_type}}> {{pf.field.name}}_keys;
|
| + Deserialize_(input->{{pf.field.name}}_keys.ptr, &{{pf.field.name}}_keys);
|
| + mojo::Array<{{pf.field.kind.value_kind|cpp_result_type}}> {{pf.field.name}}_values;
|
| + Deserialize_(input->{{pf.field.name}}_values.ptr, &{{pf.field.name}}_values);
|
| + result->{{pf.field.name}} =
|
| + mojo::Map<{{pf.field.kind.key_kind|cpp_result_type}},
|
| + {{pf.field.kind.value_kind|cpp_result_type}}>(
|
| + {{pf.field.name}}_keys.Pass(),
|
| + {{pf.field.name}}_values.Pass()).Pass();
|
| +{%- elif pf.field.kind|is_object_kind %}
|
| Deserialize_(input->{{pf.field.name}}.ptr, &result->{{pf.field.name}});
|
| {%- elif pf.field.kind|is_interface_kind %}
|
| if (input->{{pf.field.name}}.is_valid())
|
|
|