diff options
author | pastarmovj@google.com <pastarmovj@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-25 21:36:59 +0900 |
---|---|---|
committer | Qijiang Fan <fqj@google.com> | 2020-06-04 17:00:05 +0900 |
commit | d928217aec2280a968851151f9df1179461c87a7 (patch) | |
tree | 43206566cdb07d3dd852b760535091cf971d2c76 /mojo/public/tools | |
parent | b35f8abad9bb7efde57ea7446f0a81d0235a081a (diff) | |
download | libchrome-d928217aec2280a968851151f9df1179461c87a7.tar.gz |
Revert 279677 "Generate java bindings for structs."
Broke the Linux x64 build http://build.chromium.org/p/chromium/builders/Linux%20x64/builds/66839/steps/compile/logs/stdio
> Generate java bindings for structs.
>
> This CL introduces bindings for struct. It only generates fields and not
> serialization/deserialization methods.
>
> R=rmcilroy@chromium.org, viettrungluu@chromium.org
>
> Review URL: https://codereview.chromium.org/306893010
TBR=qsr@chromium.org
Review URL: https://codereview.chromium.org/354833003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@279688 0039d316-1c4b-4281-b951-d872f2087c98
CrOS-Libchrome-Original-Commit: 8723cf789893fba470c4edc5bf75bbcafad6f92e
Diffstat (limited to 'mojo/public/tools')
8 files changed, 31 insertions, 122 deletions
diff --git a/mojo/public/tools/bindings/generators/java_templates/constant_definition.tmpl b/mojo/public/tools/bindings/generators/java_templates/constant_definition.tmpl index fcab2c6fde..f69f657d31 100644 --- a/mojo/public/tools/bindings/generators/java_templates/constant_definition.tmpl +++ b/mojo/public/tools/bindings/generators/java_templates/constant_definition.tmpl @@ -1,3 +1,5 @@ +{% from "java_macros.tmpl" import build_default %} + {% macro constant_def(constant) %} -public static final {{constant.kind|java_type}} {{constant|name}} = ({{constant.kind|java_type}}) {{constant.value|expression_to_text}}; +public static final {{constant.kind|java_type}} {{constant|name}} = {{build_default(module, constant.kind, constant.value)|indent(4)}}; {% endmacro %} 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 0000000000..d7339f5a42 --- /dev/null +++ b/mojo/public/tools/bindings/generators/java_templates/java_macros.tmpl @@ -0,0 +1,3 @@ +{% macro build_default(module, kind, value) %} +({{kind|java_type}}) {{value|expression_to_text}} +{% endmacro %} diff --git a/mojo/public/tools/bindings/generators/java_templates/struct.java.tmpl b/mojo/public/tools/bindings/generators/java_templates/struct.java.tmpl deleted file mode 100644 index 232ec26f5f..0000000000 --- a/mojo/public/tools/bindings/generators/java_templates/struct.java.tmpl +++ /dev/null @@ -1,4 +0,0 @@ -{% from "struct_definition.tmpl" import struct_def %} -{% include "header.java.tmpl" %} - -{{ struct_def(struct) }} diff --git a/mojo/public/tools/bindings/generators/java_templates/struct_definition.tmpl b/mojo/public/tools/bindings/generators/java_templates/struct_definition.tmpl deleted file mode 100644 index a044e9cc4b..0000000000 --- a/mojo/public/tools/bindings/generators/java_templates/struct_definition.tmpl +++ /dev/null @@ -1,32 +0,0 @@ -{% from "constant_definition.tmpl" import constant_def %} -{% from "enum_definition.tmpl" import enum_def %} - -{% macro struct_def(struct, inner_class=False) %} -{{'static' if inner_class else 'public'}} final class {{struct|name}} extends org.chromium.mojo.bindings.Struct { -{% for constant in struct.constants %} - - {{constant_def(constant)|indent(4)}} -{% endfor %} -{% for enum in struct.enums %} - - {{enum_def(enum, false)|indent(4)}} -{% endfor %} -{% if struct.fields %} - -{% for field in struct.fields %} - public {{field.kind|java_type}} {{field|name}}; -{% endfor %} -{% endif %} - - public {{struct|name}}() { -{% for field in struct.fields %} -{% if field.default %} - {{field|name}} = {{field|default_value}}; -{% elif field.kind|is_handle %} - {{field|name}} = org.chromium.mojo.system.InvalidHandle.INSTANCE; -{% endif %} -{% endfor %} - } - -} -{% endmacro %} diff --git a/mojo/public/tools/bindings/generators/mojom_java_generator.py b/mojo/public/tools/bindings/generators/mojom_java_generator.py index 4755b0db6f..ca43b84563 100644 --- a/mojo/public/tools/bindings/generators/mojom_java_generator.py +++ b/mojo/public/tools/bindings/generators/mojom_java_generator.py @@ -8,8 +8,6 @@ import argparse import os import re -from jinja2 import contextfilter - import mojom.generate.generator as generator import mojom.generate.module as mojom from mojom.generate.template_expander import UseJinja @@ -64,21 +62,19 @@ def ConstantStyle(name): return '_'.join([x.upper() for x in components]) def GetNameForElement(element): - if isinstance(element, (mojom.Enum, - mojom.Interface, - mojom.Struct)): + if (isinstance(element, mojom.Enum) or + isinstance(element, mojom.Interface) or + isinstance(element, mojom.Struct)): return UpperCamelCase(element.name) - if isinstance(element, mojom.InterfaceRequest): - return GetNameForElement(element.kind) - if isinstance(element, (mojom.Method, - mojom.Parameter, - mojom.Field)): + if (isinstance(element, mojom.Method) or + isinstance(element, mojom.Parameter) or + isinstance(element, mojom.Field)): return CamelCase(element.name) if isinstance(element, mojom.EnumValue): return (UpperCamelCase(element.enum_name) + '.' + ConstantStyle(element.name)) - if isinstance(element, (mojom.NamedValue, - mojom.Constant)): + if (isinstance(element, mojom.NamedValue) or + isinstance(element, mojom.Constant)): return ConstantStyle(element.name) raise Exception("Unexpected element: " % element) @@ -92,57 +88,36 @@ def GetPackage(module): # Default package. return "org.chromium.mojom." + module.namespace -def GetNameForKind(context, kind): +def GetNameForKind(kind): def _GetNameHierachy(kind): hierachy = [] if kind.parent_kind: hierachy = _GetNameHierachy(kind.parent_kind) - hierachy.append(GetNameForElement(kind)) + hierachy.append(kind.name) return hierachy - module = context.resolve('module') - elements = [] - if GetPackage(module) != GetPackage(kind.module): - elements += [GetPackage(kind.module)] + elements = [GetPackage(kind.module)] elements += _GetNameHierachy(kind) return '.'.join(elements) -@contextfilter -def GetJavaType(context, kind): +def GetJavaType(kind): if isinstance(kind, (mojom.Struct, mojom.Interface)): - return GetNameForKind(context, kind) - if isinstance(kind, mojom.InterfaceRequest): - return GetNameForKind(context, kind.kind) - if isinstance(kind, (mojom.Array, mojom.FixedArray)): - return "%s[]" % GetJavaType(context, kind.kind) + return GetNameForKind(kind) + if isinstance(kind, mojom.Array): + return "%s[]" % GetJavaType(kind.kind) if isinstance(kind, mojom.Enum): return "int" return _spec_to_java_type[kind.spec] -def IsHandle(kind): - return kind.spec[0] == 'h' - -@contextfilter -def DefaultValue(context, field): - assert field.default - if isinstance(field.kind, mojom.Struct): - assert field.default == "default" - return "new %s()" % GetJavaType(context, field.kind) - return "(%s) %s" % (GetJavaType(context, field.kind), - ExpressionToText(context, field.default)) - -@contextfilter -def ExpressionToText(context, token): +def ExpressionToText(token): def _TranslateNamedValue(named_value): entity_name = GetNameForElement(named_value) if named_value.parent_kind: - return GetJavaType(context, named_value.parent_kind) + '.' + entity_name + return GetJavaType(named_value.parent_kind) + '.' + entity_name # Handle the case where named_value is a module level constant: if not isinstance(named_value, mojom.EnumValue): entity_name = (GetConstantsMainEntityName(named_value.module) + '.' + entity_name) - if GetPackage(named_value.module) == GetPackage(context.resolve('module')): - return entity_name return GetPackage(named_value.module) + '.' + entity_name if isinstance(token, mojom.NamedValue): @@ -163,9 +138,7 @@ def GetConstantsMainEntityName(module): class Generator(generator.Generator): java_filters = { - "default_value": DefaultValue, "expression_to_text": ExpressionToText, - "is_handle": IsHandle, "java_type": GetJavaType, "name": GetNameForElement, } @@ -176,19 +149,15 @@ class Generator(generator.Generator): "package": GetPackage(self.module), } - @UseJinja("java_templates/enum.java.tmpl", filters=java_filters) + @UseJinja("java_templates/enum.java.tmpl", filters=java_filters, + lstrip_blocks=True, trim_blocks=True) def GenerateEnumSource(self, enum): exports = self.GetJinjaExports() exports.update({"enum": enum}) return exports - @UseJinja("java_templates/struct.java.tmpl", filters=java_filters) - def GenerateStructSource(self, struct): - exports = self.GetJinjaExports() - exports.update({"struct": struct}) - return exports - - @UseJinja("java_templates/constants.java.tmpl", filters=java_filters) + @UseJinja("java_templates/constants.java.tmpl", filters=java_filters, + lstrip_blocks=True, trim_blocks=True) def GenerateConstantsSource(self, module): exports = self.GetJinjaExports() exports.update({"main_entity": GetConstantsMainEntityName(module), @@ -213,21 +182,6 @@ class Generator(generator.Generator): self.Write(self.GenerateEnumSource(enum), "%s.java" % GetNameForElement(enum)) - for struct in self.module.structs: - self.Write(self.GenerateStructSource(struct), - "%s.java" % GetNameForElement(struct)) - if self.module.constants: self.Write(self.GenerateConstantsSource(self.module), "%s.java" % GetConstantsMainEntityName(self.module)) - - def GetJinjaParameters(self): - return { - 'lstrip_blocks': True, - 'trim_blocks': True, - } - - def GetGlobals(self): - return { - 'module': self.module, - } diff --git a/mojo/public/tools/bindings/mojom_bindings_generator.gypi b/mojo/public/tools/bindings/mojom_bindings_generator.gypi index 5ba097894b..cbc77d8822 100644 --- a/mojo/public/tools/bindings/mojom_bindings_generator.gypi +++ b/mojo/public/tools/bindings/mojom_bindings_generator.gypi @@ -43,8 +43,7 @@ '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/enum_definition.tmpl', '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/enum.java.tmpl', '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/header.java.tmpl', - '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/struct_definition.tmpl', - '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/struct.java.tmpl', + '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/java_macros.tmpl', '<(DEPTH)/mojo/public/tools/bindings/generators/js_templates/enum_definition.tmpl', '<(DEPTH)/mojo/public/tools/bindings/generators/js_templates/interface_definition.tmpl', '<(DEPTH)/mojo/public/tools/bindings/generators/js_templates/module.js.tmpl', diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/generator.py b/mojo/public/tools/bindings/pylib/mojom/generate/generator.py index 9eb90a9b74..aea5de8e5c 100644 --- a/mojo/public/tools/bindings/pylib/mojom/generate/generator.py +++ b/mojo/public/tools/bindings/pylib/mojom/generate/generator.py @@ -97,11 +97,3 @@ class Generator(object): def GenerateFiles(self, args): raise NotImplementedError("Subclasses must override/implement this method") - - def GetJinjaParameters(self): - """Returns default constructor parameters for the jinja environment.""" - return {} - - def GetGlobals(self): - """Returns global mappings for the template generation.""" - return {} diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py b/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py index adf9cf78a6..86ea0eac0b 100644 --- a/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py +++ b/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py @@ -30,16 +30,12 @@ except ImportError: import jinja2 -def ApplyTemplate(mojo_generator, base_dir, path_to_template, params, - filters=None, **kwargs): +def ApplyTemplate(base_dir, path_to_template, params, filters=None, **kwargs): template_directory, template_name = os.path.split(path_to_template) path_to_templates = os.path.join(base_dir, template_directory) loader = jinja2.FileSystemLoader([path_to_templates]) - final_kwargs = dict(mojo_generator.GetJinjaParameters()) - final_kwargs.update(kwargs) jinja_env = jinja2.Environment(loader=loader, keep_trailing_newline=True, - **final_kwargs) - jinja_env.globals.update(mojo_generator.GetGlobals()); + **kwargs) if filters: jinja_env.filters.update(filters) template = jinja_env.get_template(template_name) @@ -52,8 +48,7 @@ def UseJinja(path_to_template, **kwargs): def RealDecorator(generator): def GeneratorInternal(*args, **kwargs2): parameters = generator(*args, **kwargs2) - return ApplyTemplate(args[0], base_dir, path_to_template, parameters, - **kwargs) + return ApplyTemplate(base_dir, path_to_template, parameters, **kwargs) GeneratorInternal.func_name = generator.func_name return GeneratorInternal return RealDecorator |