Mercurial > projects > dstep
diff dstep/foundation/NSAppleScript.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/NSAppleScript.d Mon Aug 03 15:31:48 2009 +0200 +++ b/dstep/foundation/NSAppleScript.d Sun Jan 03 22:06:11 2010 +0100 @@ -11,44 +11,95 @@ import dstep.foundation.NSObject; import dstep.foundation.NSString; import dstep.foundation.NSURL; +import dstep.foundation.NSZone; import dstep.objc.bridge.Bridge; -import dstep.objc.objc : id; +import dstep.objc.objc; + + import bindings = dstep.foundation.NSAppleScript_bindings; -const NSString NSAppleScriptErrorMessage; -const NSString NSAppleScriptErrorNumber; -const NSString NSAppleScriptErrorAppName; -const NSString NSAppleScriptErrorBriefMessage; -const NSString NSAppleScriptErrorRange; +private +{ + NSString NSAppleScriptErrorMessage_; + NSString NSAppleScriptErrorNumber_; + NSString NSAppleScriptErrorAppName_; + NSString NSAppleScriptErrorBriefMessage_; + NSString NSAppleScriptErrorRange_; +} + +NSString NSAppleScriptErrorMessage () +{ + if (NSAppleScriptErrorMessage_) + return NSAppleScriptErrorMessage_; + + return NSAppleScriptErrorMessage_ = new NSString(bindings.NSAppleScriptErrorMessage); +} -static this () +NSString NSAppleScriptErrorNumber () +{ + if (NSAppleScriptErrorNumber_) + return NSAppleScriptErrorNumber_; + + return NSAppleScriptErrorNumber_ = new NSString(bindings.NSAppleScriptErrorNumber); +} + +NSString NSAppleScriptErrorAppName () { - NSAppleScriptErrorMessage = new NSString(bindings.NSAppleScriptErrorMessage); - NSAppleScriptErrorNumber = new NSString(bindings.NSAppleScriptErrorNumber); - NSAppleScriptErrorAppName = new NSString(bindings.NSAppleScriptErrorAppName); - NSAppleScriptErrorBriefMessage = new NSString(bindings.NSAppleScriptErrorBriefMessage); - NSAppleScriptErrorRange = new NSString(bindings.NSAppleScriptErrorRange); + if (NSAppleScriptErrorAppName_) + return NSAppleScriptErrorAppName_; + + return NSAppleScriptErrorAppName_ = new NSString(bindings.NSAppleScriptErrorAppName); +} + +NSString NSAppleScriptErrorBriefMessage () +{ + if (NSAppleScriptErrorBriefMessage_) + return NSAppleScriptErrorBriefMessage_; + + return NSAppleScriptErrorBriefMessage_ = new NSString(bindings.NSAppleScriptErrorBriefMessage); +} + +NSString NSAppleScriptErrorRange () +{ + if (NSAppleScriptErrorRange_) + return NSAppleScriptErrorRange_; + + return NSAppleScriptErrorRange_ = new NSString(bindings.NSAppleScriptErrorRange); } class NSAppleScript : NSObject, INSCopying { - mixin ObjcWrap; - - Object initWithContentsOfURL (NSURL url, NSDictionary** errorInfo) + mixin (ObjcWrap); + + this () { - return invokeObjcSelf!(Object, "initWithContentsOfURL:error:", NSURL, NSDictionary**)(url, errorInfo); + super(typeof(this).alloc.init.objcObject); + } + + typeof(this) init () + { + return invokeObjcSelf!(typeof(this), "init"); } - this (NSURL url, NSDictionary** errorInfo) + Object initWithContentsOfURL (NSURL url, ref NSDictionary errorInfo) { - objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); - id result = Bridge.invokeObjcMethod!(id, "initWithContentsOfURL:error:", NSURL, NSDictionary**)(objcObject, url, errorInfo); + id error; + + if (errorInfo) + error = new objc_object; + + Object result = invokeObjcSelf!(Object, "initWithContentsOfURL:error:", NSURL, id*)(url, &error); + + if (error) + errorInfo = new NSDictionary(error); + + return result; + } - if (result) - objcObject = ret; - - dObject = this; + this (NSURL url, ref NSDictionary errorInfo) + { + typeof(this).alloc.initWithContentsOfURL(url, errorInfo); } Object initWithSource (NSString source) @@ -58,13 +109,7 @@ this (NSString source) { - objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); - id result = Bridge.invokeObjcMethod!(id, "initWithSource:", NSString)(objcObject, source); - - if (result) - objcObject = ret; - - dObject = this; + typeof(this).alloc.initWithSource(source); } NSString source () @@ -77,19 +122,49 @@ return invokeObjcSelf!(bool, "isCompiled"); } - bool compileAndReturnError (NSDictionary** errorInfo) + bool compileAndReturnError (ref NSDictionary errorInfo) { - return invokeObjcSelf!(bool, "compileAndReturnError:", NSDictionary**)(errorInfo); + id error; + + if (errorInfo) + error = new objc_object; + + bool result = invokeObjcSelf!(bool, "compileAndReturnError:", id*)(&error); + + if (error) + errorInfo = new NSDictionary(error); + + return result; } - NSAppleEventDescriptor executeAndReturnError (NSDictionary** errorInfo) + NSAppleEventDescriptor executeAndReturnError (ref NSDictionary errorInfo) { - return invokeObjcSelf!(NSAppleEventDescriptor, "executeAndReturnError:", NSDictionary**)(errorInfo); + id error; + + if (errorInfo) + error = new objc_object; + + NSAppleEventDescriptor result = invokeObjcSelf!(NSAppleEventDescriptor, "executeAndReturnError:", id*)(&error); + + if (error) + errorInfo = new NSDictionary(error); + + return result; } - NSAppleEventDescriptor executeAppleEvent (NSAppleEventDescriptor event, NSDictionary** errorInfo) + NSAppleEventDescriptor executeAppleEvent (NSAppleEventDescriptor event, ref NSDictionary errorInfo) { - return invokeObjcSelf!(NSAppleEventDescriptor, "executeAppleEvent:error:", NSAppleEventDescriptor, NSDictionary**)(event, errorInfo); + id error; + + if (errorInfo) + error = new objc_object; + + NSAppleEventDescriptor result = invokeObjcSelf!(NSAppleEventDescriptor, "executeAppleEvent:error:", NSAppleEventDescriptor, id*)(event, &error); + + if (error) + errorInfo = new NSDictionary(error); + + return result; } Object copyWithZone (NSZone* zone)