blob: 6d569123deac6cb02d47c201f3486f9b9060544b [file] [log] [blame]
// 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.
#include "sky/engine/config.h"
#include "{{dart_class}}.h"
{% for filename in cpp_includes %}
#include "{{filename}}"
{% endfor %}
namespace blink {
static void RefObject(DartWrappable* impl) {
static_cast<{{cpp_class}}*>(impl)->ref();
}
static void DerefObject(DartWrappable* impl) {
static_cast<{{cpp_class}}*>(impl)->deref();
}
static const DartWrapperInfo kDartWrapperInfo = {
"{{interface_name}}",
sizeof({{cpp_class}}),
&RefObject,
&DerefObject,
};
const DartWrapperInfo& {{cpp_class}}::dart_wrapper_info_ = kDartWrapperInfo;
namespace {{dart_class}}Internal {
{% from 'methods_cpp.template' import generate_constructor, generate_event_constructor, generate_method, method_callback, overload_resolution_method with context %}
{# Constructors #}
{% for constructor in constructors %}
{{generate_constructor(constructor, constructor.number_of_arguments)}}
{% endfor %}
{% block overloaded_constructor %}{% endblock %}
{% if named_constructor %}
{{generate_constructor(named_constructor, named_constructor.number_of_arguments)}}
{% endif %}
{% if has_event_constructor %}
{{generate_event_constructor()}}
{% endif %}
{# Attributes getters/setters. #}
{% from 'attributes_cpp.template' import attribute_getter, attribute_getter_callback,
attribute_setter, attribute_setter_callback
with context %}
{% for attribute in attributes %}
{% if not attribute.has_custom_getter %}
{{attribute_getter(cpp_class, attribute)}}
{% endif %}
{# FIXME I'm disabling put_forwards for now since we didn't support it before #}
{# https://code.google.com/p/dart/issues/detail?id=18784 #}
{# {% if not attribute.has_custom_setter and (not attribute.is_read_only or attribute.put_forwards) %}#}
{% if not attribute.has_custom_setter and not attribute.is_read_only %}
{{attribute_setter(cpp_class, attribute)}}
{% endif %}
{% endfor %}
{# Methods #}
{% for method in methods %}
{% if not method.is_custom and not method.suppressed %}
{{generate_method(method, method.number_of_arguments)}}
{% endif %}
{% if method.overloads %}
{{overload_resolution_method(method)}}
{% endif %}
{% endfor %}
{% block named_property_getter %}{% endblock %}
{% block named_property_setter %}{% endblock %}
{% block indexed_property_getter %}{% endblock %}
}
Dart_NativeFunction {{dart_class}}::Resolver(Dart_Handle nameHandle, int argumentCount, bool* autoSetupScope)
{
String name = StringFromDart(nameHandle);
{% from 'methods_cpp.template' import generate_resolver_constructor with context %}
{% from 'methods_cpp.template' import generate_resolver_event_constructor with context %}
{# Resolver Constructors #}
{% for constructor in constructors %}
{{generate_resolver_constructor(dart_class, interface_name, constructor) | indent(4)}}
{% endfor %}
{% from 'methods_cpp.template' import generate_resolver_custom_constructor with context %}
{# Resolver Custom Constructors #}
{% for constructor in custom_constructors %}
{{generate_resolver_constructor(dart_class, interface_name, constructor) | indent(4)}}
{% endfor %}
{% if named_constructor %}
{{generate_resolver_constructor(dart_class, interface_name, named_constructor) | indent(4)}}
{% endif %}
{% if has_event_constructor %}
{{generate_resolver_event_constructor(dart_class, interface_name) | indent(4)}}
{% endif %}
{# Resolver Attributes #}
{% from 'attributes_cpp.template' import generate_attribute_resolver_body %}
{% for attribute in attributes %}
{{generate_attribute_resolver_body(dart_class, interface_name, attribute) | indent(4)}}
{% endfor %}
{# Resolver Methods #}
{% from 'methods_cpp.template' import generate_resolver_body with context %}
{% for method in methods if not method.suppressed %}
{{generate_resolver_body(dart_class, interface_name, method) | indent(4)}}
{% endfor %}
{# Special operations (methods) #}
{# TODO(terry): Only emit indexed getter for DataTransferItemList; emit for interfaces. #}
{% block indexed_property_getter_resolver %}{% endblock %}
{% block named_property_getter_resolver %}{% endblock %}
{% block named_property_setter_resolver %}{% endblock %}
return 0;
}
const uint8_t* {{dart_class}}::Symbolizer(Dart_NativeFunction native_function)
{
{% from 'methods_cpp.template' import generate_symbolizer_constructor with context %}
{% for constructor in constructors %}
{{generate_symbolizer_constructor(dart_class, interface_name, constructor) | indent(4)}}
{% endfor %}
{% for constructor in custom_constructors %}
{{generate_symbolizer_constructor(dart_class, interface_name, constructor) | indent(4)}}
{% endfor %}
{% if named_constructor %}
{{generate_symbolizer_constructor(dart_class, interface_name, named_constructor) | indent(4)}}
{% endif %}
{% from 'attributes_cpp.template' import generate_attribute_symbolizer_body %}
{% for attribute in attributes %}
{{generate_attribute_symbolizer_body(dart_class, interface_name, attribute) | indent(4)}}
{% endfor %}
{% from 'methods_cpp.template' import generate_symbolizer_body with context %}
{% for method in methods if not method.suppressed %}
{{generate_symbolizer_body(dart_class, interface_name, method) | indent(4)}}
{% endfor %}
{% block generate_symbolizer_named_property_getter %}{% endblock %}
{% block generate_symbolizer_named_property_setter %}{% endblock %}
{% block generate_symbolizer_indexed_property_getter %}{% endblock %}
return 0;
}
} // namespace blink