comparison dstep/foundation/NSError.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
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.NSError; 7 module dstep.foundation.NSError;
8 8
9 import dstep.foundation.NSArray; 9 import dstep.foundation.NSArray;
10 import dstep.foundation.NSCoder;
10 import dstep.foundation.NSDictionary; 11 import dstep.foundation.NSDictionary;
12 import dstep.foundation.NSObjCRuntime;
11 import dstep.foundation.NSObject; 13 import dstep.foundation.NSObject;
14 import dstep.foundation.NSString;
15 import dstep.foundation.NSZone;
12 import dstep.objc.bridge.Bridge; 16 import dstep.objc.bridge.Bridge;
13 import dstep.objc.objc : id; 17 import dstep.objc.objc;
18
19
14 20
15 import bindings = dstep.foundation.NSError_bindings; 21 import bindings = dstep.foundation.NSError_bindings;
16 22
17 const NSString NSCocoaErrorDomain; 23 private
18 const NSString NSPOSIXErrorDomain; 24 {
19 const NSString NSOSStatusErrorDomain; 25 NSString NSCocoaErrorDomain_;
20 const NSString NSMachErrorDomain; 26 NSString NSPOSIXErrorDomain_;
21 const NSString NSUnderlyingErrorKey; 27 NSString NSOSStatusErrorDomain_;
22 const NSString NSLocalizedDescriptionKey; 28 NSString NSMachErrorDomain_;
23 const NSString NSLocalizedFailureReasonErrorKey; 29 NSString NSUnderlyingErrorKey_;
24 const NSString NSLocalizedRecoverySuggestionErrorKey; 30 NSString NSLocalizedDescriptionKey_;
25 const NSString NSLocalizedRecoveryOptionsErrorKey; 31 NSString NSLocalizedFailureReasonErrorKey_;
26 const NSString NSRecoveryAttempterErrorKey; 32 NSString NSLocalizedRecoverySuggestionErrorKey_;
27 const NSString NSStringEncodingErrorKey; 33 NSString NSLocalizedRecoveryOptionsErrorKey_;
28 const NSString NSURLErrorKey; 34 NSString NSRecoveryAttempterErrorKey_;
29 const NSString NSFilePathErrorKey; 35 NSString NSStringEncodingErrorKey_;
30 36 NSString NSURLErrorKey_;
31 static this () 37 NSString NSFilePathErrorKey_;
32 { 38 }
33 NSCocoaErrorDomain = new NSString(bindings.NSCocoaErrorDomain); 39
34 NSPOSIXErrorDomain = new NSString(bindings.NSPOSIXErrorDomain); 40 NSString NSCocoaErrorDomain ()
35 NSOSStatusErrorDomain = new NSString(bindings.NSOSStatusErrorDomain); 41 {
36 NSMachErrorDomain = new NSString(bindings.NSMachErrorDomain); 42 if (NSCocoaErrorDomain_)
37 NSUnderlyingErrorKey = new NSString(bindings.NSUnderlyingErrorKey); 43 return NSCocoaErrorDomain_;
38 NSLocalizedDescriptionKey = new NSString(bindings.NSLocalizedDescriptionKey); 44
39 NSLocalizedFailureReasonErrorKey = new NSString(bindings.NSLocalizedFailureReasonErrorKey); 45 return NSCocoaErrorDomain_ = new NSString(bindings.NSCocoaErrorDomain);
40 NSLocalizedRecoverySuggestionErrorKey = new NSString(bindings.NSLocalizedRecoverySuggestionErrorKey); 46 }
41 NSLocalizedRecoveryOptionsErrorKey = new NSString(bindings.NSLocalizedRecoveryOptionsErrorKey); 47
42 NSRecoveryAttempterErrorKey = new NSString(bindings.NSRecoveryAttempterErrorKey); 48 NSString NSPOSIXErrorDomain ()
43 NSStringEncodingErrorKey = new NSString(bindings.NSStringEncodingErrorKey); 49 {
44 NSURLErrorKey = new NSString(bindings.NSURLErrorKey); 50 if (NSPOSIXErrorDomain_)
45 NSFilePathErrorKey = new NSString(bindings.NSFilePathErrorKey); 51 return NSPOSIXErrorDomain_;
46 } 52
53 return NSPOSIXErrorDomain_ = new NSString(bindings.NSPOSIXErrorDomain);
54 }
55
56 NSString NSOSStatusErrorDomain ()
57 {
58 if (NSOSStatusErrorDomain_)
59 return NSOSStatusErrorDomain_;
60
61 return NSOSStatusErrorDomain_ = new NSString(bindings.NSOSStatusErrorDomain);
62 }
63
64 NSString NSMachErrorDomain ()
65 {
66 if (NSMachErrorDomain_)
67 return NSMachErrorDomain_;
68
69 return NSMachErrorDomain_ = new NSString(bindings.NSMachErrorDomain);
70 }
71
72 NSString NSUnderlyingErrorKey ()
73 {
74 if (NSUnderlyingErrorKey_)
75 return NSUnderlyingErrorKey_;
76
77 return NSUnderlyingErrorKey_ = new NSString(bindings.NSUnderlyingErrorKey);
78 }
79
80 NSString NSLocalizedDescriptionKey ()
81 {
82 if (NSLocalizedDescriptionKey_)
83 return NSLocalizedDescriptionKey_;
84
85 return NSLocalizedDescriptionKey_ = new NSString(bindings.NSLocalizedDescriptionKey);
86 }
87
88 NSString NSLocalizedFailureReasonErrorKey ()
89 {
90 if (NSLocalizedFailureReasonErrorKey_)
91 return NSLocalizedFailureReasonErrorKey_;
92
93 return NSLocalizedFailureReasonErrorKey_ = new NSString(bindings.NSLocalizedFailureReasonErrorKey);
94 }
95
96 NSString NSLocalizedRecoverySuggestionErrorKey ()
97 {
98 if (NSLocalizedRecoverySuggestionErrorKey_)
99 return NSLocalizedRecoverySuggestionErrorKey_;
100
101 return NSLocalizedRecoverySuggestionErrorKey_ = new NSString(bindings.NSLocalizedRecoverySuggestionErrorKey);
102 }
103
104 NSString NSLocalizedRecoveryOptionsErrorKey ()
105 {
106 if (NSLocalizedRecoveryOptionsErrorKey_)
107 return NSLocalizedRecoveryOptionsErrorKey_;
108
109 return NSLocalizedRecoveryOptionsErrorKey_ = new NSString(bindings.NSLocalizedRecoveryOptionsErrorKey);
110 }
111
112 NSString NSRecoveryAttempterErrorKey ()
113 {
114 if (NSRecoveryAttempterErrorKey_)
115 return NSRecoveryAttempterErrorKey_;
116
117 return NSRecoveryAttempterErrorKey_ = new NSString(bindings.NSRecoveryAttempterErrorKey);
118 }
119
120 NSString NSStringEncodingErrorKey ()
121 {
122 if (NSStringEncodingErrorKey_)
123 return NSStringEncodingErrorKey_;
124
125 return NSStringEncodingErrorKey_ = new NSString(bindings.NSStringEncodingErrorKey);
126 }
127
128 NSString NSURLErrorKey ()
129 {
130 if (NSURLErrorKey_)
131 return NSURLErrorKey_;
132
133 return NSURLErrorKey_ = new NSString(bindings.NSURLErrorKey);
134 }
135
136 NSString NSFilePathErrorKey ()
137 {
138 if (NSFilePathErrorKey_)
139 return NSFilePathErrorKey_;
140
141 return NSFilePathErrorKey_ = new NSString(bindings.NSFilePathErrorKey);
142 }
143
144 const TNSErrorRecoveryAttempting = `
145
146 void attemptRecoveryFromError (NSError error, NSUInteger recoveryOptionIndex, Object delegate_, SEL didRecoverSelector, void* contextInfo)
147 {
148 return invokeObjcSelf!(void, "attemptRecoveryFromError:optionIndexdelegate:didRecoverSelector:contextInfo:", NSError, NSUInteger, Object, SEL, void*)(error, recoveryOptionIndex, delegate_, didRecoverSelector, contextInfo);
149 }
150
151 bool attemptRecoveryFromError (NSError error, NSUInteger recoveryOptionIndex)
152 {
153 return invokeObjcSelf!(bool, "attemptRecoveryFromError:optionIndex:", NSError, NSUInteger)(error, recoveryOptionIndex);
154 }
155
156 //mixin ObjcBindMethod!(attemptRecoveryFromError, void, "attemptRecoveryFromError:optionIndexdelegate:didRecoverSelector:contextInfo:", NSError, NSUInteger, Object, SEL, void*);
157 //mixin ObjcBindMethod!(attemptRecoveryFromError, bool, "attemptRecoveryFromError:optionIndex:", NSError, NSUInteger);
158 `;
47 159
48 class NSError : NSObject, INSCopying, INSCoding 160 class NSError : NSObject, INSCopying, INSCoding
49 { 161 {
50 mixin ObjcWrap; 162 mixin (ObjcWrap);
163
164 this ()
165 {
166 super(typeof(this).alloc.init.objcObject);
167 }
168
169 typeof(this) init ()
170 {
171 return invokeObjcSelf!(typeof(this), "init");
172 }
51 173
52 Object initWithDomain (NSString domain, NSInteger code, NSDictionary dict) 174 Object initWithDomain (NSString domain, NSInteger code, NSDictionary dict)
53 { 175 {
54 return invokeObjcSelf!(Object, "initWithDomain:code:userInfo:", NSString, NSInteger, NSDictionary)(domain, code, dict); 176 return invokeObjcSelf!(Object, "initWithDomain:code:userInfo:", NSString, NSInteger, NSDictionary)(domain, code, dict);
55 } 177 }
56 178
57 this (NSString domain, NSInteger code, NSDictionary dict) 179 this (NSString domain, NSInteger code, NSDictionary dict)
58 { 180 {
59 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); 181 typeof(this).alloc.initWithDomain(domain, code, dict);
60 id result = Bridge.invokeObjcMethod!(id, "initWithDomain:code:userInfo:", NSString, NSInteger, NSDictionary)(objcObject, domain, code, dict);
61
62 if (result)
63 objcObject = ret;
64
65 dObject = this;
66 } 182 }
67 183
68 static Object errorWithDomain (NSString domain, NSInteger code, NSDictionary dict) 184 static Object errorWithDomain (NSString domain, NSInteger code, NSDictionary dict)
69 { 185 {
70 return invokeObjcSelfClass!(Object, "errorWithDomain:code:userInfo:", NSString, NSInteger, NSDictionary)(domain, code, dict); 186 return invokeObjcSuperClass!(Object, "errorWithDomain:code:userInfo:", NSString, NSInteger, NSDictionary)(domain, code, dict);
71 } 187 }
72 188
73 NSString domain () 189 NSString domain ()
74 { 190 {
75 return invokeObjcSelf!(NSString, "domain"); 191 return invokeObjcSelf!(NSString, "domain");
125 return invokeObjcSelf!(Object, "initWithCoder:", NSCoder)(aDecoder); 241 return invokeObjcSelf!(Object, "initWithCoder:", NSCoder)(aDecoder);
126 } 242 }
127 243
128 this (NSCoder aDecoder) 244 this (NSCoder aDecoder)
129 { 245 {
130 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); 246 typeof(this).alloc.initWithCoder(aDecoder);
131 id result = Bridge.invokeObjcMethod!(id, "initWithCoder:", NSCoder)(objcObject, aDecoder); 247 }
132 248 }
133 if (result)
134 objcObject = ret;
135
136 dObject = this;
137 }
138 }
139
140 template TNSErrorRecoveryAttempting ()
141 {
142 void attemptRecoveryFromError (NSError error, NSUInteger recoveryOptionIndex, Object delegate_, SEL didRecoverSelector, void* contextInfo);
143 bool attemptRecoveryFromError (NSError error, NSUInteger recoveryOptionIndex);
144 }
145