view dstep/foundation/NSURL.d @ 14:89f3c3ef1fd2

Added the Foundation framework
author Jacob Carlborg <doob@me.com>
date Mon, 03 Aug 2009 15:23:15 +0200
parents
children 7ff919f595d5
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Aug 3, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.foundation.NSURL;

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.objc.bridge.Bridge;
import dstep.objc.objc : id;

import bindings = dstep.foundation.NSURL_bindings;

NSString NSURLFileScheme;

static this ()
{
	NSURLFileScheme = new NSString(bindings.NSURLFileScheme);
}

class NSURL : NSObject, INSCoding, INSCopying, INSURLHandleClient
{
	mixin ObjcWrap;
	mixin TNSURLLoading;

	Object initWithScheme (NSString scheme, NSString host, NSString path)
	{
		return invokeObjcSelf!(Object, "initWithScheme:host:path:", NSString, NSString, NSString)(scheme, host, path);
	}

	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;
	}

	Object initFileURLWithPath (NSString path, bool isDir)
	{
		return invokeObjcSelf!(Object, "initFileURLWithPath:isDirectory:", NSString, bool)(path, isDir);
	}

	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;
	}

	Object initFileURLWithPath (NSString path)
	{
		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);
	}

	static Object fileURLWithPath (NSString path)
	{
		return invokeObjcSelfClass!(Object, "fileURLWithPath:", NSString)(path);
	}

	Object initWithString (NSString URLString)
	{
		return invokeObjcSelf!(Object, "initWithString:", NSString)(URLString);
	}

	this (NSString URLString)
	{
		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
		id result = Bridge.invokeObjcMethod!(id, "initWithString:", NSString)(objcObject, URLString);

		if (result)
			objcObject = ret;

		dObject = this;
	}

	Object initWithString (NSString URLString, NSURL baseURL)
	{
		return invokeObjcSelf!(Object, "initWithString:relativeToURL:", NSString, NSURL)(URLString, baseURL);
	}

	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;
	}

	static Object URLWithString (NSString URLString)
	{
		return invokeObjcSelfClass!(Object, "URLWithString:", NSString)(URLString);
	}

	static Object URLWithString (NSString URLString, NSURL baseURL)
	{
		return invokeObjcSelfClass!(Object, "URLWithString:relativeToURL:", NSString, NSURL)(URLString, baseURL);
	}

	NSString absoluteString ()
	{
		return invokeObjcSelf!(NSString, "absoluteString");
	}

	NSString relativeString ()
	{
		return invokeObjcSelf!(NSString, "relativeString");
	}

	NSURL baseURL ()
	{
		id result = invokeObjcSelf!(id, "baseURL"return result is this.objcObject ? this : (result !is null ? new NSURL(result) : null);	}

	NSURL absoluteURL ()
	{
		id result = invokeObjcSelf!(id, "absoluteURL"return result is this.objcObject ? this : (result !is null ? new NSURL(result) : null);	}

	NSString scheme ()
	{
		return invokeObjcSelf!(NSString, "scheme");
	}

	NSString resourceSpecifier ()
	{
		return invokeObjcSelf!(NSString, "resourceSpecifier");
	}

	NSString host ()
	{
		return invokeObjcSelf!(NSString, "host");
	}

	NSNumber port ()
	{
		return invokeObjcSelf!(NSNumber, "port");
	}

	NSString user ()
	{
		return invokeObjcSelf!(NSString, "user");
	}

	NSString password ()
	{
		return invokeObjcSelf!(NSString, "password");
	}

	NSString path ()
	{
		return invokeObjcSelf!(NSString, "path");
	}

	NSString fragment ()
	{
		return invokeObjcSelf!(NSString, "fragment");
	}

	NSString parameterString ()
	{
		return invokeObjcSelf!(NSString, "parameterString");
	}

	NSString query ()
	{
		return invokeObjcSelf!(NSString, "query");
	}

	NSString relativePath ()
	{
		return invokeObjcSelf!(NSString, "relativePath");
	}

	bool isFileURL ()
	{
		return invokeObjcSelf!(bool, "isFileURL");
	}

	NSURL standardizedURL ()
	{
		id result = invokeObjcSelf!(id, "standardizedURL"return result is this.objcObject ? this : (result !is null ? new NSURL(result) : null);	}

	void encodeWithCoder (NSCoder aCoder)
	{
		return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder);
	}

	Object initWithCoder (NSCoder aDecoder)
	{
		return invokeObjcSelf!(Object, "initWithCoder:", NSCoder)(aDecoder);
	}

	this (NSCoder aDecoder)
	{
		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
		id result = Bridge.invokeObjcMethod!(id, "initWithCoder:", NSCoder)(objcObject, aDecoder);

		if (result)
			objcObject = ret;

		dObject = this;
	}

	Object copyWithZone (NSZone* zone)
	{
		return invokeObjcSelf!(Object, "copyWithZone:", NSZone*)(zone);
	}

	void URLHandle (NSURLHandle sender, NSData newBytes)
	{
		return invokeObjcSelf!(void, "URLHandle:resourceDataDidBecomeAvailable:", NSURLHandle, NSData)(sender, newBytes);
	}

	void URLHandleResourceDidBeginLoading (NSURLHandle sender)
	{
		return invokeObjcSelf!(void, "URLHandleResourceDidBeginLoading:", NSURLHandle)(sender);
	}

	void URLHandleResourceDidFinishLoading (NSURLHandle sender)
	{
		return invokeObjcSelf!(void, "URLHandleResourceDidFinishLoading:", NSURLHandle)(sender);
	}

	void URLHandleResourceDidCancelLoading (NSURLHandle sender)
	{
		return invokeObjcSelf!(void, "URLHandleResourceDidCancelLoading:", NSURLHandle)(sender);
	}

	void URLHandle (NSURLHandle sender, NSString reason)
	{
		return invokeObjcSelf!(void, "URLHandle:resourceDidFailLoadingWithReason:", NSURLHandle, NSString)(sender, reason);
	}
}

template 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 TNSURLClient ()
{
	void URL (NSURL sender, NSData newBytes);
	void URLResourceDidFinishLoading (NSURL sender);
	void URLResourceDidCancelLoading (NSURL sender);
	void URL (NSURL sender, NSString reason);
}

template TNSURLUtilities ()
{
	NSString stringByAddingPercentEscapesUsingEncoding (uint enc)
	{
		return invokeObjcSelf!(NSString, "stringByAddingPercentEscapesUsingEncoding:", uint)(enc);
	}

	NSString stringByReplacingPercentEscapesUsingEncoding (uint enc)
	{
		return invokeObjcSelf!(NSString, "stringByReplacingPercentEscapesUsingEncoding:", uint)(enc);
	}
}