Mercurial > projects > dstep
comparison dstep/foundation/NSArray.d @ 14:89f3c3ef1fd2
Added the Foundation framework
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Mon, 03 Aug 2009 15:23:15 +0200 |
parents | |
children | 19885b43130e |
comparison
equal
deleted
inserted
replaced
13:4f583f7e242e | 14:89f3c3ef1fd2 |
---|---|
1 /** | |
2 * Copyright: Copyright (c) 2009 Jacob Carlborg. | |
3 * Authors: Jacob Carlborg | |
4 * Version: Initial created: Aug 3, 2009 | |
5 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) | |
6 */ | |
7 module dstep.foundation.NSArray; | |
8 | |
9 import dstep.foundation.NSData; | |
10 import dstep.foundation.NSEnumerator; | |
11 import dstep.foundation.NSIndexSet; | |
12 import dstep.foundation.NSObject; | |
13 import dstep.foundation.NSRange; | |
14 import dstep.foundation.NSString; | |
15 import dstep.foundation.NSURL; | |
16 import dstep.objc.bridge.Bridge; | |
17 import dstep.objc.objc : id; | |
18 | |
19 class NSMutableArray : NSArray | |
20 { | |
21 mixin ObjcWrap; | |
22 mixin TNSExtendedMutableArray; | |
23 mixin TNSMutableArrayCreation; | |
24 | |
25 void addObject (Object anObject) | |
26 { | |
27 return invokeObjcSelf!(void, "addObject:", Object)(anObject); | |
28 } | |
29 | |
30 void insertObject (Object anObject, NSUInteger index) | |
31 { | |
32 return invokeObjcSelf!(void, "insertObject:atIndex:", Object, NSUInteger)(anObject, index); | |
33 } | |
34 | |
35 void removeLastObject () | |
36 { | |
37 return invokeObjcSelf!(void, "removeLastObject"); | |
38 } | |
39 | |
40 void removeObjectAtIndex (NSUInteger index) | |
41 { | |
42 return invokeObjcSelf!(void, "removeObjectAtIndex:", NSUInteger)(index); | |
43 } | |
44 | |
45 void replaceObjectAtIndex (NSUInteger index, Object anObject) | |
46 { | |
47 return invokeObjcSelf!(void, "replaceObjectAtIndex:withObject:", NSUInteger, Object)(index, anObject); | |
48 } | |
49 } | |
50 | |
51 class NSArray : NSObject, INSCopying, INSMutableCopying, INSCoding, INSFastEnumeration | |
52 { | |
53 mixin ObjcWrap; | |
54 mixin TNSArrayCreation; | |
55 mixin TNSExtendedArray; | |
56 mixin TNSSortDescriptorSorting; | |
57 mixin TNSArrayPathExtensions; | |
58 | |
59 NSUInteger count () | |
60 { | |
61 return invokeObjcSelf!(NSUInteger, "count"); | |
62 } | |
63 | |
64 Object objectAtIndex (NSUInteger index) | |
65 { | |
66 return invokeObjcSelf!(Object, "objectAtIndex:", NSUInteger)(index); | |
67 } | |
68 | |
69 Object copyWithZone (NSZone* zone) | |
70 { | |
71 return invokeObjcSelf!(Object, "copyWithZone:", NSZone*)(zone); | |
72 } | |
73 | |
74 Object mutableCopyWithZone (NSZone* zone) | |
75 { | |
76 return invokeObjcSelf!(Object, "mutableCopyWithZone:", NSZone*)(zone); | |
77 } | |
78 | |
79 void encodeWithCoder (NSCoder aCoder) | |
80 { | |
81 return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder); | |
82 } | |
83 | |
84 Object initWithCoder (NSCoder aDecoder) | |
85 { | |
86 return invokeObjcSelf!(Object, "initWithCoder:", NSCoder)(aDecoder); | |
87 } | |
88 | |
89 this (NSCoder aDecoder) | |
90 { | |
91 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); | |
92 id result = Bridge.invokeObjcMethod!(id, "initWithCoder:", NSCoder)(objcObject, aDecoder); | |
93 | |
94 if (result) | |
95 objcObject = ret; | |
96 | |
97 dObject = this; | |
98 } | |
99 | |
100 NSUInteger countByEnumeratingWithState (NSFastEnumerationState* state, id* stackbuf, NSUInteger len) | |
101 { | |
102 return invokeObjcSelf!(NSUInteger, "countByEnumeratingWithState:objects:count:", NSFastEnumerationState*, id*, NSUInteger)(state, stackbuf, len); | |
103 } | |
104 } | |
105 | |
106 template TNSArrayCreation () | |
107 { | |
108 static Object array () | |
109 { | |
110 return invokeObjcSelfClass!(Object, "array"); | |
111 } | |
112 | |
113 static Object arrayWithObject (Object anObject) | |
114 { | |
115 return invokeObjcSelfClass!(Object, "arrayWithObject:", Object)(anObject); | |
116 } | |
117 | |
118 static Object arrayWithObjects (id* objects, NSUInteger cnt) | |
119 { | |
120 return invokeObjcSelfClass!(Object, "arrayWithObjects:count:", id*, NSUInteger)(objects, cnt); | |
121 } | |
122 | |
123 static Object arrayWithObjects (Object arrayWithObjects, ...) | |
124 { | |
125 return invokeObjcSelfClass!(Object, "arrayWithObjects:", Object)(arrayWithObjects); | |
126 } | |
127 | |
128 static Object arrayWithArray (NSArray array) | |
129 { | |
130 return invokeObjcSelfClass!(Object, "arrayWithArray:", NSArray)(array); | |
131 } | |
132 | |
133 Object initWithObjects (id* objects, NSUInteger cnt) | |
134 { | |
135 return invokeObjcSelf!(Object, "initWithObjects:count:", id*, NSUInteger)(objects, cnt); | |
136 } | |
137 | |
138 this (id* objects, NSUInteger cnt) | |
139 { | |
140 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); | |
141 id result = Bridge.invokeObjcMethod!(id, "initWithObjects:count:", id*, NSUInteger)(objcObject, objects, cnt); | |
142 | |
143 if (result) | |
144 objcObject = ret; | |
145 | |
146 dObject = this; | |
147 } | |
148 | |
149 Object initWithObjects (Object initWithObjects, ...) | |
150 { | |
151 return invokeObjcSelf!(Object, "initWithObjects:", Object)(initWithObjects); | |
152 } | |
153 | |
154 this (Object initWithObjects, ...) | |
155 { | |
156 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); | |
157 id result = Bridge.invokeObjcMethod!(id, "initWithObjects:", Object)(objcObject, initWithObjects); | |
158 | |
159 if (result) | |
160 objcObject = ret; | |
161 | |
162 dObject = this; | |
163 } | |
164 | |
165 Object initWithArray (NSArray array) | |
166 { | |
167 return invokeObjcSelf!(Object, "initWithArray:", NSArray)(array); | |
168 } | |
169 | |
170 this (NSArray array) | |
171 { | |
172 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); | |
173 id result = Bridge.invokeObjcMethod!(id, "initWithArray:", NSArray)(objcObject, array); | |
174 | |
175 if (result) | |
176 objcObject = ret; | |
177 | |
178 dObject = this; | |
179 } | |
180 | |
181 Object initWithArray (NSArray array, bool flag) | |
182 { | |
183 return invokeObjcSelf!(Object, "initWithArray:copyItems:", NSArray, bool)(array, flag); | |
184 } | |
185 | |
186 this (NSArray array, bool flag) | |
187 { | |
188 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); | |
189 id result = Bridge.invokeObjcMethod!(id, "initWithArray:copyItems:", NSArray, bool)(objcObject, array, flag); | |
190 | |
191 if (result) | |
192 objcObject = ret; | |
193 | |
194 dObject = this; | |
195 } | |
196 | |
197 static Object arrayWithContentsOfFile (NSString path) | |
198 { | |
199 return invokeObjcSelfClass!(Object, "arrayWithContentsOfFile:", NSString)(path); | |
200 } | |
201 | |
202 static Object arrayWithContentsOfURL (NSURL url) | |
203 { | |
204 return invokeObjcSelfClass!(Object, "arrayWithContentsOfURL:", NSURL)(url); | |
205 } | |
206 | |
207 Object initWithContentsOfFile (NSString path) | |
208 { | |
209 return invokeObjcSelf!(Object, "initWithContentsOfFile:", NSString)(path); | |
210 } | |
211 | |
212 this (NSString path) | |
213 { | |
214 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); | |
215 id result = Bridge.invokeObjcMethod!(id, "initWithContentsOfFile:", NSString)(objcObject, path); | |
216 | |
217 if (result) | |
218 objcObject = ret; | |
219 | |
220 dObject = this; | |
221 } | |
222 | |
223 Object initWithContentsOfURL (NSURL url) | |
224 { | |
225 return invokeObjcSelf!(Object, "initWithContentsOfURL:", NSURL)(url); | |
226 } | |
227 | |
228 this (NSURL url) | |
229 { | |
230 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); | |
231 id result = Bridge.invokeObjcMethod!(id, "initWithContentsOfURL:", NSURL)(objcObject, url); | |
232 | |
233 if (result) | |
234 objcObject = ret; | |
235 | |
236 dObject = this; | |
237 } | |
238 } | |
239 | |
240 template TNSExtendedArray () | |
241 { | |
242 NSArray arrayByAddingObject (Object anObject) | |
243 { | |
244 return invokeObjcSelf!(NSArray, "arrayByAddingObject:", Object)(anObject); | |
245 } | |
246 | |
247 NSArray arrayByAddingObjectsFromArray (NSArray otherArray) | |
248 { | |
249 return invokeObjcSelf!(NSArray, "arrayByAddingObjectsFromArray:", NSArray)(otherArray); | |
250 } | |
251 | |
252 NSString componentsJoinedByString (NSString separator) | |
253 { | |
254 return invokeObjcSelf!(NSString, "componentsJoinedByString:", NSString)(separator); | |
255 } | |
256 | |
257 bool containsObject (Object anObject) | |
258 { | |
259 return invokeObjcSelf!(bool, "containsObject:", Object)(anObject); | |
260 } | |
261 | |
262 NSString description () | |
263 { | |
264 return invokeObjcSelf!(NSString, "description"); | |
265 } | |
266 | |
267 NSString descriptionWithLocale (Object locale) | |
268 { | |
269 return invokeObjcSelf!(NSString, "descriptionWithLocale:", Object)(locale); | |
270 } | |
271 | |
272 NSString descriptionWithLocale (Object locale, NSUInteger level) | |
273 { | |
274 return invokeObjcSelf!(NSString, "descriptionWithLocale:indent:", Object, NSUInteger)(locale, level); | |
275 } | |
276 | |
277 Object firstObjectCommonWithArray (NSArray otherArray) | |
278 { | |
279 return invokeObjcSelf!(Object, "firstObjectCommonWithArray:", NSArray)(otherArray); | |
280 } | |
281 | |
282 void getObjects (id* objects) | |
283 { | |
284 return invokeObjcSelf!(void, "getObjects:", id*)(objects); | |
285 } | |
286 | |
287 void getObjects (id* objects, NSRange range) | |
288 { | |
289 return invokeObjcSelf!(void, "getObjects:range:", id*, NSRange)(objects, range); | |
290 } | |
291 | |
292 NSUInteger indexOfObject (Object anObject) | |
293 { | |
294 return invokeObjcSelf!(NSUInteger, "indexOfObject:", Object)(anObject); | |
295 } | |
296 | |
297 NSUInteger indexOfObject (Object anObject, NSRange range) | |
298 { | |
299 return invokeObjcSelf!(NSUInteger, "indexOfObject:inRange:", Object, NSRange)(anObject, range); | |
300 } | |
301 | |
302 NSUInteger indexOfObjectIdenticalTo (Object anObject) | |
303 { | |
304 return invokeObjcSelf!(NSUInteger, "indexOfObjectIdenticalTo:", Object)(anObject); | |
305 } | |
306 | |
307 NSUInteger indexOfObjectIdenticalTo (Object anObject, NSRange range) | |
308 { | |
309 return invokeObjcSelf!(NSUInteger, "indexOfObjectIdenticalTo:inRange:", Object, NSRange)(anObject, range); | |
310 } | |
311 | |
312 bool isEqualToArray (NSArray otherArray) | |
313 { | |
314 return invokeObjcSelf!(bool, "isEqualToArray:", NSArray)(otherArray); | |
315 } | |
316 | |
317 Object lastObject () | |
318 { | |
319 return invokeObjcSelf!(Object, "lastObject"); | |
320 } | |
321 | |
322 NSEnumerator objectEnumerator () | |
323 { | |
324 return invokeObjcSelf!(NSEnumerator, "objectEnumerator"); | |
325 } | |
326 | |
327 NSEnumerator reverseObjectEnumerator () | |
328 { | |
329 return invokeObjcSelf!(NSEnumerator, "reverseObjectEnumerator"); | |
330 } | |
331 | |
332 NSData sortedArrayHint () | |
333 { | |
334 return invokeObjcSelf!(NSData, "sortedArrayHint"); | |
335 } | |
336 | |
337 NSArray sortedArrayUsingFunction (NSInteger *id, id, void* comparator, void* context) | |
338 { | |
339 return invokeObjcSelf!(NSArray, "sortedArrayUsingFunction:context:", NSInteger *id, id, void*, void*)(comparator, context); | |
340 } | |
341 | |
342 NSArray sortedArrayUsingFunction (NSInteger *id, id, void* comparator, void* context, NSData hint) | |
343 { | |
344 return invokeObjcSelf!(NSArray, "sortedArrayUsingFunction:context:hint:", NSInteger *id, id, void*, void*, NSData)(comparator, context, hint); | |
345 } | |
346 | |
347 NSArray sortedArrayUsingSelector (SEL comparator) | |
348 { | |
349 return invokeObjcSelf!(NSArray, "sortedArrayUsingSelector:", SEL)(comparator); | |
350 } | |
351 | |
352 NSArray subarrayWithRange (NSRange range) | |
353 { | |
354 return invokeObjcSelf!(NSArray, "subarrayWithRange:", NSRange)(range); | |
355 } | |
356 | |
357 bool writeToFile (NSString path, bool useAuxiliaryFile) | |
358 { | |
359 return invokeObjcSelf!(bool, "writeToFile:atomically:", NSString, bool)(path, useAuxiliaryFile); | |
360 } | |
361 | |
362 bool writeToURL (NSURL url, bool atomically) | |
363 { | |
364 return invokeObjcSelf!(bool, "writeToURL:atomically:", NSURL, bool)(url, atomically); | |
365 } | |
366 | |
367 void makeObjectsPerformSelector (SEL aSelector) | |
368 { | |
369 return invokeObjcSelf!(void, "makeObjectsPerformSelector:", SEL)(aSelector); | |
370 } | |
371 | |
372 void makeObjectsPerformSelector (SEL aSelector, Object argument) | |
373 { | |
374 return invokeObjcSelf!(void, "makeObjectsPerformSelector:withObject:", SEL, Object)(aSelector, argument); | |
375 } | |
376 | |
377 NSArray objectsAtIndexes (NSIndexSet indexes) | |
378 { | |
379 return invokeObjcSelf!(NSArray, "objectsAtIndexes:", NSIndexSet)(indexes); | |
380 } | |
381 } | |
382 | |
383 template TNSExtendedMutableArray () | |
384 { | |
385 void addObjectsFromArray (NSArray otherArray) | |
386 { | |
387 return invokeObjcSelf!(void, "addObjectsFromArray:", NSArray)(otherArray); | |
388 } | |
389 | |
390 void exchangeObjectAtIndex (NSUInteger idx1, NSUInteger idx2) | |
391 { | |
392 return invokeObjcSelf!(void, "exchangeObjectAtIndex:withObjectAtIndex:", NSUInteger, NSUInteger)(idx1, idx2); | |
393 } | |
394 | |
395 void removeAllObjects () | |
396 { | |
397 return invokeObjcSelf!(void, "removeAllObjects"); | |
398 } | |
399 | |
400 void removeObject (Object anObject, NSRange range) | |
401 { | |
402 return invokeObjcSelf!(void, "removeObject:inRange:", Object, NSRange)(anObject, range); | |
403 } | |
404 | |
405 void removeObject (Object anObject) | |
406 { | |
407 return invokeObjcSelf!(void, "removeObject:", Object)(anObject); | |
408 } | |
409 | |
410 void removeObjectIdenticalTo (Object anObject, NSRange range) | |
411 { | |
412 return invokeObjcSelf!(void, "removeObjectIdenticalTo:inRange:", Object, NSRange)(anObject, range); | |
413 } | |
414 | |
415 void removeObjectIdenticalTo (Object anObject) | |
416 { | |
417 return invokeObjcSelf!(void, "removeObjectIdenticalTo:", Object)(anObject); | |
418 } | |
419 | |
420 void removeObjectsFromIndices (NSUInteger* indices, NSUInteger cnt) | |
421 { | |
422 return invokeObjcSelf!(void, "removeObjectsFromIndices:numIndices:", NSUInteger*, NSUInteger)(indices, cnt); | |
423 } | |
424 | |
425 void removeObjectsInArray (NSArray otherArray) | |
426 { | |
427 return invokeObjcSelf!(void, "removeObjectsInArray:", NSArray)(otherArray); | |
428 } | |
429 | |
430 void removeObjectsInRange (NSRange range) | |
431 { | |
432 return invokeObjcSelf!(void, "removeObjectsInRange:", NSRange)(range); | |
433 } | |
434 | |
435 void replaceObjectsInRange (NSRange range, NSArray otherArray, NSRange otherRange) | |
436 { | |
437 return invokeObjcSelf!(void, "replaceObjectsInRange:withObjectsFromArray:range:", NSRange, NSArray, NSRange)(range, otherArray, otherRange); | |
438 } | |
439 | |
440 void replaceObjectsInRange (NSRange range, NSArray otherArray) | |
441 { | |
442 return invokeObjcSelf!(void, "replaceObjectsInRange:withObjectsFromArray:", NSRange, NSArray)(range, otherArray); | |
443 } | |
444 | |
445 void setArray (NSArray otherArray) | |
446 { | |
447 return invokeObjcSelf!(void, "setArray:", NSArray)(otherArray); | |
448 } | |
449 | |
450 void sortUsingFunction (NSInteger *id, id, void* compare, void* context) | |
451 { | |
452 return invokeObjcSelf!(void, "sortUsingFunction:context:", NSInteger *id, id, void*, void*)(compare, context); | |
453 } | |
454 | |
455 void sortUsingSelector (SEL comparator) | |
456 { | |
457 return invokeObjcSelf!(void, "sortUsingSelector:", SEL)(comparator); | |
458 } | |
459 | |
460 void insertObjects (NSArray objects, NSIndexSet indexes) | |
461 { | |
462 return invokeObjcSelf!(void, "insertObjects:atIndexes:", NSArray, NSIndexSet)(objects, indexes); | |
463 } | |
464 | |
465 void removeObjectsAtIndexes (NSIndexSet indexes) | |
466 { | |
467 return invokeObjcSelf!(void, "removeObjectsAtIndexes:", NSIndexSet)(indexes); | |
468 } | |
469 | |
470 void replaceObjectsAtIndexes (NSIndexSet indexes, NSArray objects) | |
471 { | |
472 return invokeObjcSelf!(void, "replaceObjectsAtIndexes:withObjects:", NSIndexSet, NSArray)(indexes, objects); | |
473 } | |
474 } | |
475 | |
476 template TNSMutableArrayCreation () | |
477 { | |
478 static Object arrayWithCapacity (NSUInteger numItems) | |
479 { | |
480 return invokeObjcSelfClass!(Object, "arrayWithCapacity:", NSUInteger)(numItems); | |
481 } | |
482 | |
483 Object initWithCapacity (NSUInteger numItems) | |
484 { | |
485 return invokeObjcSelf!(Object, "initWithCapacity:", NSUInteger)(numItems); | |
486 } | |
487 | |
488 this (NSUInteger numItems) | |
489 { | |
490 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); | |
491 id result = Bridge.invokeObjcMethod!(id, "initWithCapacity:", NSUInteger)(objcObject, numItems); | |
492 | |
493 if (result) | |
494 objcObject = ret; | |
495 | |
496 dObject = this; | |
497 } | |
498 } | |
499 |