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..269fafc4942976b7dcbf7134328e7514134fb73f 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 %} |
| }; |
| @@ -44,3 +44,19 @@ bool {{class_name}}:: |
| return false; |
| } |
| {%- endmacro %} |
| + |
| +{%- macro global_enum_operators_decl(enum, class_name = '') %} |
| +{% if class_name != '' -%} |
| +static inline std::ostream& operator<<( |
|
viettrungluu
2015/10/01 17:49:55
You need to include appropriate headers for std::o
johngro
2015/10/02 00:49:04
Done.
|
| + std::ostream& stream, |
| + const {{class_name}}::{{enum.name}}& val) { |
| + return (stream << static_cast<typename std::underlying_type<{{class_name}}::{{enum.name}}>::type>(val)); |
|
viettrungluu
2015/10/01 17:49:55
The underlying type for our enums is always int32_
johngro
2015/10/02 00:49:04
Done.
|
| +} |
| +{%- else -%} |
| +static inline std::ostream& operator<<( |
| + std::ostream& stream, |
| + const {{enum.name}}& val) { |
| + return (stream << static_cast<typename std::underlying_type<{{enum.name}}>::type>(val)); |
| +} |
| +{%- endif -%} |
| +{%- endmacro %} |