Chromium Code Reviews| Index: mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_definition.tmpl |
| 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 |
| index e905904174d920db89fbd7ef087b7fb70b890929..2a9a2f4c1b5dd41ecbc0ce80a0b58850340a20eb 100644 |
| --- 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 |
| @@ -65,3 +65,19 @@ void {{union.name}}::DestroyActive() { |
| {%- endfor %} |
| } |
| } |
| + |
| +{%- if union|is_hashable %} |
| +size_t {{union.name}}::Hash(size_t seed) const { |
|
yzshen1
2016/09/22 23:48:56
Does this needs to call different hash functions a
tibell
2016/09/23 00:07:07
Done.
|
| + seed = mojo::internal::HashCombine(seed, static_cast<uint32_t>(tag_)); |
| + switch (tag_) { |
| +{% for field in union.fields %} |
| + case Tag::{{field.name|upper}}: |
| + return mojo::internal::Hash(seed, data_.{{field.name}}); |
| +{%- endfor %} |
| + default: |
| + NOTREACHED(); |
| + return seed; |
| + } |
| +} |
| + |
| +{%- endif %} |