Index: third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl |
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl |
index 9ddcc5168db21b4c8cc0d591c558dffe69a4be3d..487d2a5cc137be900891db0b3d20dfc3f28d1541 100644 |
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl |
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl |
@@ -60,11 +60,9 @@ void {{class_name}}::EncodePointersAndHandles( |
switch (tag) { |
{%- for field in union.fields %} |
case {{enum_name}}::{{field.name|upper}}: { |
-{%- if field.kind|is_object_kind and not field.kind|is_union_kind %} |
- mojo::internal::Encode( |
- reinterpret_cast<{{field.kind|cpp_field_type}}*>(&data.f_{{field.name}}), |
- handles); |
-{%- elif field.kind|is_any_handle_kind %} |
+{%- if field.kind|is_object_kind %} |
+ mojo::internal::Encode(&data.f_{{field.name}}, handles); |
+{%- elif field.kind|is_any_handle_kind or field.kind|is_interface_kind %} |
mojo::internal::EncodeHandle(&data.f_{{field.name}}, handles); |
{%- endif %} |
return; |
@@ -78,11 +76,9 @@ void {{class_name}}::DecodePointersAndHandles( |
switch (tag) { |
{%- for field in union.fields %} |
case {{enum_name}}::{{field.name|upper}}: { |
-{%- if field.kind|is_object_kind and not field.kind|is_union_kind %} |
- mojo::internal::Decode( |
- reinterpret_cast<{{field.kind|cpp_field_type}}*>(&data.f_{{field.name}}), |
- handles); |
-{%- elif field.kind|is_any_handle_kind %} |
+{%- if field.kind|is_object_kind %} |
+ mojo::internal::Decode(&data.f_{{field.name}}, handles); |
+{%- elif field.kind|is_any_handle_kind or field.kind|is_interface_kind %} |
mojo::internal::DecodeHandle(&data.f_{{field.name}}, handles); |
{%- endif %} |
return; |