{% from "macros.tmpl" import license %}
{{ license() }}

#ifndef V8{{namespace}}ElementWrapperFactory_h
#define V8{{namespace}}ElementWrapperFactory_h

#include "bindings/core/v8/V8{{namespace}}Element.h"
#include "bindings/core/v8/V8{{fallback_js_interface}}.h"
#include <v8.h>

namespace blink {

class {{namespace}}Element;

const WrapperTypeInfo* findWrapperTypeFor{{namespace}}TagName(const AtomicString& name);

v8::Handle<v8::Object> createV8{{namespace}}Wrapper({{namespace}}Element*, v8::Handle<v8::Object> creationContext, v8::Isolate*);
inline v8::Handle<v8::Object> createV8{{namespace}}DirectWrapper({{namespace}}Element* element, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
{
    return V8{{namespace}}Element::createWrapper(element, creationContext, isolate);
}
inline v8::Handle<v8::Object> createV8{{namespace}}FallbackWrapper({{fallback_js_interface}}* element, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
{
    return V8{{fallback_js_interface}}::createWrapper(element, creationContext, isolate);
}

}

#endif
