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

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

Issue 376383002: Mojo: Add support for InterfacePtr as a struct member (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: retry Created 6 years, 5 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_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 aec2afa93e5eb81446e335f5ae7c7751cd5ee976..5d8b944fb1a5a359b29ab36245dfa39b1cec890c 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
@@ -16,6 +16,8 @@ void Serialize_({{struct.name}}Ptr input, mojo::internal::Buffer* buf,
{%- for pf in struct.packed.packed_fields %}
{%- if pf.field.kind|is_object_kind %}
Serialize_(mojo::internal::Forward(input->{{pf.field.name}}), buf, &result->{{pf.field.name}}.ptr);
+{%- elif pf.field.kind|is_interface_kind %}
+ result->{{pf.field.name}} = input->{{pf.field.name}}.PassMessagePipe().release();
{%- elif pf.field.kind|is_handle_kind %}
result->{{pf.field.name}} = input->{{pf.field.name}}.release();
{%- else %}
@@ -35,6 +37,9 @@ void Deserialize_(internal::{{struct.name}}_Data* input,
{%- for pf in struct.packed.packed_fields %}
{%- if 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())
+ result->{{pf.field.name}}.Bind(mojo::MakeScopedHandle(mojo::internal::FetchAndReset(&input->{{pf.field.name}})));
{%- elif pf.field.kind|is_handle_kind %}
result->{{pf.field.name}}.reset(mojo::internal::FetchAndReset(&input->{{pf.field.name}}));
{%- elif pf.field.kind|is_enum_kind %}

Powered by Google App Engine
This is Rietveld 408576698