Mercurial > projects > dstep
diff dstep/foundation/NSURL.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 | 7ff919f595d5 |
children | b9de51448c6b |
line wrap: on
line diff
--- a/dstep/foundation/NSURL.d Mon Aug 03 15:31:48 2009 +0200 +++ b/dstep/foundation/NSURL.d Sun Jan 03 22:06:11 2010 +0100 @@ -6,28 +6,44 @@ */ module dstep.foundation.NSURL; +import dstep.foundation.NSCoder; import dstep.foundation.NSData; import dstep.foundation.NSDictionary; -import dstep.foundation.NSNumber; import dstep.foundation.NSObject; import dstep.foundation.NSString; import dstep.foundation.NSURLHandle; +import dstep.foundation.NSValue; +import dstep.foundation.NSZone; import dstep.objc.bridge.Bridge; -import dstep.objc.objc : id; +import dstep.objc.objc; + + import bindings = dstep.foundation.NSURL_bindings; -NSString NSURLFileScheme; +private NSString NSURLFileScheme_; -static this () +NSString NSURLFileScheme () { - NSURLFileScheme = new NSString(bindings.NSURLFileScheme); + if (NSURLFileScheme_) + return NSURLFileScheme_; + + return NSURLFileScheme_ = new NSString(bindings.NSURLFileScheme); } class NSURL : NSObject, INSCoding, INSCopying, INSURLHandleClient { - mixin ObjcWrap; - mixin TNSURLLoading; + mixin (ObjcWrap); + + this () + { + super(typeof(this).alloc.init.objcObject); + } + + typeof(this) init () + { + return invokeObjcSelf!(typeof(this), "init"); + } Object initWithScheme (NSString scheme, NSString host, NSString path) { @@ -36,13 +52,7 @@ this (NSString scheme, NSString host, NSString path) { - objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); - id result = Bridge.invokeObjcMethod!(id, "initWithScheme:host:path:", NSString, NSString, NSString)(objcObject, scheme, host, path); - - if (result) - objcObject = ret; - - dObject = this; + typeof(this).alloc.initWithScheme(scheme, host, path); } Object initFileURLWithPath (NSString path, bool isDir) @@ -52,13 +62,7 @@ this (NSString path, bool isDir) { - objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); - id result = Bridge.invokeObjcMethod!(id, "initFileURLWithPath:isDirectory:", NSString, bool)(objcObject, path, isDir); - - if (result) - objcObject = ret; - - dObject = this; + typeof(this).alloc.initFileURLWithPath(path, isDir); } Object initFileURLWithPath (NSString path) @@ -66,25 +70,14 @@ return invokeObjcSelf!(Object, "initFileURLWithPath:", NSString)(path); } - this (NSString path) - { - objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); - id result = Bridge.invokeObjcMethod!(id, "initFileURLWithPath:", NSString)(objcObject, path); - - if (result) - objcObject = ret; - - dObject = this; - } - static Object fileURLWithPath (NSString path, bool isDir) { - return invokeObjcSelfClass!(Object, "fileURLWithPath:isDirectory:", NSString, bool)(path, isDir); + return invokeObjcSuperClass!(Object, "fileURLWithPath:isDirectory:", NSString, bool)(path, isDir); } static Object fileURLWithPath (NSString path) { - return invokeObjcSelfClass!(Object, "fileURLWithPath:", NSString)(path); + return invokeObjcSuperClass!(Object, "fileURLWithPath:", NSString)(path); } Object initWithString (NSString URLString) @@ -94,13 +87,7 @@ this (NSString URLString) { - objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); - id result = Bridge.invokeObjcMethod!(id, "initWithString:", NSString)(objcObject, URLString); - - if (result) - objcObject = ret; - - dObject = this; + typeof(this).alloc.initWithString(URLString); } Object initWithString (NSString URLString, NSURL baseURL) @@ -110,23 +97,17 @@ this (NSString URLString, NSURL baseURL) { - objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); - id result = Bridge.invokeObjcMethod!(id, "initWithString:relativeToURL:", NSString, NSURL)(objcObject, URLString, baseURL); - - if (result) - objcObject = ret; - - dObject = this; + typeof(this).alloc.initWithString(URLString, baseURL); } static Object URLWithString (NSString URLString) { - return invokeObjcSelfClass!(Object, "URLWithString:", NSString)(URLString); + return invokeObjcSuperClass!(Object, "URLWithString:", NSString)(URLString); } static Object URLWithString (NSString URLString, NSURL baseURL) { - return invokeObjcSelfClass!(Object, "URLWithString:relativeToURL:", NSString, NSURL)(URLString, baseURL); + return invokeObjcSuperClass!(Object, "URLWithString:relativeToURL:", NSString, NSURL)(URLString, baseURL); } NSString absoluteString () @@ -229,13 +210,7 @@ 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); } Object copyWithZone (NSZone* zone) @@ -267,10 +242,41 @@ { return invokeObjcSelf!(void, "URLHandle:resourceDidFailLoadingWithReason:", NSURLHandle, NSString)(sender, reason); } + + // TNSURLLoading + NSData resourceDataUsingCache (bool shouldUseCache) + { + return invokeObjcSelf!(NSData, "resourceDataUsingCache:", bool)(shouldUseCache); + } + + void loadResourceDataNotifyingClient (Object client, bool shouldUseCache) + { + return invokeObjcSelf!(void, "loadResourceDataNotifyingClient:usingCache:", Object, bool)(client, shouldUseCache); + } + + Object propertyForKey (NSString propertyKey) + { + return invokeObjcSelf!(Object, "propertyForKey:", NSString)(propertyKey); + } + + bool setResourceData (NSData data) + { + return invokeObjcSelf!(bool, "setResourceData:", NSData)(data); + } + + bool setProperty (Object property, NSString propertyKey) + { + return invokeObjcSelf!(bool, "setProperty:forKey:", Object, NSString)(property, propertyKey); + } + + NSURLHandle URLHandleUsingCache (bool shouldUseCache) + { + return invokeObjcSelf!(NSURLHandle, "URLHandleUsingCache:", bool)(shouldUseCache); + } } -template TNSURLLoading () -{ +const TNSURLLoading = ` + NSData resourceDataUsingCache (bool shouldUseCache) { return invokeObjcSelf!(NSData, "resourceDataUsingCache:", bool)(shouldUseCache); @@ -300,18 +306,38 @@ { return invokeObjcSelf!(NSURLHandle, "URLHandleUsingCache:", bool)(shouldUseCache); } -} +`; + +const TNSURLClient = ` -template TNSURLClient () -{ - void URL (NSURL sender, NSData newBytes); - void URLResourceDidFinishLoading (NSURL sender); - void URLResourceDidCancelLoading (NSURL sender); - void URL (NSURL sender, NSString reason); -} + void URL (NSURL sender, NSData newBytes) + { + return invokeObjcSelf!(void, "URL:resourceDataDidBecomeAvailable:", NSURL, NSData)(sender, newBytes); + } + + void URLResourceDidFinishLoading (NSURL sender) + { + return invokeObjcSelf!(void, "URLResourceDidFinishLoading:", NSURL)(sender); + } + + void URLResourceDidCancelLoading (NSURL sender) + { + return invokeObjcSelf!(void, "URLResourceDidCancelLoading:", NSURL)(sender); + } + + void URL (NSURL sender, NSString reason) + { + return invokeObjcSelf!(void, "URL:resourceDidFailLoadingWithReason:", NSURL, NSString)(sender, reason); + } + + //mixin ObjcBindMethod!(URL, "URL:resourceDataDidBecomeAvailable:"); + //mixin ObjcBindMethod!(URLResourceDidFinishLoading, "URLResourceDidFinishLoading:"); + //mixin ObjcBindMethod!(URLResourceDidCancelLoading, "URLResourceDidCancelLoading:"); + //mixin ObjcBindMethod!(URL, "URL:resourceDidFailLoadingWithReason:"); +`; -template TNSURLUtilities () -{ +const TNSURLUtilities = ` + NSString stringByAddingPercentEscapesUsingEncoding (uint enc) { return invokeObjcSelf!(NSString, "stringByAddingPercentEscapesUsingEncoding:", uint)(enc); @@ -321,5 +347,4 @@ { return invokeObjcSelf!(NSString, "stringByReplacingPercentEscapesUsingEncoding:", uint)(enc); } -} - +`; \ No newline at end of file