Mercurial > projects > dstep
diff dstep/foundation/NSNumberFormatter.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/NSNumberFormatter.d Mon Aug 03 15:31:48 2009 +0200 +++ b/dstep/foundation/NSNumberFormatter.d Sun Jan 03 22:06:11 2010 +0100 @@ -7,13 +7,19 @@ module dstep.foundation.NSNumberFormatter; import dstep.corefoundation.CFNumberFormatter; -import dstep.foundation.NSDecimalNumberHandler; + +import dstep.foundation.NSAttributedString; +import dstep.foundation.NSDecimalNumber; +import dstep.foundation.NSDictionary; import dstep.foundation.NSError; import dstep.foundation.NSFormatter; import dstep.foundation.NSLocale; -import dstep.foundation.NSMutableDictionary; +import dstep.foundation.NSObjCRuntime; +import dstep.foundation.NSRange; +import dstep.foundation.NSString; +import dstep.foundation.NSValue; import dstep.objc.bridge.Bridge; -import dstep.objc.objc : id; +import dstep.objc.objc; alias NSUInteger NSNumberFormatterStyle; alias NSUInteger NSNumberFormatterBehavior; @@ -56,30 +62,116 @@ NSNumberFormatterRoundHalfUp = kCFNumberFormatterRoundHalfUp } +const TNSNumberFormatterCompatibility = ` + + bool hasThousandSeparators () + { + return invokeObjcSelf!(bool, "hasThousandSeparators"); + } + + void setHasThousandSeparators (bool flag) + { + return invokeObjcSelf!(void, "setHasThousandSeparators:", bool)(flag); + } + + NSString thousandSeparator () + { + return invokeObjcSelf!(NSString, "thousandSeparator"); + } + + void setThousandSeparator (NSString newSeparator) + { + return invokeObjcSelf!(void, "setThousandSeparator:", NSString)(newSeparator); + } + + bool localizesFormat () + { + return invokeObjcSelf!(bool, "localizesFormat"); + } + + void setLocalizesFormat (bool flag) + { + return invokeObjcSelf!(void, "setLocalizesFormat:", bool)(flag); + } + + NSString format () + { + return invokeObjcSelf!(NSString, "format"); + } + + void setFormat (NSString string) + { + return invokeObjcSelf!(void, "setFormat:", NSString)(string); + } + + NSAttributedString attributedStringForZero () + { + return invokeObjcSelf!(NSAttributedString, "attributedStringForZero"); + } + + void setAttributedStringForZero (NSAttributedString newAttributedString) + { + return invokeObjcSelf!(void, "setAttributedStringForZero:", NSAttributedString)(newAttributedString); + } + + NSAttributedString attributedStringForNil () + { + return invokeObjcSelf!(NSAttributedString, "attributedStringForNil"); + } + + void setAttributedStringForNil (NSAttributedString newAttributedString) + { + return invokeObjcSelf!(void, "setAttributedStringForNil:", NSAttributedString)(newAttributedString); + } + + NSAttributedString attributedStringForNotANumber () + { + return invokeObjcSelf!(NSAttributedString, "attributedStringForNotANumber"); + } + + void setAttributedStringForNotANumber (NSAttributedString newAttributedString) + { + return invokeObjcSelf!(void, "setAttributedStringForNotANumber:", NSAttributedString)(newAttributedString); + } + + NSDecimalNumberHandler roundingBehavior () + { + return invokeObjcSelf!(NSDecimalNumberHandler, "roundingBehavior"); + } + + void setRoundingBehavior (NSDecimalNumberHandler newRoundingBehavior) + { + return invokeObjcSelf!(void, "setRoundingBehavior:", NSDecimalNumberHandler)(newRoundingBehavior); + } +`; + class NSNumberFormatter : NSFormatter { - mixin ObjcWrap; - mixin TNSNumberFormatterCompatibility; - - Object init () - { - return invokeObjcSelf!(Object, "init"); - } - + mixin (ObjcWrap); + this () { - objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); - id result = Bridge.invokeObjcMethod!(id, "init")(objcObject); - - if (result) - objcObject = ret; - - dObject = this; + super(typeof(this).alloc.init.objcObject); + } + + typeof(this) init () + { + return invokeObjcSelf!(typeof(this), "init"); } - bool getObjectValue (id* obj, NSString string, NSRange* rangep, NSError** error) + bool getObjectValue (id* obj, NSString string, NSRange* rangep, ref NSError error) { - return invokeObjcSelf!(bool, "getObjectValue:forString:range:error:", id*, NSString, NSRange*, NSError**)(obj, string, rangep, error); + id err; + + if (error) + err = new objc_object; + + bool result = invokeObjcSelf!(bool, "getObjectValue:forString:range:error:", id*, NSString, NSRange*, id*)(obj, string, rangep, &err); + + if (err) + error = new NSError(err); + + return result; } NSString stringFromNumber (NSNumber number) @@ -134,12 +226,12 @@ static uint defaultFormatterBehavior () { - return invokeObjcSelfClass!(uint, "defaultFormatterBehavior"); + return invokeObjcSuperClass!(uint, "defaultFormatterBehavior"); } static void setDefaultFormatterBehavior (uint behavior) { - return invokeObjcSelfClass!(void, "setDefaultFormatterBehavior:", uint)(behavior); + return invokeObjcSuperClass!(void, "setDefaultFormatterBehavior:", uint)(behavior); } NSString negativeFormat () @@ -661,88 +753,85 @@ { return invokeObjcSelf!(void, "setPartialStringValidationEnabled:", bool)(b); } -} - -template TNSNumberFormatterCompatibility () -{ + + // TNSNumberFormatterCompatibility bool hasThousandSeparators () { return invokeObjcSelf!(bool, "hasThousandSeparators"); } - + void setHasThousandSeparators (bool flag) { return invokeObjcSelf!(void, "setHasThousandSeparators:", bool)(flag); } - + NSString thousandSeparator () { return invokeObjcSelf!(NSString, "thousandSeparator"); } - + void setThousandSeparator (NSString newSeparator) { return invokeObjcSelf!(void, "setThousandSeparator:", NSString)(newSeparator); } - + bool localizesFormat () { return invokeObjcSelf!(bool, "localizesFormat"); } - + void setLocalizesFormat (bool flag) { return invokeObjcSelf!(void, "setLocalizesFormat:", bool)(flag); } - + NSString format () { return invokeObjcSelf!(NSString, "format"); } - + void setFormat (NSString string) { return invokeObjcSelf!(void, "setFormat:", NSString)(string); } - + NSAttributedString attributedStringForZero () { return invokeObjcSelf!(NSAttributedString, "attributedStringForZero"); } - + void setAttributedStringForZero (NSAttributedString newAttributedString) { return invokeObjcSelf!(void, "setAttributedStringForZero:", NSAttributedString)(newAttributedString); } - + NSAttributedString attributedStringForNil () { return invokeObjcSelf!(NSAttributedString, "attributedStringForNil"); } - + void setAttributedStringForNil (NSAttributedString newAttributedString) { return invokeObjcSelf!(void, "setAttributedStringForNil:", NSAttributedString)(newAttributedString); } - + NSAttributedString attributedStringForNotANumber () { return invokeObjcSelf!(NSAttributedString, "attributedStringForNotANumber"); } - + void setAttributedStringForNotANumber (NSAttributedString newAttributedString) { return invokeObjcSelf!(void, "setAttributedStringForNotANumber:", NSAttributedString)(newAttributedString); } - + NSDecimalNumberHandler roundingBehavior () { return invokeObjcSelf!(NSDecimalNumberHandler, "roundingBehavior"); } - + void setRoundingBehavior (NSDecimalNumberHandler newRoundingBehavior) { return invokeObjcSelf!(void, "setRoundingBehavior:", NSDecimalNumberHandler)(newRoundingBehavior); } -} - +} \ No newline at end of file