aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings/codegen/CodegenRust.py
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2014-04-21 20:19:32 -0400
committerMs2ger <ms2ger@gmail.com>2014-05-27 20:43:48 +0200
commit2d6153772cc316be229d68e4d267600da406fcd4 (patch)
tree660e36fb22e5a842c67719f1593aa800b367a4f1 /src/components/script/dom/bindings/codegen/CodegenRust.py
parent2717ab65ecae6cf4ab38b6c1b9ea3f02d4913252 (diff)
downloadservo-2d6153772cc316be229d68e4d267600da406fcd4.tar.gz
servo-2d6153772cc316be229d68e4d267600da406fcd4.zip
Add stubs for inline event handler manipulation.
Diffstat (limited to 'src/components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r--src/components/script/dom/bindings/codegen/CodegenRust.py23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py
index a749bbce65e..9fca81cd287 100644
--- a/src/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/src/components/script/dom/bindings/codegen/CodegenRust.py
@@ -705,17 +705,17 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None,
"rooting issues")
# XXXbz we're going to assume that callback types are always
# nullable and always have [TreatNonCallableAsNull] for now.
- haveCallable = "${val}.isObject() && JS_ObjectIsCallable(cx, &${val}.toObject())"
+ haveCallable = "${val}.is_object() && JS_ObjectIsCallable(cx, ${val}.to_object()) != 0"
if defaultValue is not None:
assert(isinstance(defaultValue, IDLNullValue))
haveCallable = "${haveValue} && " + haveCallable
return (
"if (%s) {\n"
- " ${declName} = &${val}.toObject();\n"
+ " ${val}.to_object()\n"
"} else {\n"
- " ${declName} = NULL;\n"
+ " ptr::mut_null()\n"
"}" % haveCallable,
- CGGeneric("JSObject*"), None, needsRooting)
+ CGGeneric("*mut JSObject"), needsRooting)
if type.isAny():
assert not isEnforceRange and not isClamp
@@ -1346,6 +1346,14 @@ class CGIfWrapper(CGWrapper):
CGWrapper.__init__(self, CGIndenter(child), pre=pre.define(),
post="\n}")
+class CGTemplatedType(CGWrapper):
+ def __init__(self, templateName, child, isConst=False, isReference=False):
+ const = "const " if isConst else ""
+ pre = "%s%s<" % (const, templateName)
+ ref = "&" if isReference else ""
+ post = ">%s" % ref
+ CGWrapper.__init__(self, child, pre=pre, post=post)
+
class CGNamespace(CGWrapper):
def __init__(self, namespace, child, public=False):
pre = "%smod %s {\n" % ("pub " if public else "", namespace)
@@ -3128,7 +3136,7 @@ class ClassMember(ClassItem):
ClassItem.__init__(self, name, visibility)
def declare(self, cgClass):
- return '%s: %s,\n' % (self.name, self.type)
+ return '%s %s: %s,\n' % (self.visibility, self.name, self.type)
def define(self, cgClass):
if not self.static:
@@ -4357,7 +4365,7 @@ class CGNativeMember(ClassMethod):
elif type.isAny():
typeDecl, template = "JS::Value", "return ${declName};"
elif type.isObject():
- typeDecl, template = "JSObject*", "return ${declName};"
+ typeDecl, template = "*JSObject", "return ${declName};"
elif type.isSpiderMonkeyInterface():
if type.nullable():
returnCode = "return ${declName}.IsNull() ? nullptr : ${declName}.Value().Obj();"
@@ -4561,7 +4569,7 @@ class CGNativeMember(ClassMethod):
elif optional:
# Note: All variadic args claim to be optional, but we can just use
# empty arrays to represent them not being present.
- decl = CGTemplatedType("Optional", decl)
+ decl = CGTemplatedType("Option", decl)
ref = True
return (decl, ref)
@@ -4816,6 +4824,7 @@ class CallbackMember(CGNativeMember):
def getResultConversion(self):
replacements = {
"val": "rval",
+ "declName": "rvalDecl",
}
if isJSImplementedDescriptor(self.descriptorProvider):