blob: 9c49c24788e21f9c8b5e8d0d489f89c11b3ce093 [file] [log] [blame]
{#
# Copyright 2017 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#}
{% extends "callback-interface-base.h.template" %}
{% block includes %}
{{ super() }}
#include "cobalt/script/v8c/scoped_persistent.h"
{% endblock includes %}
{% block implementation %}
{% for component in components %}
namespace {{component}} {
{% endfor %}
class {{binding_class}} : public script::v8c::ScopedPersistent<v8::Value>,
public {{impl_class}} {
public:
typedef {{impl_class}} BaseType;
{{binding_class}}() {}
{{binding_class}}(v8::Isolate* isolate, v8::Local<v8::Value> handle)
: ScopedPersistent(isolate, handle), isolate_(isolate) {}
{% for operation in operations %}
{% for overload in operation.overloads %}
{{overload.type}} {{overload.name}}(
const scoped_refptr<script::Wrappable>& callback_this,
{% for arg in overload.arguments %}
{{arg.arg_type}} {{arg.name}},
{% endfor %}
bool* had_exception) const override;
{% endfor %}
{% endfor %}
private:
v8::Isolate* isolate_;
};
{% for component in components|reverse %}
} // namespace {{component}}
{% endfor %}
namespace cobalt {
namespace script {
// Explicit instantiation of CallbackInterfaceTraits struct so we can infer
// the type of the generated class from the type of the callback interface.
template<>
struct CallbackInterfaceTraits<{{fully_qualified_impl_class}}> {
typedef {{fully_qualified_binding_class}} V8cCallbackInterfaceClass;
};
} // namespace script
} // namespace cobalt
{% endblock implementation %}