Mercurial > projects > dstep
diff dstep/objc/bridge/Capsule.d @ 2:9fd439a28ce3
Adapted the scripts for the new bridge + a lot more
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sun, 05 Jul 2009 17:16:19 +0200 |
parents | 033d260cfc9b |
children | 19885b43130e |
line wrap: on
line diff
--- a/dstep/objc/bridge/Capsule.d Thu Jun 18 22:00:13 2009 +0200 +++ b/dstep/objc/bridge/Capsule.d Sun Jul 05 17:16:19 2009 +0200 @@ -24,6 +24,7 @@ import dstep.internal.String; import dstep.objc.bridge.Bridge; +import dstep.objc.bridge.Type; import dstep.objc.bridge.TypeEncoding; import dstep.objc.bridge.Wrapper; import dstep.objc.message; @@ -33,15 +34,6 @@ import mambo.io; -template ObjcType (T) -{ - static if (needsEncapsulation!(T)) - alias id ObjcType; - - else - alias T ObjcType; -} - Class capsuleClass () { if (!Capsule.capsuleClass) @@ -119,17 +111,8 @@ return cls.getInstanceVariable!(Bridge.dObjectVar) !is null; } -template needsEncapsulation (T) -{ - static if (is(T == class)) - const needsEncapsulation = true; - - else - const needsEncapsulation = false; -} - ObjcType!(T) encapsule (T) (T value) -{ +{ static if (needsEncapsulation!(T)) { if (!value) @@ -145,28 +128,25 @@ return value; } -template decapsule (T) +T decapsule (T) (ObjcType!(T) value) { - T decapsule (ObjcType!(T) value) + static if (needsEncapsulation!(T)) { - static if (needsEncapsulation!(T)) + if (isCapsule(value)) + return cast(T) Bridge.getDObject(value); + + else { - if (isCapsule(value)) - return cast(T) Bridge.getDObject(value); + static if (is(T : ObjcWrapper)) + new T(value); else - { - static if (is(T : ObjcWrapper)) - new T(value); - - else - return null; - } + return null; } - - else - return value; } + + else + return value; } private id encapsuleString (string str)