aboutsummaryrefslogtreecommitdiff
path: root/mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_definition.tmpl
diff options
context:
space:
mode:
Diffstat (limited to 'mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_definition.tmpl')
-rw-r--r--mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_definition.tmpl85
1 files changed, 0 insertions, 85 deletions
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_definition.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_definition.tmpl
deleted file mode 100644
index b9e416a..0000000
--- a/mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_definition.tmpl
+++ /dev/null
@@ -1,85 +0,0 @@
-// static
-{{union.name}}Ptr {{union.name}}::New() {
- return {{union.name}}Ptr(base::in_place);
-}
-
-{{union.name}}::{{union.name}}() {
- // TODO(azani): Implement default values here when/if we support them.
- // TODO(azani): Set to UNKNOWN when unknown is implemented.
- SetActive(static_cast<Tag>(0));
-}
-
-{{union.name}}::~{{union.name}}() {
- DestroyActive();
-}
-
-{% for field in union.fields %}
-void {{union.name}}::set_{{field.name}}({{field.kind|cpp_wrapper_param_type}} {{field.name}}) {
- SwitchActive(Tag::{{field.name|upper}});
-{% if field.kind|is_string_kind %}
- *(data_.{{field.name}}) = {{field.name}};
-{% elif field.kind|is_object_kind or
- field.kind|is_any_handle_or_interface_kind %}
- *(data_.{{field.name}}) = std::move({{field.name}});
-{%- else %}
- data_.{{field.name}} = {{field.name}};
-{%- endif %}
-}
-{%- endfor %}
-
-void {{union.name}}::SwitchActive(Tag new_active) {
- if (new_active == tag_) {
- return;
- }
-
- DestroyActive();
- SetActive(new_active);
-}
-
-void {{union.name}}::SetActive(Tag new_active) {
- switch (new_active) {
-{% for field in union.fields %}
- case Tag::{{field.name|upper}}:
-{% if field.kind|is_object_kind or
- field.kind|is_any_handle_or_interface_kind %}
- data_.{{field.name}} = new {{field.kind|cpp_wrapper_type}}();
-{%- endif %}
- break;
-{%- endfor %}
- }
-
- tag_ = new_active;
-}
-
-void {{union.name}}::DestroyActive() {
- switch (tag_) {
-{% for field in union.fields %}
- case Tag::{{field.name|upper}}:
-{% if field.kind|is_object_kind or
- field.kind|is_any_handle_or_interface_kind %}
- delete data_.{{field.name}};
-{%- endif %}
- break;
-{%- endfor %}
- }
-}
-
-{%- if union|is_hashable %}
-size_t {{union.name}}::Hash(size_t seed) const {
- seed = mojo::internal::HashCombine(seed, static_cast<uint32_t>(tag_));
- switch (tag_) {
-{% for field in union.fields %}
- case Tag::{{field.name|upper}}:
-{%- if for_blink %}
- return mojo::internal::WTFHash(seed, data_.{{field.name}});
-{%- else %}
- return mojo::internal::Hash(seed, data_.{{field.name}});
-{%- endif %}
-{%- endfor %}
- default:
- NOTREACHED();
- return seed;
- }
-}
-
-{%- endif %}