Mercurial > projects > dstep
diff dstep/objc/bridge/Capsule.d @ 24:ab33fc0c3fc1
Fixed the implementation for the methods in Capsule. Changed a method name in objc_class
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Wed, 10 Feb 2010 19:24:32 +0100 |
parents | 19885b43130e |
children | b9de51448c6b |
line wrap: on
line diff
--- 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); } }