diff dstep/foundation/NSDecimalNumber.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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dstep/foundation/NSDecimalNumber.d	Mon Aug 03 15:23:15 2009 +0200
@@ -0,0 +1,312 @@
+/**
+ * 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.NSDecimalNumber;
+
+import dstep.foundation.NSDecimal;
+import dstep.foundation.NSDictionary;
+import dstep.foundation.NSScanner;
+import dstep.foundation.NSValue;
+import dstep.objc.bridge.Bridge;
+import dstep.objc.objc : id;
+
+import bindings = dstep.foundation.NSDecimalNumber_bindings;
+
+const NSString NSDecimalNumberExactnessException;
+const NSString NSDecimalNumberOverflowException;
+const NSString NSDecimalNumberUnderflowException;
+const NSString NSDecimalNumberDivideByZeroException;
+
+static this ()
+{
+	NSDecimalNumberExactnessException = new NSString(bindings.NSDecimalNumberExactnessException);
+	NSDecimalNumberOverflowException = new NSString(bindings.NSDecimalNumberOverflowException);
+	NSDecimalNumberUnderflowException = new NSString(bindings.NSDecimalNumberUnderflowException);
+	NSDecimalNumberDivideByZeroException = new NSString(bindings.NSDecimalNumberDivideByZeroException);
+}
+
+class NSDecimalNumber : NSNumber
+{
+	mixin ObjcWrap;
+
+	Object initWithMantissa (ulong mantissa, short exponent, bool flag)
+	{
+		return invokeObjcSelf!(Object, "initWithMantissa:exponent:isNegative:", ulong, short, bool)(mantissa, exponent, flag);
+	}
+
+	this (ulong mantissa, short exponent, bool flag)
+	{
+		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
+		id result = Bridge.invokeObjcMethod!(id, "initWithMantissa:exponent:isNegative:", ulong, short, bool)(objcObject, mantissa, exponent, flag);
+
+		if (result)
+			objcObject = ret;
+
+		dObject = this;
+	}
+
+	Object initWithDecimal (NSDecimal dcm)
+	{
+		return invokeObjcSelf!(Object, "initWithDecimal:", NSDecimal)(dcm);
+	}
+
+	this (NSDecimal dcm)
+	{
+		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
+		id result = Bridge.invokeObjcMethod!(id, "initWithDecimal:", NSDecimal)(objcObject, dcm);
+
+		if (result)
+			objcObject = ret;
+
+		dObject = this;
+	}
+
+	Object initWithString (NSString numberValue)
+	{
+		return invokeObjcSelf!(Object, "initWithString:", NSString)(numberValue);
+	}
+
+	this (NSString numberValue)
+	{
+		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
+		id result = Bridge.invokeObjcMethod!(id, "initWithString:", NSString)(objcObject, numberValue);
+
+		if (result)
+			objcObject = ret;
+
+		dObject = this;
+	}
+
+	Object initWithString (NSString numberValue, Object locale)
+	{
+		return invokeObjcSelf!(Object, "initWithString:locale:", NSString, Object)(numberValue, locale);
+	}
+
+	this (NSString numberValue, Object locale)
+	{
+		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
+		id result = Bridge.invokeObjcMethod!(id, "initWithString:locale:", NSString, Object)(objcObject, numberValue, locale);
+
+		if (result)
+			objcObject = ret;
+
+		dObject = this;
+	}
+
+	NSString descriptionWithLocale (Object locale)
+	{
+		return invokeObjcSelf!(NSString, "descriptionWithLocale:", Object)(locale);
+	}
+
+	NSDecimal decimalValue ()
+	{
+		return invokeObjcSelf!(NSDecimal, "decimalValue");
+	}
+
+	static NSDecimalNumber decimalNumberWithMantissa (ulong mantissa, short exponent, bool flag)
+	{
+		return invokeObjcSelfClass!(NSDecimalNumber, "decimalNumberWithMantissa:exponent:isNegative:", ulong, short, bool)(mantissa, exponent, flagreturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	static NSDecimalNumber decimalNumberWithDecimal (NSDecimal dcm)
+	{
+		return invokeObjcSelfClass!(NSDecimalNumber, "decimalNumberWithDecimal:", NSDecimal)(dcmreturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	static NSDecimalNumber decimalNumberWithString (NSString numberValue)
+	{
+		return invokeObjcSelfClass!(NSDecimalNumber, "decimalNumberWithString:", NSString)(numberValuereturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	static NSDecimalNumber decimalNumberWithString (NSString numberValue, Object locale)
+	{
+		return invokeObjcSelfClass!(NSDecimalNumber, "decimalNumberWithString:locale:", NSString, Object)(numberValue, localereturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	static NSDecimalNumber zero ()
+	{
+		return invokeObjcSelfClass!(NSDecimalNumber, "zero"return result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	static NSDecimalNumber one ()
+	{
+		return invokeObjcSelfClass!(NSDecimalNumber, "one"return result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	static NSDecimalNumber minimumDecimalNumber ()
+	{
+		return invokeObjcSelfClass!(NSDecimalNumber, "minimumDecimalNumber"return result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	static NSDecimalNumber maximumDecimalNumber ()
+	{
+		return invokeObjcSelfClass!(NSDecimalNumber, "maximumDecimalNumber"return result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	static NSDecimalNumber notANumber ()
+	{
+		return invokeObjcSelfClass!(NSDecimalNumber, "notANumber"return result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	NSDecimalNumber decimalNumberByAdding (NSDecimalNumber decimalNumber)
+	{
+		id result = invokeObjcSelf!(id, "decimalNumberByAdding:", NSDecimalNumber)(decimalNumberreturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	NSDecimalNumber decimalNumberByAdding (NSDecimalNumber decimalNumber, INSDecimalNumberBehaviors behavior)
+	{
+		id result = invokeObjcSelf!(id, "decimalNumberByAdding:withBehavior:", NSDecimalNumber, INSDecimalNumberBehaviors)(decimalNumber, behaviorreturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	NSDecimalNumber decimalNumberBySubtracting (NSDecimalNumber decimalNumber)
+	{
+		id result = invokeObjcSelf!(id, "decimalNumberBySubtracting:", NSDecimalNumber)(decimalNumberreturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	NSDecimalNumber decimalNumberBySubtracting (NSDecimalNumber decimalNumber, INSDecimalNumberBehaviors behavior)
+	{
+		id result = invokeObjcSelf!(id, "decimalNumberBySubtracting:withBehavior:", NSDecimalNumber, INSDecimalNumberBehaviors)(decimalNumber, behaviorreturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	NSDecimalNumber decimalNumberByMultiplyingBy (NSDecimalNumber decimalNumber)
+	{
+		id result = invokeObjcSelf!(id, "decimalNumberByMultiplyingBy:", NSDecimalNumber)(decimalNumberreturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	NSDecimalNumber decimalNumberByMultiplyingBy (NSDecimalNumber decimalNumber, INSDecimalNumberBehaviors behavior)
+	{
+		id result = invokeObjcSelf!(id, "decimalNumberByMultiplyingBy:withBehavior:", NSDecimalNumber, INSDecimalNumberBehaviors)(decimalNumber, behaviorreturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	NSDecimalNumber decimalNumberByDividingBy (NSDecimalNumber decimalNumber)
+	{
+		id result = invokeObjcSelf!(id, "decimalNumberByDividingBy:", NSDecimalNumber)(decimalNumberreturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	NSDecimalNumber decimalNumberByDividingBy (NSDecimalNumber decimalNumber, INSDecimalNumberBehaviors behavior)
+	{
+		id result = invokeObjcSelf!(id, "decimalNumberByDividingBy:withBehavior:", NSDecimalNumber, INSDecimalNumberBehaviors)(decimalNumber, behaviorreturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	NSDecimalNumber decimalNumberByRaisingToPower (NSUInteger power)
+	{
+		id result = invokeObjcSelf!(id, "decimalNumberByRaisingToPower:", NSUInteger)(powerreturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	NSDecimalNumber decimalNumberByRaisingToPower (NSUInteger power, INSDecimalNumberBehaviors behavior)
+	{
+		id result = invokeObjcSelf!(id, "decimalNumberByRaisingToPower:withBehavior:", NSUInteger, INSDecimalNumberBehaviors)(power, behaviorreturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	NSDecimalNumber decimalNumberByMultiplyingByPowerOf10 (short power)
+	{
+		id result = invokeObjcSelf!(id, "decimalNumberByMultiplyingByPowerOf10:", short)(powerreturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	NSDecimalNumber decimalNumberByMultiplyingByPowerOf10 (short power, INSDecimalNumberBehaviors behavior)
+	{
+		id result = invokeObjcSelf!(id, "decimalNumberByMultiplyingByPowerOf10:withBehavior:", short, INSDecimalNumberBehaviors)(power, behaviorreturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	NSDecimalNumber decimalNumberByRoundingAccordingToBehavior (INSDecimalNumberBehaviors behavior)
+	{
+		id result = invokeObjcSelf!(id, "decimalNumberByRoundingAccordingToBehavior:", INSDecimalNumberBehaviors)(behaviorreturn result is this.objcObject ? this : (result !is null ? new NSDecimalNumber(result) : null);	}
+
+	int compare (NSNumber decimalNumber)
+	{
+		return invokeObjcSelf!(int, "compare:", NSNumber)(decimalNumber);
+	}
+
+	static void setDefaultBehavior (INSDecimalNumberBehaviors behavior)
+	{
+		return invokeObjcSelfClass!(void, "setDefaultBehavior:", INSDecimalNumberBehaviors)(behavior);
+	}
+
+	static INSDecimalNumberBehaviors defaultBehavior ()
+	{
+		return invokeObjcSelfClass!(INSDecimalNumberBehaviors, "defaultBehavior");
+	}
+
+	char* objCType ()
+	{
+		return invokeObjcSelf!(char*, "objCType");
+	}
+
+	double doubleValue ()
+	{
+		return invokeObjcSelf!(double, "doubleValue");
+	}
+}
+
+class NSDecimalNumberHandler : NSObject, INSDecimalNumberBehaviors, INSCoding
+{
+	mixin ObjcWrap;
+
+	static Object defaultDecimalNumberHandler ()
+	{
+		return invokeObjcSelfClass!(Object, "defaultDecimalNumberHandler");
+	}
+
+	Object initWithRoundingMode (uint roundingMode, short scale, bool exact, bool overflow, bool underflow, bool divideByZero)
+	{
+		return invokeObjcSelf!(Object, "initWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:", uint, short, bool, bool, bool, bool)(roundingMode, scale, exact, overflow, underflow, divideByZero);
+	}
+
+	this (uint roundingMode, short scale, bool exact, bool overflow, bool underflow, bool divideByZero)
+	{
+		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
+		id result = Bridge.invokeObjcMethod!(id, "initWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:", uint, short, bool, bool, bool, bool)(objcObject, roundingMode, scale, exact, overflow, underflow, divideByZero);
+
+		if (result)
+			objcObject = ret;
+
+		dObject = this;
+	}
+
+	static Object decimalNumberHandlerWithRoundingMode (uint roundingMode, short scale, bool exact, bool overflow, bool underflow, bool divideByZero)
+	{
+		return invokeObjcSelfClass!(Object, "decimalNumberHandlerWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:", uint, short, bool, bool, bool, bool)(roundingMode, scale, exact, overflow, underflow, divideByZero);
+	}
+
+	uint roundingMode ()
+	{
+		return invokeObjcSelf!(uint, "roundingMode");
+	}
+
+	short scale ()
+	{
+		return invokeObjcSelf!(short, "scale");
+	}
+
+	NSDecimalNumber exceptionDuringOperation (SEL operation, uint error, NSDecimalNumber leftOperand, NSDecimalNumber rightOperand)
+	{
+		return invokeObjcSelf!(NSDecimalNumber, "exceptionDuringOperation:error:leftOperand:rightOperand:", SEL, uint, NSDecimalNumber, NSDecimalNumber)(operation, error, leftOperand, rightOperand);
+	}
+
+	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;
+	}
+}
+
+interface INSDecimalNumberBehaviors
+{
+	uint roundingMode ();
+	short scale ();
+	NSDecimalNumber exceptionDuringOperation (SEL operation, uint error, NSDecimalNumber leftOperand, NSDecimalNumber rightOperand);
+}
+
+template TNSDecimalNumberExtensions ()
+{
+	NSDecimal decimalValue ()
+	{
+		return invokeObjcSelf!(NSDecimal, "decimalValue");
+	}
+}
+
+template TNSDecimalNumberScanning ()
+{
+	bool scanDecimal (NSDecimal* dcm)
+	{
+		return invokeObjcSelf!(bool, "scanDecimal:", NSDecimal*)(dcm);
+	}
+}
+