| Index: mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_declaration.tmpl
|
| diff --git a/mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_declaration.tmpl
|
| index 8b7cf9e6b1dc75485ff26d6184dd777a29cd0163..4a768a9f8585ffb37317d01ffe4869db9e54ece9 100644
|
| --- a/mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_declaration.tmpl
|
| +++ b/mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_declaration.tmpl
|
| @@ -4,7 +4,20 @@ class {{export_attribute}} {{union.name}} {
|
| using Data_ = internal::{{union.name}}_Data;
|
| using Tag = Data_::{{union.name}}_Tag;
|
|
|
| - static {{union.name}}Ptr New();
|
| + static {{union.name}}Ptr New() {
|
| + return {{union.name}}Ptr(base::in_place);
|
| + }
|
| +
|
| +{%- for field in union.fields %}
|
| + // Construct an instance holding |{{field.name}}|.
|
| + static {{union.name}}Ptr
|
| + New{{field.name|under_to_camel}}(
|
| + {{field.kind|cpp_wrapper_param_type}} {{field.name}}) {
|
| + auto result = {{union.name}}Ptr(base::in_place);
|
| + result->set_{{field.name}}(std::move({{field.name}}));
|
| + return result;
|
| + }
|
| +{%- endfor %}
|
|
|
| template <typename U>
|
| static {{union.name}}Ptr From(const U& u) {
|
| @@ -58,7 +71,6 @@ class {{export_attribute}} {{union.name}} {
|
| {%- endfor %}
|
|
|
| private:
|
| - friend class mojo::internal::UnionAccessor<{{union.name}}>;
|
| union Union_ {
|
| Union_() {}
|
| ~Union_() {}
|
| @@ -72,8 +84,6 @@ class {{export_attribute}} {{union.name}} {
|
| {%- endif %}
|
| {%- endfor %}
|
| };
|
| - void SwitchActive(Tag new_active);
|
| - void SetActive(Tag new_active);
|
| void DestroyActive();
|
| Tag tag_;
|
| Union_ data_;
|
|
|