Mercurial > projects > dstep
diff 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 |
line wrap: on
line diff
--- a/dstep/foundation/NSError.d Mon Aug 03 15:31:48 2009 +0200 +++ b/dstep/foundation/NSError.d Sun Jan 03 22:06:11 2010 +0100 @@ -7,47 +7,169 @@ module dstep.foundation.NSError; import dstep.foundation.NSArray; +import dstep.foundation.NSCoder; import dstep.foundation.NSDictionary; +import dstep.foundation.NSObjCRuntime; import dstep.foundation.NSObject; +import dstep.foundation.NSString; +import dstep.foundation.NSZone; import dstep.objc.bridge.Bridge; -import dstep.objc.objc : id; +import dstep.objc.objc; + + import bindings = dstep.foundation.NSError_bindings; -const NSString NSCocoaErrorDomain; -const NSString NSPOSIXErrorDomain; -const NSString NSOSStatusErrorDomain; -const NSString NSMachErrorDomain; -const NSString NSUnderlyingErrorKey; -const NSString NSLocalizedDescriptionKey; -const NSString NSLocalizedFailureReasonErrorKey; -const NSString NSLocalizedRecoverySuggestionErrorKey; -const NSString NSLocalizedRecoveryOptionsErrorKey; -const NSString NSRecoveryAttempterErrorKey; -const NSString NSStringEncodingErrorKey; -const NSString NSURLErrorKey; -const NSString NSFilePathErrorKey; +private +{ + NSString NSCocoaErrorDomain_; + NSString NSPOSIXErrorDomain_; + NSString NSOSStatusErrorDomain_; + NSString NSMachErrorDomain_; + NSString NSUnderlyingErrorKey_; + NSString NSLocalizedDescriptionKey_; + NSString NSLocalizedFailureReasonErrorKey_; + NSString NSLocalizedRecoverySuggestionErrorKey_; + NSString NSLocalizedRecoveryOptionsErrorKey_; + NSString NSRecoveryAttempterErrorKey_; + NSString NSStringEncodingErrorKey_; + NSString NSURLErrorKey_; + NSString NSFilePathErrorKey_; +} + +NSString NSCocoaErrorDomain () +{ + if (NSCocoaErrorDomain_) + return NSCocoaErrorDomain_; + + return NSCocoaErrorDomain_ = new NSString(bindings.NSCocoaErrorDomain); +} + +NSString NSPOSIXErrorDomain () +{ + if (NSPOSIXErrorDomain_) + return NSPOSIXErrorDomain_; + + return NSPOSIXErrorDomain_ = new NSString(bindings.NSPOSIXErrorDomain); +} + +NSString NSOSStatusErrorDomain () +{ + if (NSOSStatusErrorDomain_) + return NSOSStatusErrorDomain_; + + return NSOSStatusErrorDomain_ = new NSString(bindings.NSOSStatusErrorDomain); +} + +NSString NSMachErrorDomain () +{ + if (NSMachErrorDomain_) + return NSMachErrorDomain_; + + return NSMachErrorDomain_ = new NSString(bindings.NSMachErrorDomain); +} + +NSString NSUnderlyingErrorKey () +{ + if (NSUnderlyingErrorKey_) + return NSUnderlyingErrorKey_; + + return NSUnderlyingErrorKey_ = new NSString(bindings.NSUnderlyingErrorKey); +} + +NSString NSLocalizedDescriptionKey () +{ + if (NSLocalizedDescriptionKey_) + return NSLocalizedDescriptionKey_; + + return NSLocalizedDescriptionKey_ = new NSString(bindings.NSLocalizedDescriptionKey); +} -static this () +NSString NSLocalizedFailureReasonErrorKey () +{ + if (NSLocalizedFailureReasonErrorKey_) + return NSLocalizedFailureReasonErrorKey_; + + return NSLocalizedFailureReasonErrorKey_ = new NSString(bindings.NSLocalizedFailureReasonErrorKey); +} + +NSString NSLocalizedRecoverySuggestionErrorKey () +{ + if (NSLocalizedRecoverySuggestionErrorKey_) + return NSLocalizedRecoverySuggestionErrorKey_; + + return NSLocalizedRecoverySuggestionErrorKey_ = new NSString(bindings.NSLocalizedRecoverySuggestionErrorKey); +} + +NSString NSLocalizedRecoveryOptionsErrorKey () +{ + if (NSLocalizedRecoveryOptionsErrorKey_) + return NSLocalizedRecoveryOptionsErrorKey_; + + return NSLocalizedRecoveryOptionsErrorKey_ = new NSString(bindings.NSLocalizedRecoveryOptionsErrorKey); +} + +NSString NSRecoveryAttempterErrorKey () +{ + if (NSRecoveryAttempterErrorKey_) + return NSRecoveryAttempterErrorKey_; + + return NSRecoveryAttempterErrorKey_ = new NSString(bindings.NSRecoveryAttempterErrorKey); +} + +NSString NSStringEncodingErrorKey () { - NSCocoaErrorDomain = new NSString(bindings.NSCocoaErrorDomain); - NSPOSIXErrorDomain = new NSString(bindings.NSPOSIXErrorDomain); - NSOSStatusErrorDomain = new NSString(bindings.NSOSStatusErrorDomain); - NSMachErrorDomain = new NSString(bindings.NSMachErrorDomain); - NSUnderlyingErrorKey = new NSString(bindings.NSUnderlyingErrorKey); - NSLocalizedDescriptionKey = new NSString(bindings.NSLocalizedDescriptionKey); - NSLocalizedFailureReasonErrorKey = new NSString(bindings.NSLocalizedFailureReasonErrorKey); - NSLocalizedRecoverySuggestionErrorKey = new NSString(bindings.NSLocalizedRecoverySuggestionErrorKey); - NSLocalizedRecoveryOptionsErrorKey = new NSString(bindings.NSLocalizedRecoveryOptionsErrorKey); - NSRecoveryAttempterErrorKey = new NSString(bindings.NSRecoveryAttempterErrorKey); - NSStringEncodingErrorKey = new NSString(bindings.NSStringEncodingErrorKey); - NSURLErrorKey = new NSString(bindings.NSURLErrorKey); - NSFilePathErrorKey = new NSString(bindings.NSFilePathErrorKey); + if (NSStringEncodingErrorKey_) + return NSStringEncodingErrorKey_; + + return NSStringEncodingErrorKey_ = new NSString(bindings.NSStringEncodingErrorKey); +} + +NSString NSURLErrorKey () +{ + if (NSURLErrorKey_) + return NSURLErrorKey_; + + return NSURLErrorKey_ = new NSString(bindings.NSURLErrorKey); } +NSString NSFilePathErrorKey () +{ + if (NSFilePathErrorKey_) + return NSFilePathErrorKey_; + + return NSFilePathErrorKey_ = new NSString(bindings.NSFilePathErrorKey); +} + +const TNSErrorRecoveryAttempting = ` + + void attemptRecoveryFromError (NSError error, NSUInteger recoveryOptionIndex, Object delegate_, SEL didRecoverSelector, void* contextInfo) + { + return invokeObjcSelf!(void, "attemptRecoveryFromError:optionIndexdelegate:didRecoverSelector:contextInfo:", NSError, NSUInteger, Object, SEL, void*)(error, recoveryOptionIndex, delegate_, didRecoverSelector, contextInfo); + } + + bool attemptRecoveryFromError (NSError error, NSUInteger recoveryOptionIndex) + { + return invokeObjcSelf!(bool, "attemptRecoveryFromError:optionIndex:", NSError, NSUInteger)(error, recoveryOptionIndex); + } + + //mixin ObjcBindMethod!(attemptRecoveryFromError, void, "attemptRecoveryFromError:optionIndexdelegate:didRecoverSelector:contextInfo:", NSError, NSUInteger, Object, SEL, void*); + //mixin ObjcBindMethod!(attemptRecoveryFromError, bool, "attemptRecoveryFromError:optionIndex:", NSError, NSUInteger); +`; + class NSError : NSObject, INSCopying, INSCoding { - mixin ObjcWrap; + mixin (ObjcWrap); + + this () + { + super(typeof(this).alloc.init.objcObject); + } + + typeof(this) init () + { + return invokeObjcSelf!(typeof(this), "init"); + } Object initWithDomain (NSString domain, NSInteger code, NSDictionary dict) { @@ -56,18 +178,12 @@ this (NSString domain, NSInteger code, NSDictionary dict) { - objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); - id result = Bridge.invokeObjcMethod!(id, "initWithDomain:code:userInfo:", NSString, NSInteger, NSDictionary)(objcObject, domain, code, dict); - - if (result) - objcObject = ret; - - dObject = this; + typeof(this).alloc.initWithDomain(domain, code, dict); } static Object errorWithDomain (NSString domain, NSInteger code, NSDictionary dict) { - return invokeObjcSelfClass!(Object, "errorWithDomain:code:userInfo:", NSString, NSInteger, NSDictionary)(domain, code, dict); + return invokeObjcSuperClass!(Object, "errorWithDomain:code:userInfo:", NSString, NSInteger, NSDictionary)(domain, code, dict); } NSString domain () @@ -127,19 +243,6 @@ this (NSCoder aDecoder) { - objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); - id result = Bridge.invokeObjcMethod!(id, "initWithCoder:", NSCoder)(objcObject, aDecoder); - - if (result) - objcObject = ret; - - dObject = this; + typeof(this).alloc.initWithCoder(aDecoder); } -} - -template TNSErrorRecoveryAttempting () -{ - void attemptRecoveryFromError (NSError error, NSUInteger recoveryOptionIndex, Object delegate_, SEL didRecoverSelector, void* contextInfo); - bool attemptRecoveryFromError (NSError error, NSUInteger recoveryOptionIndex); -} - +} \ No newline at end of file