comparison dstep/foundation/NSXMLDocument.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
4 * Version: Initial created: Aug 3, 2009 4 * Version: Initial created: Aug 3, 2009
5 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) 5 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
6 */ 6 */
7 module dstep.foundation.NSXMLDocument; 7 module dstep.foundation.NSXMLDocument;
8 8
9 import dstep.foundation.NSArray;
9 import dstep.foundation.NSData; 10 import dstep.foundation.NSData;
11 import dstep.foundation.NSDictionary;
12 import dstep.foundation.NSError;
13 import dstep.foundation.NSObjCRuntime;
14 import dstep.foundation.NSString;
15 import dstep.foundation.NSURL;
10 import dstep.foundation.NSXMLDTD; 16 import dstep.foundation.NSXMLDTD;
17 import dstep.foundation.NSXMLElement;
11 import dstep.foundation.NSXMLNode; 18 import dstep.foundation.NSXMLNode;
12 import dstep.objc.bridge.Bridge; 19 import dstep.objc.bridge.Bridge;
13 import dstep.objc.objc : id; 20 import dstep.objc.objc;
14 21
15 alias NSUInteger NSXMLDocumentContentKind; 22 alias NSUInteger NSXMLDocumentContentKind;
16 23
17 enum 24 enum
18 { 25 {
22 NSXMLDocumentTextKind 29 NSXMLDocumentTextKind
23 } 30 }
24 31
25 class NSXMLDocument : NSXMLNode 32 class NSXMLDocument : NSXMLNode
26 { 33 {
27 mixin ObjcWrap; 34 mixin (ObjcWrap);
28 35
29 Object initWithXMLString (NSString string, NSUInteger mask, NSError** error) 36 this ()
30 { 37 {
31 return invokeObjcSelf!(Object, "initWithXMLString:options:error:", NSString, NSUInteger, NSError**)(string, mask, error); 38 super(typeof(this).alloc.init.objcObject);
32 } 39 }
33 40
34 this (NSString string, NSUInteger mask, NSError** error) 41 typeof(this) init ()
35 { 42 {
36 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); 43 return invokeObjcSelf!(typeof(this), "init");
37 id result = Bridge.invokeObjcMethod!(id, "initWithXMLString:options:error:", NSString, NSUInteger, NSError**)(objcObject, string, mask, error); 44 }
38 45
39 if (result) 46 Object initWithXMLString (NSString string, NSUInteger mask, ref NSError error)
40 objcObject = ret; 47 {
41 48 id err;
42 dObject = this; 49
43 } 50 if (error)
44 51 err = new objc_object;
45 Object initWithContentsOfURL (NSURL url, NSUInteger mask, NSError** error) 52
46 { 53 Object result = invokeObjcSelf!(Object, "initWithXMLString:options:error:", NSString, NSUInteger, id*)(string, mask, &err);
47 return invokeObjcSelf!(Object, "initWithContentsOfURL:options:error:", NSURL, NSUInteger, NSError**)(url, mask, error); 54
48 } 55 if (err)
49 56 error = new NSError(err);
50 this (NSURL url, NSUInteger mask, NSError** error) 57
51 { 58 return result;
52 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); 59 }
53 id result = Bridge.invokeObjcMethod!(id, "initWithContentsOfURL:options:error:", NSURL, NSUInteger, NSError**)(objcObject, url, mask, error); 60
54 61 this (NSString string, NSUInteger mask, ref NSError error)
55 if (result) 62 {
56 objcObject = ret; 63 typeof(this).alloc.initWithXMLString(string, mask, error);
57 64 }
58 dObject = this; 65
59 } 66 Object initWithContentsOfURL (NSURL url, NSUInteger mask, ref NSError error)
60 67 {
61 Object initWithData (NSData data, NSUInteger mask, NSError** error) 68 id err;
62 { 69
63 return invokeObjcSelf!(Object, "initWithData:options:error:", NSData, NSUInteger, NSError**)(data, mask, error); 70 if (error)
64 } 71 err = new objc_object;
65 72
66 this (NSData data, NSUInteger mask, NSError** error) 73 Object result = invokeObjcSelf!(Object, "initWithContentsOfURL:options:error:", NSURL, NSUInteger, id*)(url, mask, &err);
67 { 74
68 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); 75 if (err)
69 id result = Bridge.invokeObjcMethod!(id, "initWithData:options:error:", NSData, NSUInteger, NSError**)(objcObject, data, mask, error); 76 error = new NSError(err);
70 77
71 if (result) 78 return result;
72 objcObject = ret; 79 }
73 80
74 dObject = this; 81 this (NSURL url, NSUInteger mask, ref NSError error)
82 {
83 typeof(this).alloc.initWithContentsOfURL(url, mask, error);
84 }
85
86 Object initWithData (NSData data, NSUInteger mask, ref NSError error)
87 {
88 id err;
89
90 if (error)
91 err = new objc_object;
92
93 Object result = invokeObjcSelf!(Object, "initWithData:options:error:", NSData, NSUInteger, id*)(data, mask, &err);
94
95 if (err)
96 error = new NSError(err);
97
98 return result;
99 }
100
101 this (NSData data, NSUInteger mask, ref NSError error)
102 {
103 typeof(this).alloc.initWithData(data, mask, error);
75 } 104 }
76 105
77 Object initWithRootElement (NSXMLElement element) 106 Object initWithRootElement (NSXMLElement element)
78 { 107 {
79 return invokeObjcSelf!(Object, "initWithRootElement:", NSXMLElement)(element); 108 return invokeObjcSelf!(Object, "initWithRootElement:", NSXMLElement)(element);
80 } 109 }
81 110
82 this (NSXMLElement element) 111 this (NSXMLElement element)
83 { 112 {
84 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); 113 typeof(this).alloc.initWithRootElement(element);
85 id result = Bridge.invokeObjcMethod!(id, "initWithRootElement:", NSXMLElement)(objcObject, element);
86
87 if (result)
88 objcObject = ret;
89
90 dObject = this;
91 } 114 }
92 115
93 static Class replacementClassForClass (Class cls) 116 static Class replacementClassForClass (Class cls)
94 { 117 {
95 return invokeObjcSelfClass!(Class, "replacementClassForClass:", Class)(cls); 118 return invokeObjcSuperClass!(Class, "replacementClassForClass:", Class)(cls);
96 } 119 }
97 120
98 void setCharacterEncoding (NSString encoding) 121 void setCharacterEncoding (NSString encoding)
99 { 122 {
100 return invokeObjcSelf!(void, "setCharacterEncoding:", NSString)(encoding); 123 return invokeObjcSelf!(void, "setCharacterEncoding:", NSString)(encoding);
203 NSData XMLDataWithOptions (NSUInteger options) 226 NSData XMLDataWithOptions (NSUInteger options)
204 { 227 {
205 return invokeObjcSelf!(NSData, "XMLDataWithOptions:", NSUInteger)(options); 228 return invokeObjcSelf!(NSData, "XMLDataWithOptions:", NSUInteger)(options);
206 } 229 }
207 230
208 Object objectByApplyingXSLT (NSData xslt, NSDictionary arguments, NSError** error) 231 Object objectByApplyingXSLT (NSData xslt, NSDictionary arguments, ref NSError error)
209 { 232 {
210 return invokeObjcSelf!(Object, "objectByApplyingXSLT:arguments:error:", NSData, NSDictionary, NSError**)(xslt, arguments, error); 233 id err;
211 } 234
212 235 if (error)
213 Object objectByApplyingXSLTString (NSString xslt, NSDictionary arguments, NSError** error) 236 err = new objc_object;
214 { 237
215 return invokeObjcSelf!(Object, "objectByApplyingXSLTString:arguments:error:", NSString, NSDictionary, NSError**)(xslt, arguments, error); 238 Object result = invokeObjcSelf!(Object, "objectByApplyingXSLT:arguments:error:", NSData, NSDictionary, id*)(xslt, arguments, &err);
216 } 239
217 240 if (err)
218 Object objectByApplyingXSLTAtURL (NSURL xsltURL, NSDictionary argument, NSError** error) 241 error = new NSError(err);
219 { 242
220 return invokeObjcSelf!(Object, "objectByApplyingXSLTAtURL:arguments:error:", NSURL, NSDictionary, NSError**)(xsltURL, argument, error); 243 return result;
221 } 244 }
222 245
223 bool validateAndReturnError (NSError** error) 246 Object objectByApplyingXSLTString (NSString xslt, NSDictionary arguments, ref NSError error)
224 { 247 {
225 return invokeObjcSelf!(bool, "validateAndReturnError:", NSError**)(error); 248 id err;
249
250 if (error)
251 err = new objc_object;
252
253 Object result = invokeObjcSelf!(Object, "objectByApplyingXSLTString:arguments:error:", NSString, NSDictionary, id*)(xslt, arguments, &err);
254
255 if (err)
256 error = new NSError(err);
257
258 return result;
259 }
260
261 Object objectByApplyingXSLTAtURL (NSURL xsltURL, NSDictionary argument, ref NSError error)
262 {
263 id err;
264
265 if (error)
266 err = new objc_object;
267
268 Object result = invokeObjcSelf!(Object, "objectByApplyingXSLTAtURL:arguments:error:", NSURL, NSDictionary, id*)(xsltURL, argument, &err);
269
270 if (err)
271 error = new NSError(err);
272
273 return result;
274 }
275
276 bool validateAndReturnError (ref NSError error)
277 {
278 id err;
279
280 if (error)
281 err = new objc_object;
282
283 bool result = invokeObjcSelf!(bool, "validateAndReturnError:", id*)(&err);
284
285 if (err)
286 error = new NSError(err);
287
288 return result;
226 } 289 }
227 } 290 }
228 291