use 10.0 behavior if we have no ICU

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@32260 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
rfm 2011-02-21 12:36:18 +00:00
parent 01c97b7b78
commit 5eb6815b5e
3 changed files with 63 additions and 17 deletions

View file

@ -1,3 +1,10 @@
2011-02-21 Richard Frith-Macdonald <rfm@gnu.org>
* Source/NSNumberFormatter.m:
* Headers/Foundation/NSNumberFormatter.h:
If we don't have ICU then the actual behavior is 10.0 style
irrespective of the formatter behavior setting.
2011-02-21 11:05 David Chisnall <theraven@gna.org>
* libs/base/trunk/Source/GSFFIInvocation.m: Some changes to method

View file

@ -83,7 +83,7 @@ typedef NSUInteger NSNumberFormatterRoundingMode;
#endif
/**
* <p><em><strong>This class is currently not implemented in GNUstep! All set
* <p><em><strong>This class is currently not fully implemented! All set
* methods will work, but stringForObject: will ignore the format completely.
* The documentation below describes what the behavior SHOULD
* be...</strong></em></p>
@ -153,7 +153,6 @@ GS_NSNumberFormatter_IVARS;
#endif
}
// Format
/**
* Returns the format string this instance was initialized with.
*/
@ -358,10 +357,31 @@ GS_NSNumberFormatter_IVARS;
- (void) setMinimum: (NSDecimalNumber*)aMinimum;
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
/** Sets the behavior of the formatter.<br />
* NB. If GNUstep has been built without the ICU library,
* NSNumberFormatterBehavior10_0 is currently used irrespective of
* this setting.
*/
- (void) setFormatterBehavior: (NSNumberFormatterBehavior) behavior;
/** Returns the behavior of the receiver, either the default behavior
* set for number formatters, or the behavior specified by an earlier
* call to the -setFormatterBehavior: method.
*/
- (NSNumberFormatterBehavior) formatterBehavior;
/** Sets the default behavior of number formatters.<br />
* NB. If GNUstep has been built without the ICU library,
* NSNumberFormatterBehavior10_0 is currently used irrespective of
* this setting.
*/
+ (void) setDefaultFormatterBehavior: (NSNumberFormatterBehavior) behavior;
/** Returns the formatter behavior previously set as the default
* using the +setDefaultFormatterBehavior: method.
*/
+ (NSNumberFormatterBehavior) defaultFormatterBehavior;
- (void) setNumberStyle: (NSNumberFormatterStyle) style;
- (NSNumberFormatterStyle) numberStyle;
- (void) setGeneratesDecimalNumbers: (BOOL) flag;

View file

@ -222,7 +222,13 @@ GS_PRIVATE_INTERNAL(NSNumberFormatter)
@implementation NSNumberFormatter
static NSUInteger _defaultBehavior = 0;
static NSUInteger _defaultBehavior = NSNumberFormatterBehavior10_4;
#if GS_USE_ICU == 1
#define MYBEHAVIOR internal->_behavior
#else
#define MYBEHAVIOR NSNumberFormatterBehavior10_0
#endif
- (BOOL) allowsFloats
{
@ -337,14 +343,14 @@ static NSUInteger _defaultBehavior = 0;
- (NSString*) decimalSeparator
{
if (internal->_behavior == NSNumberFormatterBehavior10_4
|| internal->_behavior == NSNumberFormatterBehaviorDefault)
if (MYBEHAVIOR == NSNumberFormatterBehavior10_4
|| MYBEHAVIOR == NSNumberFormatterBehaviorDefault)
{
#if GS_USE_ICU == 1
return [self _getSymbol: UNUM_DECIMAL_SEPARATOR_SYMBOL];
#endif
}
else if (internal->_behavior == NSNumberFormatterBehavior10_0)
else if (MYBEHAVIOR == NSNumberFormatterBehavior10_0)
{
if (_decimalSeparator == 0)
return @"";
@ -648,14 +654,14 @@ static NSUInteger _defaultBehavior = 0;
- (void) setDecimalSeparator: (NSString*)newSeparator
{
if (internal->_behavior == NSNumberFormatterBehavior10_4
|| internal->_behavior == NSNumberFormatterBehaviorDefault)
if (MYBEHAVIOR == NSNumberFormatterBehavior10_4
|| MYBEHAVIOR == NSNumberFormatterBehaviorDefault)
{
#if GS_USE_ICU == 1
[self _setSymbol: newSeparator : UNUM_DECIMAL_SEPARATOR_SYMBOL];
#endif
}
else if (internal->_behavior == NSNumberFormatterBehavior10_0)
else if (MYBEHAVIOR == NSNumberFormatterBehavior10_0)
{
if ([newSeparator length] > 0)
_decimalSeparator = [newSeparator characterAtIndex: 0];
@ -752,8 +758,8 @@ static NSUInteger _defaultBehavior = 0;
- (NSString*) stringForObjectValue: (id)anObject
{
if (internal->_behavior == NSNumberFormatterBehaviorDefault
|| internal->_behavior == NSNumberFormatterBehavior10_4)
if (MYBEHAVIOR == NSNumberFormatterBehaviorDefault
|| MYBEHAVIOR == NSNumberFormatterBehavior10_4)
{
#if GS_USE_ICU == 1
@ -823,7 +829,7 @@ static NSUInteger _defaultBehavior = 0;
}
#endif
}
else if (internal->_behavior == NSNumberFormatterBehavior10_0)
else if (MYBEHAVIOR == NSNumberFormatterBehavior10_0)
{
NSMutableDictionary *locale;
NSCharacterSet *formattingCharacters;
@ -1162,19 +1168,32 @@ static NSUInteger _defaultBehavior = 0;
- (void) setFormatterBehavior: (NSNumberFormatterBehavior) behavior
- (void) setFormatterBehavior: (NSNumberFormatterBehavior)behavior
{
internal->_behavior = behavior;
if (NSNumberFormatterBehavior10_4 == behavior
|| NSNumberFormatterBehavior10_0 == behavior
|| NSNumberFormatterBehaviorDefault == behavior)
{
internal->_behavior = behavior;
}
}
- (NSNumberFormatterBehavior) formatterBehavior
- (NSNumberFormatterBehavior)formatterBehavior
{
return internal->_behavior;
}
+ (void) setDefaultFormatterBehavior: (NSNumberFormatterBehavior) behavior
+ (void) setDefaultFormatterBehavior: (NSNumberFormatterBehavior)behavior
{
_defaultBehavior = behavior;
if (NSNumberFormatterBehavior10_0 == behavior)
{
_defaultBehavior = behavior;
}
else if (NSNumberFormatterBehavior10_4 == behavior
|| NSNumberFormatterBehaviorDefault == behavior)
{
_defaultBehavior = NSNumberFormatterBehavior10_4;
}
}
+ (NSNumberFormatterBehavior) defaultFormatterBehavior