Mercurial > projects > dstep
comparison dstep/foundation/NSPortCoder.d @ 16:19885b43130e
Huge update, the bridge actually works now
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sun, 03 Jan 2010 22:06:11 +0100 |
parents | 89f3c3ef1fd2 |
children | b9de51448c6b |
comparison
equal
deleted
inserted
replaced
15:7ff919f595d5 | 16:19885b43130e |
---|---|
9 import dstep.foundation.NSArray; | 9 import dstep.foundation.NSArray; |
10 import dstep.foundation.NSCoder; | 10 import dstep.foundation.NSCoder; |
11 import dstep.foundation.NSConnection; | 11 import dstep.foundation.NSConnection; |
12 import dstep.foundation.NSPort; | 12 import dstep.foundation.NSPort; |
13 import dstep.objc.bridge.Bridge; | 13 import dstep.objc.bridge.Bridge; |
14 import dstep.objc.objc : id; | 14 import dstep.objc.objc; |
15 | |
16 const TNSDistributedObjects = ` | |
17 | |
18 Class classForPortCoder () | |
19 { | |
20 return invokeObjcSelf!(Class, "classForPortCoder"); | |
21 } | |
22 | |
23 Object replacementObjectForPortCoder (NSPortCoder coder) | |
24 { | |
25 return invokeObjcSelf!(Object, "replacementObjectForPortCoder:", NSPortCoder)(coder); | |
26 } | |
27 | |
28 //mixin ObjcBindMethod!(classForPortCoder, "classForPortCoder"); | |
29 //mixin ObjcBindMethod!(replacementObjectForPortCoder, "replacementObjectForPortCoder:"); | |
30 `; | |
15 | 31 |
16 class NSPortCoder : NSCoder | 32 class NSPortCoder : NSCoder |
17 { | 33 { |
18 mixin ObjcWrap; | 34 mixin (ObjcWrap); |
35 | |
36 this () | |
37 { | |
38 super(typeof(this).alloc.init.objcObject); | |
39 } | |
40 | |
41 typeof(this) init () | |
42 { | |
43 return invokeObjcSelf!(typeof(this), "init"); | |
44 } | |
19 | 45 |
20 bool isBycopy () | 46 bool isBycopy () |
21 { | 47 { |
22 return invokeObjcSelf!(bool, "isBycopy"); | 48 return invokeObjcSelf!(bool, "isBycopy"); |
23 } | 49 } |
42 return invokeObjcSelf!(NSPort, "decodePortObject"); | 68 return invokeObjcSelf!(NSPort, "decodePortObject"); |
43 } | 69 } |
44 | 70 |
45 static Object portCoderWithReceivePort (NSPort rcvPort, NSPort sndPort, NSArray comps) | 71 static Object portCoderWithReceivePort (NSPort rcvPort, NSPort sndPort, NSArray comps) |
46 { | 72 { |
47 return invokeObjcSelfClass!(Object, "portCoderWithReceivePort:sendPort:components:", NSPort, NSPort, NSArray)(rcvPort, sndPort, comps); | 73 return invokeObjcSuperClass!(Object, "portCoderWithReceivePort:sendPort:components:", NSPort, NSPort, NSArray)(rcvPort, sndPort, comps); |
48 } | 74 } |
49 | 75 |
50 Object initWithReceivePort (NSPort rcvPort, NSPort sndPort, NSArray comps) | 76 Object initWithReceivePort (NSPort rcvPort, NSPort sndPort, NSArray comps) |
51 { | 77 { |
52 return invokeObjcSelf!(Object, "initWithReceivePort:sendPort:components:", NSPort, NSPort, NSArray)(rcvPort, sndPort, comps); | 78 return invokeObjcSelf!(Object, "initWithReceivePort:sendPort:components:", NSPort, NSPort, NSArray)(rcvPort, sndPort, comps); |
53 } | 79 } |
54 | 80 |
55 this (NSPort rcvPort, NSPort sndPort, NSArray comps) | 81 this (NSPort rcvPort, NSPort sndPort, NSArray comps) |
56 { | 82 { |
57 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); | 83 typeof(this).alloc.initWithReceivePort(rcvPort, sndPort, comps); |
58 id result = Bridge.invokeObjcMethod!(id, "initWithReceivePort:sendPort:components:", NSPort, NSPort, NSArray)(objcObject, rcvPort, sndPort, comps); | |
59 | |
60 if (result) | |
61 objcObject = ret; | |
62 | |
63 dObject = this; | |
64 } | 84 } |
65 | 85 |
66 void dispatch () | 86 void dispatch () |
67 { | 87 { |
68 return invokeObjcSelf!(void, "dispatch"); | 88 return invokeObjcSelf!(void, "dispatch"); |
69 } | 89 } |
70 } | 90 } |
71 | |
72 template TNSDistributedObjects () | |
73 { | |
74 Class classForPortCoder (); | |
75 Object replacementObjectForPortCoder (NSPortCoder coder); | |
76 } | |
77 |