comparison dstep/foundation/NSKeyedArchiver.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
8 8
9 import dstep.foundation.NSArray; 9 import dstep.foundation.NSArray;
10 import dstep.foundation.NSCoder; 10 import dstep.foundation.NSCoder;
11 import dstep.foundation.NSData; 11 import dstep.foundation.NSData;
12 import dstep.foundation.NSGeometry; 12 import dstep.foundation.NSGeometry;
13 import dstep.foundation.NSMutableData; 13 import dstep.foundation.NSObjCRuntime;
14 import dstep.foundation.NSPropertyList; 14 import dstep.foundation.NSPropertyList;
15 import dstep.foundation.NSString;
15 import dstep.objc.bridge.Bridge; 16 import dstep.objc.bridge.Bridge;
16 import dstep.objc.objc : id; 17 import dstep.objc.objc;
17
18 import bindings = dstep.foundation.NSKeyedArchiver_bindings; 18 import bindings = dstep.foundation.NSKeyedArchiver_bindings;
19 19
20 const NSString NSInvalidArchiveOperationException; 20 private
21 const NSString NSInvalidUnarchiveOperationException;
22
23 static this ()
24 { 21 {
25 NSInvalidArchiveOperationException = new NSString(bindings.NSInvalidArchiveOperationException); 22 NSString NSInvalidArchiveOperationException_;
26 NSInvalidUnarchiveOperationException = new NSString(bindings.NSInvalidUnarchiveOperationException); 23 NSString NSInvalidUnarchiveOperationException_;
27 } 24 }
25
26 NSString NSInvalidArchiveOperationException ()
27 {
28 if (NSInvalidArchiveOperationException_)
29 return NSInvalidArchiveOperationException_;
30
31 return NSInvalidArchiveOperationException_ = new NSString(bindings.NSInvalidArchiveOperationException);
32 }
33
34 NSString NSInvalidUnarchiveOperationException ()
35 {
36 if (NSInvalidUnarchiveOperationException_)
37 return NSInvalidUnarchiveOperationException_;
38
39 return NSInvalidUnarchiveOperationException_ = new NSString(bindings.NSInvalidUnarchiveOperationException);
40 }
41
42 const TNSKeyedArchiverObjectSubstitution = `
43
44 Class classForKeyedArchiver ()
45 {
46 return invokeObjcSelf!(Class, "classForKeyedArchiver");
47 }
48
49 Object replacementObjectForKeyedArchiver (NSKeyedArchiver archiver)
50 {
51 return invokeObjcSelf!(Object, "replacementObjectForKeyedArchiver:", NSKeyedArchiver)(archiver);
52 }
53
54 static NSArray classFallbacksForKeyedArchiver ()
55 {
56 return invokeObjcSelfClass!(NSArray, "classFallbacksForKeyedArchiver");
57 }
58
59 //mixin ObjcBindMethod!(classForKeyedArchiver, "classForKeyedArchiver");
60 //mixin ObjcBindMethod!(replacementObjectForKeyedArchiver, "replacementObjectForKeyedArchiver:");
61 //mixin ObjcBindClassMethod!(classFallbacksForKeyedArchiver, "classFallbacksForKeyedArchiver");
62 `;
63
64 const TNSKeyedUnarchiverObjectSubstitution = `
65
66 static Class classForKeyedUnarchiver ()
67 {
68 return invokeObjcSelfClass!(Class, "classForKeyedUnarchiver");
69 }
70
71 //mixin ObjcBindClassMethod!(classForKeyedUnarchiver, "classForKeyedUnarchiver");
72 `;
73
74 const TNSKeyedUnarchiverDelegate = `
75
76 Class unarchiver (NSKeyedUnarchiver unarchiver, NSString name, NSArray classNames)
77 {
78 return invokeObjcSelf!(Class, "unarchiver:cannotDecodeObjectOfClassName:originalClasses:", NSKeyedUnarchiver, NSString, NSArray)(unarchiver, name, classNames);
79 }
80
81 Object unarchiver (NSKeyedUnarchiver unarchiver, Object object)
82 {
83 return invokeObjcSelf!(Object, "unarchiver:didDecodeObject:", NSKeyedUnarchiver, Object)(unarchiver, object);
84 }
85
86 void unarchiver (NSKeyedUnarchiver unarchiver, Object object, Object newObject)
87 {
88 return invokeObjcSelf!(void, "unarchiver:willReplaceObject:withObject:", NSKeyedUnarchiver, Object, Object)(unarchiver, object, newObject);
89 }
90
91 void unarchiverWillFinish (NSKeyedUnarchiver unarchiver)
92 {
93 return invokeObjcSelf!(void, "unarchiverWillFinish:", NSKeyedUnarchiver)(unarchiver);
94 }
95
96 void unarchiverDidFinish (NSKeyedUnarchiver unarchiver)
97 {
98 return invokeObjcSelf!(void, "unarchiverDidFinish:", NSKeyedUnarchiver)(unarchiver);
99 }
100
101 //mixin ObjcBindMethod!(unarchiver, "unarchiver:cannotDecodeObjectOfClassName:originalClasses:");
102 //mixin ObjcBindMethod!(unarchiver, "unarchiver:didDecodeObject:");
103 //mixin ObjcBindMethod!(unarchiver, "unarchiver:willReplaceObject:withObject:");
104 //mixin ObjcBindMethod!(unarchiverWillFinish, "unarchiverWillFinish:");
105 //mixin ObjcBindMethod!(unarchiverDidFinish, "unarchiverDidFinish:");
106 `;
107
108 const TNSKeyedArchiverDelegate = `
109
110 Object archiver (NSKeyedArchiver archiver, Object object)
111 {
112 return invokeObjcSelf!(Object, "archiver:willEncodeObject:", NSKeyedArchiver, Object)(archiver, object);
113 }
114
115 void archiver_didEncodeObject (NSKeyedArchiver archiver, Object object)
116 {
117 return invokeObjcSelf!(void, "archiver:didEncodeObject:", NSKeyedArchiver, Object)(archiver, object);
118 }
119
120 void archiver (NSKeyedArchiver archiver, Object object, Object newObject)
121 {
122 return invokeObjcSelf!(void, "archiver:willReplaceObject:withObject:", NSKeyedArchiver, Object, Object)(archiver, object, newObject);
123 }
124
125 void archiverWillFinish (NSKeyedArchiver archiver)
126 {
127 return invokeObjcSelf!(void, "archiverWillFinish:", NSKeyedArchiver)(archiver);
128 }
129
130 void archiverDidFinish (NSKeyedArchiver archiver)
131 {
132 return invokeObjcSelf!(void, "archiverDidFinish:", NSKeyedArchiver)(archiver);
133 }
134
135 //mixin ObjcBindMethod!(archiver, "archiver:willEncodeObject:");
136 //mixin ObjcBindMethod!(archiver_didEncodeObject, "archiver:didEncodeObject:");
137 //mixin ObjcBindMethod!(archiver, "archiver:willReplaceObject:withObject::");
138 //mixin ObjcBindMethod!(archiverWillFinish, "archiverWillFinish:");
139 //mixin ObjcBindMethod!(archiverDidFinish, "archiverDidFinish:");
140 `;
141
142 const TNSGeometryKeyedCoding = `
143
144 void encodePoint (NSPoint point, NSString key)
145 {
146 return invokeObjcSelf!(void, "encodePoint:forKey:", NSPoint, NSString)(point, key);
147 }
148
149 void encodeSize (NSSize size, NSString key)
150 {
151 return invokeObjcSelf!(void, "encodeSize:forKey:", NSSize, NSString)(size, key);
152 }
153
154 void encodeRect (NSRect rect, NSString key)
155 {
156 return invokeObjcSelf!(void, "encodeRect:forKey:", NSRect, NSString)(rect, key);
157 }
158
159 NSPoint decodePointForKey (NSString key)
160 {
161 return invokeObjcSelf!(NSPoint, "decodePointForKey:", NSString)(key);
162 }
163
164 NSSize decodeSizeForKey (NSString key)
165 {
166 return invokeObjcSelf!(NSSize, "decodeSizeForKey:", NSString)(key);
167 }
168
169 NSRect decodeRectForKey (NSString key)
170 {
171 return invokeObjcSelf!(NSRect, "decodeRectForKey:", NSString)(key);
172 }
173 `;
28 174
29 class NSKeyedArchiver : NSCoder 175 class NSKeyedArchiver : NSCoder
30 { 176 {
31 mixin ObjcWrap; 177 mixin (ObjcWrap);
178
179 this ()
180 {
181 super(typeof(this).alloc.init.objcObject);
182 }
183
184 typeof(this) init ()
185 {
186 return invokeObjcSelf!(typeof(this), "init");
187 }
32 188
33 static NSData archivedDataWithRootObject (Object rootObject) 189 static NSData archivedDataWithRootObject (Object rootObject)
34 { 190 {
35 return invokeObjcSelfClass!(NSData, "archivedDataWithRootObject:", Object)(rootObject); 191 return invokeObjcSuperClass!(NSData, "archivedDataWithRootObject:", Object)(rootObject);
36 } 192 }
37 193
38 static bool archiveRootObject (Object rootObject, NSString path) 194 static bool archiveRootObject (Object rootObject, NSString path)
39 { 195 {
40 return invokeObjcSelfClass!(bool, "archiveRootObject:toFile:", Object, NSString)(rootObject, path); 196 return invokeObjcSuperClass!(bool, "archiveRootObject:toFile:", Object, NSString)(rootObject, path);
41 } 197 }
42 198
43 Object initForWritingWithMutableData (NSMutableData data) 199 Object initForWritingWithMutableData (NSMutableData data)
44 { 200 {
45 return invokeObjcSelf!(Object, "initForWritingWithMutableData:", NSMutableData)(data); 201 return invokeObjcSelf!(Object, "initForWritingWithMutableData:", NSMutableData)(data);
46 } 202 }
47 203
48 this (NSMutableData data) 204 this (NSMutableData data)
49 { 205 {
50 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); 206 typeof(this).alloc.initForWritingWithMutableData(data);
51 id result = Bridge.invokeObjcMethod!(id, "initForWritingWithMutableData:", NSMutableData)(objcObject, data);
52
53 if (result)
54 objcObject = ret;
55
56 dObject = this;
57 } 207 }
58 208
59 void setDelegate (Object delegate_) 209 void setDelegate (Object delegate_)
60 { 210 {
61 return invokeObjcSelf!(void, "setDelegate:", Object)(delegate_); 211 return invokeObjcSelf!(void, "setDelegate:", Object)(delegate_);
81 return invokeObjcSelf!(void, "finishEncoding"); 231 return invokeObjcSelf!(void, "finishEncoding");
82 } 232 }
83 233
84 static void setClassName (NSString codedName, Class cls) 234 static void setClassName (NSString codedName, Class cls)
85 { 235 {
86 return invokeObjcSelfClass!(void, "setClassName:forClass:", NSString, Class)(codedName, cls); 236 return invokeObjcSuperClass!(void, "setClassName:forClass:", NSString, Class)(codedName, cls);
87 } 237 }
88 238
89 void setClassName (NSString codedName, Class cls) 239 void setClassName (NSString codedName, Class cls)
90 { 240 {
91 return invokeObjcSelf!(void, "setClassName:forClass:", NSString, Class)(codedName, cls); 241 return invokeObjcSelf!(void, "setClassName:forClass:", NSString, Class)(codedName, cls);
92 } 242 }
93 243
94 static NSString classNameForClass (Class cls) 244 static NSString classNameForClass (Class cls)
95 { 245 {
96 return invokeObjcSelfClass!(NSString, "classNameForClass:", Class)(cls); 246 return invokeObjcSuperClass!(NSString, "classNameForClass:", Class)(cls);
97 } 247 }
98 248
99 NSString classNameForClass (Class cls) 249 NSString classNameForClass (Class cls)
100 { 250 {
101 return invokeObjcSelf!(NSString, "classNameForClass:", Class)(cls); 251 return invokeObjcSelf!(NSString, "classNameForClass:", Class)(cls);
147 } 297 }
148 } 298 }
149 299
150 class NSKeyedUnarchiver : NSCoder 300 class NSKeyedUnarchiver : NSCoder
151 { 301 {
152 mixin ObjcWrap; 302 mixin (ObjcWrap);
303
304 this ()
305 {
306 super(typeof(this).alloc.init.objcObject);
307 }
308
309 typeof(this) init ()
310 {
311 return invokeObjcSelf!(typeof(this), "init");
312 }
153 313
154 static Object unarchiveObjectWithData (NSData data) 314 static Object unarchiveObjectWithData (NSData data)
155 { 315 {
156 return invokeObjcSelfClass!(Object, "unarchiveObjectWithData:", NSData)(data); 316 return invokeObjcSuperClass!(Object, "unarchiveObjectWithData:", NSData)(data);
157 } 317 }
158 318
159 static Object unarchiveObjectWithFile (NSString path) 319 static Object unarchiveObjectWithFile (NSString path)
160 { 320 {
161 return invokeObjcSelfClass!(Object, "unarchiveObjectWithFile:", NSString)(path); 321 return invokeObjcSuperClass!(Object, "unarchiveObjectWithFile:", NSString)(path);
162 } 322 }
163 323
164 Object initForReadingWithData (NSData data) 324 Object initForReadingWithData (NSData data)
165 { 325 {
166 return invokeObjcSelf!(Object, "initForReadingWithData:", NSData)(data); 326 return invokeObjcSelf!(Object, "initForReadingWithData:", NSData)(data);
167 } 327 }
168 328
169 this (NSData data) 329 this (NSData data)
170 { 330 {
171 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); 331 typeof(this).alloc.initForReadingWithData(data);
172 id result = Bridge.invokeObjcMethod!(id, "initForReadingWithData:", NSData)(objcObject, data);
173
174 if (result)
175 objcObject = ret;
176
177 dObject = this;
178 } 332 }
179 333
180 void setDelegate (Object delegate_) 334 void setDelegate (Object delegate_)
181 { 335 {
182 return invokeObjcSelf!(void, "setDelegate:", Object)(delegate_); 336 return invokeObjcSelf!(void, "setDelegate:", Object)(delegate_);
192 return invokeObjcSelf!(void, "finishDecoding"); 346 return invokeObjcSelf!(void, "finishDecoding");
193 } 347 }
194 348
195 static void setClass (Class cls, NSString codedName) 349 static void setClass (Class cls, NSString codedName)
196 { 350 {
197 return invokeObjcSelfClass!(void, "setClass:forClassName:", Class, NSString)(cls, codedName); 351 return invokeObjcSuperClass!(void, "setClass:forClassName:", Class, NSString)(cls, codedName);
198 } 352 }
199 353
200 void setClass (Class cls, NSString codedName) 354 void setClass (Class cls, NSString codedName)
201 { 355 {
202 return invokeObjcSelf!(void, "setClass:forClassName:", Class, NSString)(cls, codedName); 356 return invokeObjcSelf!(void, "setClass:forClassName:", Class, NSString)(cls, codedName);
203 } 357 }
204 358
205 static Class classForClassName (NSString codedName) 359 static Class classForClassName (NSString codedName)
206 { 360 {
207 return invokeObjcSelfClass!(Class, "classForClassName:", NSString)(codedName); 361 return invokeObjcSuperClass!(Class, "classForClassName:", NSString)(codedName);
208 } 362 }
209 363
210 Class classForClassName (NSString codedName) 364 Class classForClassName (NSString codedName)
211 { 365 {
212 return invokeObjcSelf!(Class, "classForClassName:", NSString)(codedName); 366 return invokeObjcSelf!(Class, "classForClassName:", NSString)(codedName);
255 char* decodeBytesForKey (NSString key, NSUInteger* lengthp) 409 char* decodeBytesForKey (NSString key, NSUInteger* lengthp)
256 { 410 {
257 return invokeObjcSelf!(char*, "decodeBytesForKey:returnedLength:", NSString, NSUInteger*)(key, lengthp); 411 return invokeObjcSelf!(char*, "decodeBytesForKey:returnedLength:", NSString, NSUInteger*)(key, lengthp);
258 } 412 }
259 } 413 }
260
261 template TNSKeyedArchiverObjectSubstitution ()
262 {
263 Class classForKeyedArchiver ();
264 Object replacementObjectForKeyedArchiver (NSKeyedArchiver archiver);
265 static NSArray classFallbacksForKeyedArchiver ();
266 }
267
268 template TNSKeyedUnarchiverObjectSubstitution ()
269 {
270 static Class classForKeyedUnarchiver ();
271 }
272
273 template TNSKeyedUnarchiverDelegate ()
274 {
275 Class unarchiver (NSKeyedUnarchiver unarchiver, NSString name, NSArray classNames);
276 Object unarchiver (NSKeyedUnarchiver unarchiver, Object object);
277 void unarchiver (NSKeyedUnarchiver unarchiver, Object object, Object newObject);
278 void unarchiverWillFinish (NSKeyedUnarchiver unarchiver);
279 void unarchiverDidFinish (NSKeyedUnarchiver unarchiver);
280 }
281
282 template TNSKeyedArchiverDelegate ()
283 {
284 Object archiver (NSKeyedArchiver archiver, Object object);
285 void archiver (NSKeyedArchiver archiver, Object object);
286 void archiver (NSKeyedArchiver archiver, Object object, Object newObject);
287 void archiverWillFinish (NSKeyedArchiver archiver);
288 void archiverDidFinish (NSKeyedArchiver archiver);
289 }
290
291 template TNSGeometryKeyedCoding ()
292 {
293 void encodePoint (NSPoint point, NSString key)
294 {
295 return invokeObjcSelf!(void, "encodePoint:forKey:", NSPoint, NSString)(point, key);
296 }
297
298 void encodeSize (NSSize size, NSString key)
299 {
300 return invokeObjcSelf!(void, "encodeSize:forKey:", NSSize, NSString)(size, key);
301 }
302
303 void encodeRect (NSRect rect, NSString key)
304 {
305 return invokeObjcSelf!(void, "encodeRect:forKey:", NSRect, NSString)(rect, key);
306 }
307
308 NSPoint decodePointForKey (NSString key)
309 {
310 return invokeObjcSelf!(NSPoint, "decodePointForKey:", NSString)(key);
311 }
312
313 NSSize decodeSizeForKey (NSString key)
314 {
315 return invokeObjcSelf!(NSSize, "decodeSizeForKey:", NSString)(key);
316 }
317
318 NSRect decodeRectForKey (NSString key)
319 {
320 return invokeObjcSelf!(NSRect, "decodeRectForKey:", NSString)(key);
321 }
322 }
323