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