comparison dstep/foundation/NSRunLoop.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 7ff919f595d5
children b9de51448c6b
comparison
equal deleted inserted replaced
15:7ff919f595d5 16:19885b43130e
7 module dstep.foundation.NSRunLoop; 7 module dstep.foundation.NSRunLoop;
8 8
9 import dstep.corefoundation.CFRunLoop; 9 import dstep.corefoundation.CFRunLoop;
10 import dstep.foundation.NSArray; 10 import dstep.foundation.NSArray;
11 import dstep.foundation.NSDate; 11 import dstep.foundation.NSDate;
12 import dstep.foundation.NSObjCRuntime;
12 import dstep.foundation.NSObject; 13 import dstep.foundation.NSObject;
13 import dstep.foundation.NSPort; 14 import dstep.foundation.NSPort;
15 import dstep.foundation.NSString;
14 import dstep.foundation.NSTimer; 16 import dstep.foundation.NSTimer;
15 import dstep.objc.bridge.Bridge; 17 import dstep.objc.bridge.Bridge;
16 import dstep.objc.objc : id; 18 import dstep.objc.objc;
17 19
18 import bindings = dstep.foundation.NSRunLoop_bindings; 20 import bindings = dstep.foundation.NSRunLoop_bindings;
19 21
20 const NSString NSDefaultRunLoopMode; 22 private
21 const NSString NSRunLoopCommonModes; 23 {
22 24 NSString NSDefaultRunLoopMode_;
23 static this () 25 NSString NSRunLoopCommonModes_;
24 { 26 }
25 NSDefaultRunLoopMode = new NSString(bindings.NSDefaultRunLoopMode); 27
26 NSRunLoopCommonModes = new NSString(bindings.NSRunLoopCommonModes); 28 NSString NSDefaultRunLoopMode ()
27 } 29 {
30 if (NSDefaultRunLoopMode_)
31 return NSDefaultRunLoopMode_;
32
33 return NSDefaultRunLoopMode_ = new NSString(bindings.NSDefaultRunLoopMode);
34 }
35
36 NSString NSRunLoopCommonModes ()
37 {
38 if (NSRunLoopCommonModes_)
39 return NSRunLoopCommonModes_;
40
41 return NSRunLoopCommonModes_ = new NSString(bindings.NSRunLoopCommonModes);
42 }
43
44 const TNSOrderedPerform = `
45
46 void performSelector (SEL aSelector, Object target, Object arg, NSUInteger order, NSArray modes)
47 {
48 return invokeObjcSelf!(void, "performSelector:target:argument:order:modes:", SEL, Object, Object, NSUInteger, NSArray)(aSelector, target, arg, order, modes);
49 }
50
51 void cancelPerformSelector (SEL aSelector, Object target, Object arg)
52 {
53 return invokeObjcSelf!(void, "cancelPerformSelector:target:argument:", SEL, Object, Object)(aSelector, target, arg);
54 }
55
56 void cancelPerformSelectorsWithTarget (Object target)
57 {
58 return invokeObjcSelf!(void, "cancelPerformSelectorsWithTarget:", Object)(target);
59 }
60 `;
61
62 const TNSDelayedPerforming = `
63
64 void performSelector (SEL aSelector, Object anArgument, double delay, NSArray modes)
65 {
66 return invokeObjcSelf!(void, "performSelector:withObject:afterDelay:inModes:", SEL, Object, double, NSArray)(aSelector, anArgument, delay, modes);
67 }
68
69 void performSelector (SEL aSelector, Object anArgument, double delay)
70 {
71 return invokeObjcSelf!(void, "performSelector:withObject:afterDelay:", SEL, Object, double)(aSelector, anArgument, delay);
72 }
73
74 static void cancelPreviousPerformRequestsWithTarget (Object aTarget, SEL aSelector, Object anArgument)
75 {
76 return invokeObjcSelfClass!(void, "cancelPreviousPerformRequestsWithTarget:selector:object:", Object, SEL, Object)(aTarget, aSelector, anArgument);
77 }
78
79 static void cancelPreviousPerformRequestsWithTarget (Object aTarget)
80 {
81 return invokeObjcSelfClass!(void, "cancelPreviousPerformRequestsWithTarget:", Object)(aTarget);
82 }
83
84 //mixin ObjcBindMethod!(performSelector, void, "performSelector:withObject:afterDelay:inModes:", SEL, Object, double, NSArray);
85 //mixin ObjcBindMethod!(performSelector, void, "performSelector:withObject:afterDelay:", SEL, Object, double);
86 //mixin ObjcBindClassMethod!(cancelPreviousPerformRequestsWithTarget, "cancelPreviousPerformRequestsWithTarget:selector:object:");
87 //mixin ObjcBindClassMethod!(cancelPreviousPerformRequestsWithTarget, "cancelPreviousPerformRequestsWithTarget:");
88 `;
89
90 const TNSRunLoopConveniences = `
91
92 void run ()
93 {
94 return invokeObjcSelf!(void, "run");
95 }
96
97 void runUntilDate (NSDate limitDate)
98 {
99 return invokeObjcSelf!(void, "runUntilDate:", NSDate)(limitDate);
100 }
101
102 bool runMode (NSString mode, NSDate limitDate)
103 {
104 return invokeObjcSelf!(bool, "runMode:beforeDate:", NSString, NSDate)(mode, limitDate);
105 }
106
107 void configureAsServer ()
108 {
109 return invokeObjcSelf!(void, "configureAsServer");
110 }
111 `;
28 112
29 class NSRunLoop : NSObject 113 class NSRunLoop : NSObject
30 { 114 {
31 mixin ObjcWrap; 115 mixin (ObjcWrap);
32 mixin TNSOrderedPerform; 116
33 mixin TNSRunLoopConveniences; 117 this ()
118 {
119 super(typeof(this).alloc.init.objcObject);
120 }
121
122 typeof(this) init ()
123 {
124 return invokeObjcSelf!(typeof(this), "init");
125 }
34 126
35 static NSRunLoop currentRunLoop () 127 static NSRunLoop currentRunLoop ()
36 { 128 {
37 return invokeObjcSelfClass!(NSRunLoop, "currentRunLoop"); 129 return invokeObjcSuperClass!(NSRunLoop, "currentRunLoop");
38 } 130 }
39 131
40 static NSRunLoop mainRunLoop () 132 static NSRunLoop mainRunLoop ()
41 { 133 {
42 return invokeObjcSelfClass!(NSRunLoop, "mainRunLoop"); 134 return invokeObjcSuperClass!(NSRunLoop, "mainRunLoop");
43 } 135 }
44 136
45 NSString currentMode () 137 NSString currentMode ()
46 { 138 {
47 return invokeObjcSelf!(NSString, "currentMode"); 139 return invokeObjcSelf!(NSString, "currentMode");
74 166
75 void acceptInputForMode (NSString mode, NSDate limitDate) 167 void acceptInputForMode (NSString mode, NSDate limitDate)
76 { 168 {
77 return invokeObjcSelf!(void, "acceptInputForMode:beforeDate:", NSString, NSDate)(mode, limitDate); 169 return invokeObjcSelf!(void, "acceptInputForMode:beforeDate:", NSString, NSDate)(mode, limitDate);
78 } 170 }
79 } 171
80 172 // TNSOrderedPerform
81 template TNSOrderedPerform ()
82 {
83 void performSelector (SEL aSelector, Object target, Object arg, NSUInteger order, NSArray modes) 173 void performSelector (SEL aSelector, Object target, Object arg, NSUInteger order, NSArray modes)
84 { 174 {
85 return invokeObjcSelf!(void, "performSelector:target:argument:order:modes:", SEL, Object, Object, NSUInteger, NSArray)(aSelector, target, arg, order, modes); 175 return invokeObjcSelf!(void, "performSelector:target:argument:order:modes:", SEL, Object, Object, NSUInteger, NSArray)(aSelector, target, arg, order, modes);
86 } 176 }
87 177
88 void cancelPerformSelector (SEL aSelector, Object target, Object arg) 178 void cancelPerformSelector (SEL aSelector, Object target, Object arg)
89 { 179 {
90 return invokeObjcSelf!(void, "cancelPerformSelector:target:argument:", SEL, Object, Object)(aSelector, target, arg); 180 return invokeObjcSelf!(void, "cancelPerformSelector:target:argument:", SEL, Object, Object)(aSelector, target, arg);
91 } 181 }
92 182
93 void cancelPerformSelectorsWithTarget (Object target) 183 void cancelPerformSelectorsWithTarget (Object target)
94 { 184 {
95 return invokeObjcSelf!(void, "cancelPerformSelectorsWithTarget:", Object)(target); 185 return invokeObjcSelf!(void, "cancelPerformSelectorsWithTarget:", Object)(target);
96 } 186 }
97 } 187
98 188 // TNSRunLoopConveniences
99 template TNSDelayedPerforming ()
100 {
101 void performSelector (SEL aSelector, Object anArgument, double delay, NSArray modes);
102 void performSelector (SEL aSelector, Object anArgument, double delay);
103 static void cancelPreviousPerformRequestsWithTarget (Object aTarget, SEL aSelector, Object anArgument);
104 static void cancelPreviousPerformRequestsWithTarget (Object aTarget);
105 }
106
107 template TNSRunLoopConveniences ()
108 {
109 void run () 189 void run ()
110 { 190 {
111 return invokeObjcSelf!(void, "run"); 191 return invokeObjcSelf!(void, "run");
112 } 192 }
113 193
114 void runUntilDate (NSDate limitDate) 194 void runUntilDate (NSDate limitDate)
115 { 195 {
116 return invokeObjcSelf!(void, "runUntilDate:", NSDate)(limitDate); 196 return invokeObjcSelf!(void, "runUntilDate:", NSDate)(limitDate);
117 } 197 }
118 198
119 bool runMode (NSString mode, NSDate limitDate) 199 bool runMode (NSString mode, NSDate limitDate)
120 { 200 {
121 return invokeObjcSelf!(bool, "runMode:beforeDate:", NSString, NSDate)(mode, limitDate); 201 return invokeObjcSelf!(bool, "runMode:beforeDate:", NSString, NSDate)(mode, limitDate);
122 } 202 }
123 203
124 void configureAsServer () 204 void configureAsServer ()
125 { 205 {
126 return invokeObjcSelf!(void, "configureAsServer"); 206 return invokeObjcSelf!(void, "configureAsServer");
127 } 207 }
128 } 208 }
129