comparison dstep/foundation/NSMapTable.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.NSMapTable;
8
9 import dstep.foundation.NSArray;
10 import dstep.foundation.NSDictionary;
11 import dstep.foundation.NSEnumerator;
12 import dstep.foundation.NSMapTable;
13 import dstep.foundation.NSPointerFunctions;
14 import dstep.foundation.NSString;
15 import dstep.objc.bridge.Bridge;
16 import dstep.objc.objc : id;
17
18 import bindings = dstep.foundation.NSMapTable_bindings;
19
20 alias NSUInteger NSMapTableOptions;
21 alias {NSUInteger _pi; NSUInteger _si; void*_bs;} NSMapEnumerator;
22
23 extern (C)
24 {
25 extern
26 {
27 const NSMapTableKeyCallBacks NSIntegerMapKeyCallBacks;
28 const NSMapTableKeyCallBacks NSNonOwnedPointerMapKeyCallBacks;
29 const NSMapTableKeyCallBacks NSNonOwnedPointerOrNullMapKeyCallBacks;
30 const NSMapTableKeyCallBacks NSNonRetainedObjectMapKeyCallBacks;
31 const NSMapTableKeyCallBacks NSObjectMapKeyCallBacks;
32 const NSMapTableKeyCallBacks NSOwnedPointerMapKeyCallBacks;
33 const NSMapTableValueCallBacks NSIntegerMapValueCallBacks;
34 const NSMapTableValueCallBacks NSNonOwnedPointerMapValueCallBacks;
35 const NSMapTableValueCallBacks NSObjectMapValueCallBacks;
36 const NSMapTableValueCallBacks NSNonRetainedObjectMapValueCallBacks;
37 const NSMapTableValueCallBacks NSOwnedPointerMapValueCallBacks;
38 }
39 }
40
41 enum
42 {
43 NSMapTableStrongMemory = 0,
44 NSMapTableZeroingWeakMemory = NSPointerFunctionsZeroingWeakMemory,
45 NSMapTableCopyIn = NSPointerFunctionsCopyIn,
46 NSMapTableObjectPointerPersonality = NSPointerFunctionsObjectPointerPersonality
47 }
48
49 struct NSMapEnumerator
50 {
51 NSUInteger _pi;
52 NSUInteger _si;
53 void* _bs;
54 }
55
56
57 struct NSMapTableKeyCallBacks
58 {
59 void* notAKeyMarker;
60 }
61
62
63 struct NSMapTableValueCallBacks
64 {
65 }
66
67 class NSMapTable : NSObject, INSCopying, INSCoding, INSFastEnumeration
68 {
69 mixin ObjcWrap;
70
71 Object initWithKeyOptions (uint keyOptions, uint valueOptions, NSUInteger initialCapacity)
72 {
73 return invokeObjcSelf!(Object, "initWithKeyOptions:valueOptions:capacity:", uint, uint, NSUInteger)(keyOptions, valueOptions, initialCapacity);
74 }
75
76 this (uint keyOptions, uint valueOptions, NSUInteger initialCapacity)
77 {
78 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
79 id result = Bridge.invokeObjcMethod!(id, "initWithKeyOptions:valueOptions:capacity:", uint, uint, NSUInteger)(objcObject, keyOptions, valueOptions, initialCapacity);
80
81 if (result)
82 objcObject = ret;
83
84 dObject = this;
85 }
86
87 Object initWithKeyPointerFunctions (NSPointerFunctions keyFunctions, NSPointerFunctions valueFunctions, NSUInteger initialCapacity)
88 {
89 return invokeObjcSelf!(Object, "initWithKeyPointerFunctions:valuePointerFunctions:capacity:", NSPointerFunctions, NSPointerFunctions, NSUInteger)(keyFunctions, valueFunctions, initialCapacity);
90 }
91
92 this (NSPointerFunctions keyFunctions, NSPointerFunctions valueFunctions, NSUInteger initialCapacity)
93 {
94 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
95 id result = Bridge.invokeObjcMethod!(id, "initWithKeyPointerFunctions:valuePointerFunctions:capacity:", NSPointerFunctions, NSPointerFunctions, NSUInteger)(objcObject, keyFunctions, valueFunctions, initialCapacity);
96
97 if (result)
98 objcObject = ret;
99
100 dObject = this;
101 }
102
103 static Object mapTableWithKeyOptions (uint keyOptions, uint valueOptions)
104 {
105 return invokeObjcSelfClass!(Object, "mapTableWithKeyOptions:valueOptions:", uint, uint)(keyOptions, valueOptions);
106 }
107
108 static Object mapTableWithStrongToStrongObjects ()
109 {
110 return invokeObjcSelfClass!(Object, "mapTableWithStrongToStrongObjects");
111 }
112
113 static Object mapTableWithWeakToStrongObjects ()
114 {
115 return invokeObjcSelfClass!(Object, "mapTableWithWeakToStrongObjects");
116 }
117
118 static Object mapTableWithStrongToWeakObjects ()
119 {
120 return invokeObjcSelfClass!(Object, "mapTableWithStrongToWeakObjects");
121 }
122
123 static Object mapTableWithWeakToWeakObjects ()
124 {
125 return invokeObjcSelfClass!(Object, "mapTableWithWeakToWeakObjects");
126 }
127
128 NSPointerFunctions keyPointerFunctions ()
129 {
130 return invokeObjcSelf!(NSPointerFunctions, "keyPointerFunctions");
131 }
132
133 NSPointerFunctions valuePointerFunctions ()
134 {
135 return invokeObjcSelf!(NSPointerFunctions, "valuePointerFunctions");
136 }
137
138 Object objectForKey (Object aKey)
139 {
140 return invokeObjcSelf!(Object, "objectForKey:", Object)(aKey);
141 }
142
143 void removeObjectForKey (Object aKey)
144 {
145 return invokeObjcSelf!(void, "removeObjectForKey:", Object)(aKey);
146 }
147
148 void setObject (Object anObject, Object aKey)
149 {
150 return invokeObjcSelf!(void, "setObject:forKey:", Object, Object)(anObject, aKey);
151 }
152
153 NSUInteger count ()
154 {
155 return invokeObjcSelf!(NSUInteger, "count");
156 }
157
158 NSEnumerator keyEnumerator ()
159 {
160 return invokeObjcSelf!(NSEnumerator, "keyEnumerator");
161 }
162
163 NSEnumerator objectEnumerator ()
164 {
165 return invokeObjcSelf!(NSEnumerator, "objectEnumerator");
166 }
167
168 void removeAllObjects ()
169 {
170 return invokeObjcSelf!(void, "removeAllObjects");
171 }
172
173 NSDictionary dictionaryRepresentation ()
174 {
175 return invokeObjcSelf!(NSDictionary, "dictionaryRepresentation");
176 }
177
178 Object copyWithZone (NSZone* zone)
179 {
180 return invokeObjcSelf!(Object, "copyWithZone:", NSZone*)(zone);
181 }
182
183 void encodeWithCoder (NSCoder aCoder)
184 {
185 return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder);
186 }
187
188 Object initWithCoder (NSCoder aDecoder)
189 {
190 return invokeObjcSelf!(Object, "initWithCoder:", NSCoder)(aDecoder);
191 }
192
193 this (NSCoder aDecoder)
194 {
195 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
196 id result = Bridge.invokeObjcMethod!(id, "initWithCoder:", NSCoder)(objcObject, aDecoder);
197
198 if (result)
199 objcObject = ret;
200
201 dObject = this;
202 }
203
204 NSUInteger countByEnumeratingWithState (NSFastEnumerationState* state, id* stackbuf, NSUInteger len)
205 {
206 return invokeObjcSelf!(NSUInteger, "countByEnumeratingWithState:objects:count:", NSFastEnumerationState*, id*, NSUInteger)(state, stackbuf, len);
207 }
208 }
209
210 void NSFreeMapTable (NSMapTable table)
211 {
212 return Bridge.invokeObjcFunction!(void, bindings.NSFreeMapTable, NSMapTable)(table);
213 }
214
215 void NSResetMapTable (NSMapTable table)
216 {
217 return Bridge.invokeObjcFunction!(void, bindings.NSResetMapTable, NSMapTable)(table);
218 }
219
220 bool NSCompareMapTables (NSMapTable table1, NSMapTable table2)
221 {
222 return Bridge.invokeObjcFunction!(bool, bindings.NSCompareMapTables, NSMapTable, NSMapTable)(table1, table2);
223 }
224
225 NSMapTable NSCopyMapTableWithZone (NSMapTable table, NSZone* zone)
226 {
227 return Bridge.invokeObjcFunction!(NSMapTable, bindings.NSCopyMapTableWithZone, NSMapTable, NSZone*)(table, zone);
228 }
229
230 bool NSMapMember (NSMapTable table, void* key, void** originalKey, void** value)
231 {
232 return Bridge.invokeObjcFunction!(bool, bindings.NSMapMember, NSMapTable, void*, void**, void**)(table, key, originalKey, value);
233 }
234
235 void* NSMapGet (NSMapTable table, void* key)
236 {
237 return Bridge.invokeObjcFunction!(void*, bindings.NSMapGet, NSMapTable, void*)(table, key);
238 }
239
240 void NSMapInsert (NSMapTable table, void* key, void* value)
241 {
242 return Bridge.invokeObjcFunction!(void, bindings.NSMapInsert, NSMapTable, void*, void*)(table, key, value);
243 }
244
245 void NSMapInsertKnownAbsent (NSMapTable table, void* key, void* value)
246 {
247 return Bridge.invokeObjcFunction!(void, bindings.NSMapInsertKnownAbsent, NSMapTable, void*, void*)(table, key, value);
248 }
249
250 void* NSMapInsertIfAbsent (NSMapTable table, void* key, void* value)
251 {
252 return Bridge.invokeObjcFunction!(void*, bindings.NSMapInsertIfAbsent, NSMapTable, void*, void*)(table, key, value);
253 }
254
255 void NSMapRemove (NSMapTable table, void* key)
256 {
257 return Bridge.invokeObjcFunction!(void, bindings.NSMapRemove, NSMapTable, void*)(table, key);
258 }
259
260 NSMapEnumerator NSEnumerateMapTable (NSMapTable table)
261 {
262 return Bridge.invokeObjcFunction!(NSMapEnumerator, bindings.NSEnumerateMapTable, NSMapTable)(table);
263 }
264
265 NSUInteger NSCountMapTable (NSMapTable table)
266 {
267 return Bridge.invokeObjcFunction!(NSUInteger, bindings.NSCountMapTable, NSMapTable)(table);
268 }
269
270 NSString NSStringFromMapTable (NSMapTable table)
271 {
272 return Bridge.invokeObjcFunction!(NSString, bindings.NSStringFromMapTable, NSMapTable)(table);
273 }
274
275 NSArray NSAllMapTableKeys (NSMapTable table)
276 {
277 return Bridge.invokeObjcFunction!(NSArray, bindings.NSAllMapTableKeys, NSMapTable)(table);
278 }
279
280 NSArray NSAllMapTableValues (NSMapTable table)
281 {
282 return Bridge.invokeObjcFunction!(NSArray, bindings.NSAllMapTableValues, NSMapTable)(table);
283 }
284
285 NSMapTable NSCreateMapTableWithZone (NSMapTableKeyCallBacks keyCallBacks, NSMapTableValueCallBacks valueCallBacks, NSUInteger capacity, NSZone* zone)
286 {
287 return Bridge.invokeObjcFunction!(NSMapTable, bindings.NSCreateMapTableWithZone, NSMapTableKeyCallBacks, NSMapTableValueCallBacks, NSUInteger, NSZone*)(keyCallBacks, valueCallBacks, capacity, zone);
288 }
289
290 NSMapTable NSCreateMapTable (NSMapTableKeyCallBacks keyCallBacks, NSMapTableValueCallBacks valueCallBacks, NSUInteger capacity)
291 {
292 return Bridge.invokeObjcFunction!(NSMapTable, bindings.NSCreateMapTable, NSMapTableKeyCallBacks, NSMapTableValueCallBacks, NSUInteger)(keyCallBacks, valueCallBacks, capacity);
293 }
294
295 extern (C)
296 {
297 bool NSNextMapEnumeratorPair (NSMapEnumerator* enumerator, void** key, void** value);
298 void NSEndMapTableEnumeration (NSMapEnumerator* enumerator);
299 }