view dstep/foundation/NSScanner.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 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.NSScanner;

import dstep.foundation.NSCharacterSet;
import dstep.foundation.NSDecimal;
import dstep.foundation.NSDecimalNumber;
import dstep.foundation.NSDictionary;
import dstep.foundation.NSObjCRuntime;
import dstep.foundation.NSObject;
import dstep.foundation.NSString;
import dstep.foundation.NSZone;
import dstep.internal.Version;
import dstep.objc.bridge.Bridge;
import dstep.objc.objc;

const TNSExtendedScanner = `

	NSCharacterSet charactersToBeSkipped ()
	{
		return invokeObjcSelf!(NSCharacterSet, "charactersToBeSkipped");
	}

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

	Object locale ()
	{
		return invokeObjcSelf!(Object, "locale");
	}

	bool scanInt (int* value)
	{
		return invokeObjcSelf!(bool, "scanInt:", int*)(value);
	}

	bool scanInteger (NSInteger* value)
	{
		return invokeObjcSelf!(bool, "scanInteger:", NSInteger*)(value);
	}

	bool scanHexLongLong (ulong* result)
	{
		return invokeObjcSelf!(bool, "scanHexLongLong:", ulong*)(result);
	}

	bool scanHexFloat (float* result)
	{
		return invokeObjcSelf!(bool, "scanHexFloat:", float*)(result);
	}

	bool scanHexDouble (double* result)
	{
		return invokeObjcSelf!(bool, "scanHexDouble:", double*)(result);
	}

	bool scanHexInt (uint* value)
	{
		return invokeObjcSelf!(bool, "scanHexInt:", uint*)(value);
	}

	bool scanLongLong (long* value)
	{
		return invokeObjcSelf!(bool, "scanLongLong:", long*)(value);
	}

	bool scanFloat (float* value)
	{
		return invokeObjcSelf!(bool, "scanFloat:", float*)(value);
	}

	bool scanDouble (double* value)
	{
		return invokeObjcSelf!(bool, "scanDouble:", double*)(value);
	}

	bool scanString (NSString string, ref NSString value)
	{
		id val;
		
		if (value)
			val = new objc_object;
				
		bool result = invokeObjcSelf!(bool, "scanString:intoString:", NSString, id*)(string, &val);
		
		if (val)
			value = new NSString(val);
		
		return result;
	}

	bool scanCharactersFromSet (NSCharacterSet set, ref NSString value)
	{
		id val;
		
		if (value)
			val = new objc_object;
		
		bool result =  invokeObjcSelf!(bool, "scanCharactersFromSet:intoString:", NSCharacterSet, id*)(set, &val);
		
		if (val)
			value = new NSString(val);
		
		return result;
	}

	bool scanUpToString (NSString string, ref NSString value)
	{
		id val;
		
		if (value)
			val = new objc_object;
		
		bool result = invokeObjcSelf!(bool, "scanUpToString:intoString:", NSString, id*)(string, &val);
		
		if (val)
			value = new NSString(val);
		
		return result;
	}

	bool scanUpToCharactersFromSet (NSCharacterSet set, ref NSString value)
	{
		id val;
		
		if (value)
			val = new objc_object;
		
		bool result = invokeObjcSelf!(bool, "scanUpToCharactersFromSet:intoString:", NSCharacterSet, id*)(set, &val);
		
		if (val)
			value = new NSString(val);
		
		return result;
	}

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

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

	this (NSString string)
	{
		typeof(this).alloc.initWithString(string);
	}

	static Object scannerWithString (NSString string)
	{
		return invokeObjcSuperClass!(Object, "scannerWithString:", NSString)(string);
	}

	static Object localizedScannerWithString (NSString string)
	{
		return invokeObjcSuperClass!(Object, "localizedScannerWithString:", NSString)(string);
	}
`;

class NSScanner : NSObject, INSCopying
{
	mixin (ObjcWrap);
	
	this ()
	{
		super(typeof(this).alloc.init.objcObject);
	}
	
	typeof(this) init ()
	{
		return invokeObjcSelf!(typeof(this), "init");
	}

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

	NSUInteger scanLocation ()
	{
		return invokeObjcSelf!(NSUInteger, "scanLocation");
	}

	void setScanLocation (NSUInteger pos)
	{
		return invokeObjcSelf!(void, "setScanLocation:", NSUInteger)(pos);
	}

	void setCharactersToBeSkipped (NSCharacterSet set)
	{
		return invokeObjcSelf!(void, "setCharactersToBeSkipped:", NSCharacterSet)(set);
	}

	void setCaseSensitive (bool flag)
	{
		return invokeObjcSelf!(void, "setCaseSensitive:", bool)(flag);
	}

	void setLocale (Object locale)
	{
		return invokeObjcSelf!(void, "setLocale:", Object)(locale);
	}

	Object copyWithZone (NSZone* zone)
	{
		return invokeObjcSelf!(Object, "copyWithZone:", NSZone*)(zone);
	}
	
	// TNSDecimalNumberScanning
	bool scanDecimal (NSDecimal* dcm)
	{
		return invokeObjcSelf!(bool, "scanDecimal:", NSDecimal*)(dcm);
	}
	
	// TNSExtendedScanner
	NSCharacterSet charactersToBeSkipped ()
	{
		return invokeObjcSelf!(NSCharacterSet, "charactersToBeSkipped");
	}
	
	bool caseSensitive ()
	{
		return invokeObjcSelf!(bool, "caseSensitive");
	}
	
	Object locale ()
	{
		return invokeObjcSelf!(Object, "locale");
	}
	
	bool scanInt (int* value)
	{
		return invokeObjcSelf!(bool, "scanInt:", int*)(value);
	}
	
	bool scanInteger (NSInteger* value)
	{
		return invokeObjcSelf!(bool, "scanInteger:", NSInteger*)(value);
	}
	
	bool scanHexLongLong (ulong* result)
	{
		return invokeObjcSelf!(bool, "scanHexLongLong:", ulong*)(result);
	}
	
	bool scanHexFloat (float* result)
	{
		return invokeObjcSelf!(bool, "scanHexFloat:", float*)(result);
	}
	
	bool scanHexDouble (double* result)
	{
		return invokeObjcSelf!(bool, "scanHexDouble:", double*)(result);
	}
	
	bool scanHexInt (uint* value)
	{
		return invokeObjcSelf!(bool, "scanHexInt:", uint*)(value);
	}
	
	bool scanLongLong (long* value)
	{
		return invokeObjcSelf!(bool, "scanLongLong:", long*)(value);
	}
	
	bool scanFloat (float* value)
	{
		return invokeObjcSelf!(bool, "scanFloat:", float*)(value);
	}
	
	bool scanDouble (double* value)
	{
		return invokeObjcSelf!(bool, "scanDouble:", double*)(value);
	}
	
	bool scanString (NSString string, ref NSString value)
	{
		id val;
		
		if (value)
			val = new objc_object;
		
		bool result = invokeObjcSelf!(bool, "scanString:intoString:", NSString, id*)(string, &val);
		
		if (val)
			value = new NSString(val);
		
		return result;
	}
	
	bool scanCharactersFromSet (NSCharacterSet set, ref NSString value)
	{
		id val;
		
		if (value)
			val = new objc_object;
		
		bool result =  invokeObjcSelf!(bool, "scanCharactersFromSet:intoString:", NSCharacterSet, id*)(set, &val);
		
		if (val)
			value = new NSString(val);
		
		return result;
	}
	
	bool scanUpToString (NSString string, ref NSString value)
	{
		id val;
		
		if (value)
			val = new objc_object;
		
		bool result = invokeObjcSelf!(bool, "scanUpToString:intoString:", NSString, id*)(string, &val);
		
		if (val)
			value = new NSString(val);
		
		return result;
	}
	
	bool scanUpToCharactersFromSet (NSCharacterSet set, ref NSString value)
	{
		id val;
		
		if (value)
			val = new objc_object;
		
		bool result = invokeObjcSelf!(bool, "scanUpToCharactersFromSet:intoString:", NSCharacterSet, id*)(set, &val);
		
		if (val)
			value = new NSString(val);
		
		return result;
	}
	
	bool isAtEnd ()
	{
		return invokeObjcSelf!(bool, "isAtEnd");
	}
	
	Object initWithString (NSString string)
	{
		return invokeObjcSelf!(Object, "initWithString:", NSString)(string);
	}
	
	this (NSString string)
	{
		typeof(this).alloc.initWithString(string);
	}
	
	static Object scannerWithString (NSString string)
	{
		return invokeObjcSuperClass!(Object, "scannerWithString:", NSString)(string);
	}
	
	static Object localizedScannerWithString (NSString string)
	{
		return invokeObjcSuperClass!(Object, "localizedScannerWithString:", NSString)(string);
	}
}