// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // WARNING: Do not edit - generated code. part of dart.sky; {% macro args_macro(args) -%} {%- for arg in args -%} {%- if arg.is_optional and (loop.first or not args[arg.index-1].is_optional) -%} {{ '{' if arg.is_named else '[' }} {%- endif -%} {{ arg.dart_type }} {{ arg.name }} {%- if arg.is_optional %} {{ ':' if arg.is_named else '='}} {{ arg.dart_default_value }} {#- TODO(eseidel): This does not support having both optional and named arguments! (then again, neither does Dart, currently) -#} {%- if loop.last -%}{{ '}' if arg.is_named else ']' }}{%- endif -%} {%- endif -%} {%- if not loop.last %}, {% endif %} {%- endfor -%} {%- endmacro -%} {%- set prefix = "_" if private_dart else "" -%} {% if not constructors and not custom_constructors %}abstract {% endif -%} class {{prefix}}{{interface_name}} extends {{ parent_interface if parent_interface else 'NativeFieldWrapperClass2' }} { // Constructors {# TODO(eseidel): We only ever have one constructor. #} {%- for constructor in constructors + custom_constructors %} void _constructor( {%- for arg in constructor.arguments -%} {{ arg.dart_type }} {{ arg.name }}{% if not loop.last %}, {% endif %} {%- endfor -%} ) native "{{interface_name}}_constructorCallback"; {{prefix}}{{interface_name}}({{ args_macro(constructor.arguments) }}) { _constructor( {%- for arg in constructor.arguments -%} {{ arg.name }}{% if not loop.last %}, {% endif %} {%- endfor -%} ); } {% endfor %} // Attributes {% for attribute in attributes %} {{ attribute.dart_type }} get {{prefix}}{{ attribute.name }} native "{{interface_name}}_{{ attribute.name }}_Getter"; {% if not attribute.is_read_only %} void set {{prefix}}{{ attribute.name }}({{ attribute.dart_type }} value) native "{{interface_name}}_{{ attribute.name }}_Setter"; {% endif %} {% endfor %} // Methods {% for method in methods %} {{method.dart_type}} {{prefix}}{{method.name}}({{ args_macro(method.arguments)}}) native "{{interface_name}}_{{ method.name }}_Callback"; {% endfor %} // Operators {% if named_property_getter %} String operator[](String name) native "{{interface_name}}___getter___Callback"; {% endif %} {% if named_property_setter %} void operator[]=(String name, String value) native "{{interface_name}}___setter___Callback"; {% endif %} }