From ac46cc6047a2297bdc578c09dfa290b32f2b61d3 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Mon, 31 Mar 2014 12:13:54 +0200 Subject: Implement FromJSValConvertible for JS. --- .../script/dom/bindings/codegen/CodegenRust.py | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/components/script/dom/bindings/codegen/CodegenRust.py') diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index c1d4ac46aaa..e9a85ac0b23 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -1920,6 +1920,32 @@ class CGWrapMethod(CGAbstractMethod): raw.mut_reflector().set_jsobject(obj); return raw;""" % CreateBindingJSObject(self.descriptor) + +class CGIDLInterface(CGThing): + """ + Class for codegen of an implementation of the IDLInterface trait. + """ + def __init__(self, descriptor): + CGThing.__init__(self) + self.descriptor = descriptor + + def define(self): + replacer = { + 'type': self.descriptor.name, + 'depth': self.descriptor.interface.inheritanceDepth(), + } + return string.Template(""" +impl IDLInterface for ${type} { + fn get_prototype_id(_: Option<${type}>) -> PrototypeList::id::ID { + PrototypeList::id::${type} + } + fn get_prototype_depth(_: Option<${type}>) -> uint { + ${depth} + } +} +""").substitute(replacer) + + class CGAbstractExternMethod(CGAbstractMethod): """ Abstract base class for codegen of implementation-only (no @@ -4080,6 +4106,8 @@ class CGDescriptor(CGThing): cgThings.append(CGWrapMethod(descriptor)) + cgThings.append(CGIDLInterface(descriptor)) + cgThings = CGList(cgThings, "\n") cgThings = CGWrapper(cgThings, pre='\n', post='\n') #self.cgRoot = CGWrapper(CGNamespace(toBindingNamespace(descriptor.name), @@ -4496,6 +4524,7 @@ class CGBindingRoot(CGThing): 'dom::bindings::callback::{CallSetup,ExceptionHandling}', 'dom::bindings::callback::{WrapCallThisObject}', 'dom::bindings::conversions::{FromJSValConvertible, ToJSValConvertible}', + 'dom::bindings::conversions::IDLInterface', 'dom::bindings::conversions::{Default, Empty}', 'dom::bindings::codegen::*', 'dom::bindings::codegen::UnionTypes::*', -- cgit v1.2.3