Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1326)

Unified Diff: mojo/public/tools/bindings/generators/cpp_templates/enum_macros.tmpl

Issue 1635613002: [mojo-bindings] Support reuse of native enum classes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: do not generate validators for native-only enums Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 d11b198bc658d7623e77a8611659a98d8a118e92..19dcfd63db5ac3d1e77a67a6123892ac4c726c24 100644
--- a/mojo/public/tools/bindings/generators/cpp_templates/enum_macros.tmpl
+++ b/mojo/public/tools/bindings/generators/cpp_templates/enum_macros.tmpl
@@ -4,16 +4,20 @@
which case associated functions need to be static.
---#}
{%- macro enum_decl(enum, is_static=false) %}
+{%- if enum.native_only %}
+using {{enum.name}} = {{enum|cpp_wrapper_type}};
+{%- else %}
enum class {{enum.name}} : int32_t {
-{%- for field in enum.fields %}
-{%- if field.value %}
+{%- for field in enum.fields %}
+{%- if field.value %}
{{field.name}} = {{field.value|expression_to_text}},
-{%- else %}
+{%- else %}
{{field.name}},
-{%- endif %}
-{%- endfor %}
+{%- endif %}
+{%- endfor %}
};
{{is_valid_enum_decl(enum, is_static)}}
+{% endif %}
yzshen1 2016/01/26 04:36:29 nit: "{%-" (and also line 54)
{%- endmacro %}
{#--- macros for the declaration & definitions of enum-associated functions.
@@ -28,40 +32,44 @@ bool {{enum.name}}_IsValidValue({{enum.name}} value);
{%- endmacro %}
{%- macro enum_stream_operator(enum) %}
+{%- if not enum.native_only %}
inline std::ostream& operator<<(std::ostream& os, {{enum|get_name_for_kind}} value) {
switch(value) {
-{%- for _, values in enum.fields|groupby('numeric_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 -%}
+{%- if values|length > 1 -%}
{{'{'}}
-{%- endif -%}
+{%- endif -%}
{{values|map(attribute='name')|join(', ')}}
-{%- if values|length > 1 -%}
+{%- if values|length > 1 -%}
{{'}'}}
-{%- endif -%}
+{%- endif -%}
";
-{%- endfor %}
+{%- endfor %}
default:
return os << "Unknown {{enum|get_name_for_kind}} value: " << static_cast<int32_t>(value);
}
}
+{%- endif %}
{%- endmacro %}
{%- macro is_valid_enum_def(enum, class_name = '') %}
-{% if class_name != '' -%}
+{%- if not enum.native_only %}
+{% if class_name != '' -%}
// static
bool {{class_name}}::
-{%- else -%}
+{%- else -%}
{{"bool "}}
-{%- endif -%}
+{%- endif -%}
{{enum.name}}_IsValidValue({{enum.name}} value) {
switch (static_cast<int32_t>(value)) {
-{%- for enum_field in enum.fields|groupby('numeric_value') %}
+{%- for enum_field in enum.fields|groupby('numeric_value') %}
case {{enum_field[0]}}:
-{%- endfor %}
+{%- endfor %}
return true;
}
return false;
}
+{% endif %}
{%- endmacro %}

Powered by Google App Engine
This is Rietveld 408576698