| 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(),
|
| }
|
|
|
|
|