diff options
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.tmpl | 85 |
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 %} |