# HG changeset patch # User Jacob Carlborg # Date 1265826272 -3600 # Node ID ab33fc0c3fc11208a5370c867e708634e98b9a3e # Parent 420969b22201069ba1ed055ae816c691ec083ad0 Fixed the implementation for the methods in Capsule. Changed a method name in objc_class diff -r 420969b22201 -r ab33fc0c3fc1 dstep/objc/bridge/Capsule.d --- a/dstep/objc/bridge/Capsule.d Wed Feb 10 17:29:12 2010 +0100 +++ b/dstep/objc/bridge/Capsule.d Wed Feb 10 19:24:32 2010 +0100 @@ -59,7 +59,14 @@ } body { - return encapsuleString(decapsule!(Object)(self).toString); + if (auto object = decapsule!(Object)(self)) + return encapsuleString(object.toString); + + objc_super superObject; + superObject.cls = .capsuleClass.getSuperclass; + superObject.receiver = self; + + return Bridge.invokeObjcSuperMethod!(id, "description")(&superObject); } static hash_t hash (id self, SEL op) @@ -69,17 +76,31 @@ } body { - return decapsule!(Object)(self).toHash; + if (auto object = decapsule!(Object)(self)) + return object.toHash; + + objc_super superObject; + superObject.cls = .capsuleClass.getSuperclass; + superObject.receiver = self; + + return Bridge.invokeObjcSuperMethod!(hash_t, "hash")(&superObject); } - static byte isEqual (id self, SEL op, Object object) + static bool isEqual (id self, SEL op, Object other) in { assert(isCapsule(self)); } body { - return decapsule!(Object)(self) == object; + if (auto object = decapsule!(Object)(self)) + return cast(bool) (object == other); + + objc_super superObject; + superObject.cls = .capsuleClass.getSuperclass; + superObject.receiver = self; + + return Bridge.invokeObjcSuperMethod!(bool, "isEqual:", Object)(&superObject, other); } } diff -r 420969b22201 -r ab33fc0c3fc1 dstep/objc/runtime.d --- a/dstep/objc/runtime.d Wed Feb 10 17:29:12 2010 +0100 +++ b/dstep/objc/runtime.d Wed Feb 10 19:24:32 2010 +0100 @@ -187,7 +187,7 @@ return bindings.class_getSuperclass(this); } - Class setSuperClass (Class newSuper) + Class setSuperclass (Class newSuper) { return bindings.class_setSuperclass(this, newSuper); }