diff options
author | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-18 04:50:10 +0000 |
---|---|---|
committer | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-18 04:50:10 +0000 |
commit | 1f6a0aa92f0206545223d1c830b0867f01f273d0 (patch) | |
tree | 7a99c5417f9c2156e3fbe2f396f4cb91a4aa72c3 /mojo | |
parent | 341c56daf077ee20e37056a24f0678cb34333ab8 (diff) | |
download | chromium_src-1f6a0aa92f0206545223d1c830b0867f01f273d0.zip chromium_src-1f6a0aa92f0206545223d1c830b0867f01f273d0.tar.gz chromium_src-1f6a0aa92f0206545223d1c830b0867f01f273d0.tar.bz2 |
Pull struct and interface definitions out of module.js.tmpl into their own files.
Review URL: https://codereview.chromium.org/117673002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@241488 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'mojo')
4 files changed, 108 insertions, 104 deletions
diff --git a/mojo/public/bindings/generators/js_templates/interface_definition.tmpl b/mojo/public/bindings/generators/js_templates/interface_definition.tmpl new file mode 100644 index 0000000..fd8ea47 --- /dev/null +++ b/mojo/public/bindings/generators/js_templates/interface_definition.tmpl @@ -0,0 +1,46 @@ +{%- for method in interface.methods %} + var k{{interface.name}}_{{method.name}}_Name = {{method.ordinal}}; +{%- endfor %} + + function {{interface.name}}Proxy(receiver) { + this.receiver_ = receiver; + } + +{%- for method in interface.methods %} + {{interface.name}}Proxy.prototype.{{method.name|stylize_method}} = function( +{%- for parameter in method.parameters -%} +{{parameter.name}}{% if not loop.last %}, {% endif %} +{%- endfor %}) { + var params = new {{interface.name}}_{{method.name}}_Params(); +{%- for parameter in method.parameters %} + params.{{parameter.name}} = {{parameter.name}}; +{%- endfor %} + + var builder = new codec.MessageBuilder( + k{{interface.name}}_{{method.name}}_Name, + codec.align({{interface.name}}_{{method.name}}_Params.encodedSize)); + builder.encodeStruct({{interface.name}}_{{method.name}}_Params, params); + var message = builder.finish(); + this.receiver_.accept(message); + }; +{%- endfor %} + + function {{interface.name}}Stub() { + } + + {{interface.name}}Stub.prototype.accept = function(message) { + var reader = new codec.MessageReader(message); + switch (reader.messageName) { +{%- for method in interface.methods %} + case k{{interface.name}}_{{method.name}}_Name: + var params = reader.decodeStruct({{interface.name}}_{{method.name}}_Params); + this.{{method.name|stylize_method}}( +{%- for parameter in method.parameters -%} +params.{{parameter.name}}{% if not loop.last %}, {% endif %} +{%- endfor %}); + return true; +{%- endfor %} + default: + return false; + } + }; diff --git a/mojo/public/bindings/generators/js_templates/module.js.tmpl b/mojo/public/bindings/generators/js_templates/module.js.tmpl index 985a77b..7483b88 100644 --- a/mojo/public/bindings/generators/js_templates/module.js.tmpl +++ b/mojo/public/bindings/generators/js_templates/module.js.tmpl @@ -6,9 +6,9 @@ define([ "mojo/apps/js/bindings/core", "mojo/apps/js/bindings/codec", ], function(core, codec) { -{%- for enum in enums %} - // Enum: {{enum.name}} +{#--- Enums #} +{% for enum in enums %} var {{enum.name}} = { {%- set next_value = 0 %} {%- for field in enum.fields %} @@ -19,113 +19,16 @@ define([ {%- set next_value = next_value + 1 %} {%- endfor %} }; -{%- endfor %} +{% endfor %} +{#--- Struct definitions #} {%- for struct in structs %} - - function {{struct.name}}() { -{%- for packed_field in struct.packed.packed_fields %} - this.{{packed_field.field.name}} = {{packed_field.field|default_value}}; -{%- endfor %} - } - - {{struct.name}}.encodedSize = codec.kStructHeaderSize + {{struct.packed|payload_size}}; - - {{struct.name}}.decode = function(decoder) { - var packed; - var val = new {{struct.name}}(); - var numberOfBytes = decoder.read32(); - var numberOfFields = decoder.read32(); -{%- for byte in struct.bytes %} -{%- if byte.packed_fields|length > 1 %} - packed = decoder.read8(); -{%- for packed_field in byte.packed_fields %} - val.{{packed_field.field.name}} = (packed >> {{packed_field.bit}}) & 1 ? true : false; -{%- endfor %} -{%- else %} -{%- for packed_field in byte.packed_fields %} - val.{{packed_field.field.name}} = decoder.{{packed_field.field.kind|decode_snippet}}; -{%- endfor %} -{%- endif %} -{%- if byte.is_padding %} - decoder.skip(1); -{%- endif %} -{%- endfor %} - return val; - }; - - {{struct.name}}.encode = function(encoder, val) { - var packed; - encoder.write32({{struct.name}}.encodedSize); - encoder.write32({{struct.packed.packed_fields|length}}); - -{%- for byte in struct.bytes %} -{%- if byte.packed_fields|length > 1 %} - packed = 0; -{%- for packed_field in byte.packed_fields %} - packed |= (val.{{packed_field.field.name}} & 1) << {{packed_field.bit}} -{%- endfor %} - encoder.write8(packed); -{%- else %} -{%- for packed_field in byte.packed_fields %} - encoder.{{packed_field.field.kind|encode_snippet}}val.{{packed_field.field.name}}); -{%- endfor %} -{%- endif %} -{%- if byte.is_padding %} - encoder.skip(1); -{%- endif %} -{%- endfor %} - }; +{% include "struct_definition.tmpl" %} {%- endfor %} +{#--- Interface definitions #} {%- for interface in interfaces %} -{%- for method in interface.methods %} - var k{{interface.name}}_{{method.name}}_Name = {{method.ordinal}}; -{%- endfor %} - - function {{interface.name}}Proxy(receiver) { - this.receiver_ = receiver; - } - -{%- for method in interface.methods %} - {{interface.name}}Proxy.prototype.{{method.name|stylize_method}} = function( -{%- for parameter in method.parameters -%} -{{parameter.name}}{% if not loop.last %}, {% endif %} -{%- endfor %}) { - var params = new {{interface.name}}_{{method.name}}_Params(); -{%- for parameter in method.parameters %} - params.{{parameter.name}} = {{parameter.name}}; -{%- endfor %} - - var builder = new codec.MessageBuilder( - k{{interface.name}}_{{method.name}}_Name, - codec.align({{interface.name}}_{{method.name}}_Params.encodedSize)); - builder.encodeStruct({{interface.name}}_{{method.name}}_Params, params); - var message = builder.finish(); - this.receiver_.accept(message); - }; -{%- endfor %} - - function {{interface.name}}Stub() { - } - - {{interface.name}}Stub.prototype.accept = function(message) { - var reader = new codec.MessageReader(message); - switch (reader.messageName) { -{%- for method in interface.methods %} - case k{{interface.name}}_{{method.name}}_Name: - var params = reader.decodeStruct({{interface.name}}_{{method.name}}_Params); - this.{{method.name|stylize_method}}( -{%- for parameter in method.parameters -%} -params.{{parameter.name}}{% if not loop.last %}, {% endif %} -{%- endfor %}); - return true; -{%- endfor %} - default: - return false; - } - }; - +{%- include "interface_definition.tmpl" %} {%- endfor %} var exports = {}; diff --git a/mojo/public/bindings/generators/js_templates/struct_definition.tmpl b/mojo/public/bindings/generators/js_templates/struct_definition.tmpl new file mode 100644 index 0000000..0d8d35c --- /dev/null +++ b/mojo/public/bindings/generators/js_templates/struct_definition.tmpl @@ -0,0 +1,53 @@ + function {{struct.name}}() { +{%- for packed_field in struct.packed.packed_fields %} + this.{{packed_field.field.name}} = {{packed_field.field|default_value}}; +{%- endfor %} + } + + {{struct.name}}.encodedSize = codec.kStructHeaderSize + {{struct.packed|payload_size}}; + + {{struct.name}}.decode = function(decoder) { + var packed; + var val = new {{struct.name}}(); + var numberOfBytes = decoder.read32(); + var numberOfFields = decoder.read32(); +{%- for byte in struct.bytes %} +{%- if byte.packed_fields|length > 1 %} + packed = decoder.read8(); +{%- for packed_field in byte.packed_fields %} + val.{{packed_field.field.name}} = (packed >> {{packed_field.bit}}) & 1 ? true : false; +{%- endfor %} +{%- else %} +{%- for packed_field in byte.packed_fields %} + val.{{packed_field.field.name}} = decoder.{{packed_field.field.kind|decode_snippet}}; +{%- endfor %} +{%- endif %} +{%- if byte.is_padding %} + decoder.skip(1); +{%- endif %} +{%- endfor %} + return val; + }; + + {{struct.name}}.encode = function(encoder, val) { + var packed; + encoder.write32({{struct.name}}.encodedSize); + encoder.write32({{struct.packed.packed_fields|length}}); + +{%- for byte in struct.bytes %} +{%- if byte.packed_fields|length > 1 %} + packed = 0; +{%- for packed_field in byte.packed_fields %} + packed |= (val.{{packed_field.field.name}} & 1) << {{packed_field.bit}} +{%- endfor %} + encoder.write8(packed); +{%- else %} +{%- for packed_field in byte.packed_fields %} + encoder.{{packed_field.field.kind|encode_snippet}}val.{{packed_field.field.name}}); +{%- endfor %} +{%- endif %} +{%- if byte.is_padding %} + encoder.skip(1); +{%- endif %} +{%- endfor %} + }; diff --git a/mojo/public/bindings/mojom_bindings_generator.gypi b/mojo/public/bindings/mojom_bindings_generator.gypi index 45efe76..4c0d514a 100644 --- a/mojo/public/bindings/mojom_bindings_generator.gypi +++ b/mojo/public/bindings/mojom_bindings_generator.gypi @@ -39,7 +39,9 @@ '<(DEPTH)/mojo/public/bindings/generators/cpp_templates/struct_serialization_traits', '<(DEPTH)/mojo/public/bindings/generators/cpp_templates/template_declaration', '<(DEPTH)/mojo/public/bindings/generators/cpp_templates/wrapper_class_declaration', + '<(DEPTH)/mojo/public/bindings/generators/js_templates/interface_definition.tmpl', '<(DEPTH)/mojo/public/bindings/generators/js_templates/module.js.tmpl', + '<(DEPTH)/mojo/public/bindings/generators/js_templates/struct_definition.tmpl', '<(DEPTH)/mojo/public/bindings/generators/mojom.py', '<(DEPTH)/mojo/public/bindings/generators/mojom_cpp_generator.py', '<(DEPTH)/mojo/public/bindings/generators/mojom_data.py', |