Chromium Code Reviews| Index: mojo/public/tools/bindings/generators/cpp_templates/enum_macros.tmpl |
| diff --git a/mojo/public/tools/bindings/generators/cpp_templates/enum_macros.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/enum_macros.tmpl |
| index 0e44acd57e65ce0bc4b131b73b8d5924eb3dd8a3..5bbd2828141e0481155bc310c428bb930caf4c83 100644 |
| --- a/mojo/public/tools/bindings/generators/cpp_templates/enum_macros.tmpl |
| +++ b/mojo/public/tools/bindings/generators/cpp_templates/enum_macros.tmpl |
| @@ -4,12 +4,12 @@ |
| which case associated functions need to be static. |
| ---#} |
| {%- macro enum_decl(enum, is_static=false) %} |
| -enum {{enum.name}} : int32_t { |
| +enum class {{enum.name}} : int32_t { |
| {%- for field in enum.fields %} |
| {%- if field.value %} |
| - {{enum.name|to_all_caps}}_{{field.name}} = {{field.value|expression_to_text}}, |
| + {{field.name}} = {{field.value|expression_to_text}}, |
| {%- else %} |
| - {{enum.name|to_all_caps}}_{{field.name}}, |
| + {{field.name}}, |
| {%- endif %} |
| {%- endfor %} |
| }; |
| @@ -27,6 +27,27 @@ enum {{enum.name}} : int32_t { |
| bool {{enum.name}}_IsValidValue({{enum.name}} value); |
| {%- endmacro %} |
| +{%- macro enum_stream_operator(enum) %} |
| +inline std::ostream& operator<<(std::ostream& os, {{enum|get_name_for_kind}} value) { |
| + switch(value) { |
| +{%- for _, values in enum.fields|groupby('numeric_value') %} |
| + case {{enum|get_name_for_kind}}::{{values[0].name}}: |
| + return os << "{{enum|get_name_for_kind}}:: |
| +{%- if values|length > 1 -%} |
| + {{'{'}} |
| +{%- endif -%} |
| +{{values|map(attribute='name')|join(', ')}} |
|
yzshen1
2016/01/07 19:24:52
nit: does it make sense to also add indent for thi
Sam McNally
2016/01/08 05:12:51
Done.
|
| +{%- if values|length > 1 -%} |
| + {{'}'}} |
| +{%- endif -%} |
| + "; |
| +{%- endfor %} |
| + default: |
| + return os << "Unknown {{enum|get_name_for_kind}} value: " << static_cast<int32_t>(value); |
| + } |
| +} |
| +{%- endmacro %} |
| + |
| {%- macro is_valid_enum_def(enum, class_name = '') %} |
| {% if class_name != '' -%} |
| // static |