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

Unified Diff: mojo/public/tools/bindings/generators/java_templates/java_macros.tmpl

Issue 291903003: Generate java bindings for constants. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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/java_templates/java_macros.tmpl
diff --git a/mojo/public/tools/bindings/generators/java_templates/java_macros.tmpl b/mojo/public/tools/bindings/generators/java_templates/java_macros.tmpl
new file mode 100644
index 0000000000000000000000000000000000000000..b9ce0991daf8d7eee4245f81c9a6bd1d933b195b
--- /dev/null
+++ b/mojo/public/tools/bindings/generators/java_templates/java_macros.tmpl
@@ -0,0 +1,25 @@
+{% macro set_default(variable, module, kind, value, depth=0) %}
+{% if kind|is_string_kind %}
+{{variable}} = {{value|expression_to_text(module)}};
+{% elif kind|is_array_kind %}
+{% set _ = value|verify_token_type("ARRAY") %}
+{{variable}} = {{kind|new_array(value[1]|length)}};
+{% for element in value[1] -%}
+{{set_default(variable~'['~loop.index0~']', module, kind.kind, element, depth+1)}}
+{%- endfor %}
+{% elif kind|is_object_kind %}
+{% set _ = value|verify_token_type("OBJECT") %}
+{{kind|java_type}}.Builder tmp{{depth}} = {{kind|java_type}}.newBuilder();
+{% for element in value[1] %}
+{% set subfield = kind.fields[loop.index0] %}
+{
+ {{subfield.kind|java_type}} tmp{{depth+1}};
+ {{set_default('tmp'~(depth+1), module, subfield.kind, element, depth+2)|indent(4)}}
+ tmp{{depth}}.set{{subfield.name|camelcase|capitalize_first}}(tmp{{depth+1}});
+}
+{% endfor %}
+{{variable}} = tmp{{depth}}.build();
+{% else %}
+{{variable}} = ({{kind|java_type}}) {{value|expression_to_text(module)}};
+{% endif %}
+{% endmacro %}

Powered by Google App Engine
This is Rietveld 408576698