mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-23 00:41:02 +00:00
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:
parent
8e1fcfe9d5
commit
f756c612ca
3 changed files with 63 additions and 17 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue