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

Unified Diff: mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl

Issue 1953493002: Mojo C++ bindings: custom type mapping for array - part 2 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@21_simplify
Patch Set: Created 4 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: 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}})) {

Powered by Google App Engine
This is Rietveld 408576698