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..a68275d17055f60b694b65a7122b266de0866bc5 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,25 @@ bool {{class_name}}:: |
return false; |
} |
{%- endmacro %} |
+ |
+{%- macro global_enum_operators_decl(enum, class_name = '') %} |
+{% if class_name != '' -%} |
+std::ostream& operator<<(std::ostream& stream, |
+ const {{class_name}}::{{enum.name}}& val); |
+{%- else -%} |
+std::ostream& operator<<(std::ostream& stream, const {{enum.name}}& val); |
+{%- endif -%} |
+{%- endmacro %} |
+ |
+{%- macro global_enum_operators_def(enum, class_name = '') %} |
+{% if class_name != '' -%} |
+std::ostream& operator<<(std::ostream& stream, |
+ const {{class_name}}::{{enum.name}}& val) { |
+ return (stream << static_cast<int32_t>(val)); |
+} |
+{%- else -%} |
+std::ostream& operator<<(std::ostream& stream, const {{enum.name}}& val) { |
+ return (stream << static_cast<int32_t>(val)); |
+} |
+{%- endif -%} |
+{%- endmacro %} |