Index: third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py |
diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py b/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py |
index 10ce58214599a330c56e6b52e35ea5fb18cb9331..b5bf6a460ee00c54a435f4840d94d0026dfb4611 100644 |
--- a/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py |
+++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py |
@@ -227,6 +227,12 @@ def GetCppFieldType(kind): |
return "mojo::internal::StringPointer" |
return _kind_to_cpp_type[kind] |
+def GetUnionGetterReturnType(kind): |
+ if (mojom.IsStructKind(kind) or mojom.IsArrayKind(kind) or |
+ mojom.IsMapKind(kind)): |
+ return "%s&" % GetCppWrapperType(kind) |
+ return GetCppResultWrapperType(kind) |
+ |
def IsStructWithHandles(struct): |
for pf in struct.packed.packed_fields: |
if mojom.IsAnyHandleKind(pf.field.kind): |
@@ -335,6 +341,7 @@ class Generator(generator.Generator): |
"cpp_pod_type": GetCppPodType, |
"cpp_result_type": GetCppResultWrapperType, |
"cpp_type": GetCppType, |
+ "cpp_union_getter_return_type": GetUnionGetterReturnType, |
"cpp_wrapper_type": GetCppWrapperType, |
"default_value": DefaultValue, |
"expression_to_text": ExpressionToText, |
@@ -374,7 +381,7 @@ class Generator(generator.Generator): |
"kinds": self.module.kinds, |
"enums": self.module.enums, |
"structs": self.GetStructs(), |
- "unions": self.module.unions, |
+ "unions": self.GetUnions(), |
"interfaces": self.GetInterfaces(), |
} |