-
Notifications
You must be signed in to change notification settings - Fork 2
/
CFNumberFormatter.h
198 lines (166 loc) · 9.03 KB
/
CFNumberFormatter.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
/*
* Copyright (c) 2008-2012 Brent Fulgham <[email protected]>. All rights reserved.
*
* This source code is a modified version of the CoreFoundation sources released by Apple Inc. under
* the terms of the APSL version 2.0 (see below).
*
* For information about changes from the original Apple source release can be found by reviewing the
* source control system for the project at https://sourceforge.net/svn/?group_id=246198.
*
* The original license information is as follows:
*
* Copyright (c) 2011 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://www.opensource.apple.com/apsl/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
/* CFNumberFormatter.h
Copyright (c) 2003-2011, Apple Inc. All rights reserved.
*/
#if !defined(__COREFOUNDATION_CFNUMBERFORMATTER__)
#define __COREFOUNDATION_CFNUMBERFORMATTER__ 1
#include <CoreFoundation/CFBase.h>
#include <CoreFoundation/CFNumber.h>
#include <CoreFoundation/CFLocale.h>
CF_EXTERN_C_BEGIN
typedef struct __CFNumberFormatter *CFNumberFormatterRef;
// CFNumberFormatters are not thread-safe. Do not use one from multiple threads!
CF_EXPORT
CFTypeID CFNumberFormatterGetTypeID(void);
enum { // number format styles
kCFNumberFormatterNoStyle = 0,
kCFNumberFormatterDecimalStyle = 1,
kCFNumberFormatterCurrencyStyle = 2,
kCFNumberFormatterPercentStyle = 3,
kCFNumberFormatterScientificStyle = 4,
kCFNumberFormatterSpellOutStyle = 5
};
typedef CFIndex CFNumberFormatterStyle;
CF_EXPORT
CFNumberFormatterRef CFNumberFormatterCreate(CFAllocatorRef allocator, CFLocaleRef locale, CFNumberFormatterStyle style);
// Returns a CFNumberFormatter, localized to the given locale, which
// will format numbers to the given style.
CF_EXPORT
CFLocaleRef CFNumberFormatterGetLocale(CFNumberFormatterRef formatter);
CF_EXPORT
CFNumberFormatterStyle CFNumberFormatterGetStyle(CFNumberFormatterRef formatter);
// Get the properties with which the number formatter was created.
CF_EXPORT
CFStringRef CFNumberFormatterGetFormat(CFNumberFormatterRef formatter);
CF_EXPORT
void CFNumberFormatterSetFormat(CFNumberFormatterRef formatter, CFStringRef formatString);
// Set the format description string of the number formatter. This
// overrides the style settings. The format of the format string
// is as defined by the ICU library, and is similar to that found
// in Microsoft Excel and NSNumberFormatter (and Java I believe).
// The number formatter starts with a default format string defined
// by the style argument with which it was created.
CF_EXPORT
CFStringRef CFNumberFormatterCreateStringWithNumber(CFAllocatorRef allocator, CFNumberFormatterRef formatter, CFNumberRef number);
CF_EXPORT
CFStringRef CFNumberFormatterCreateStringWithValue(CFAllocatorRef allocator, CFNumberFormatterRef formatter, CFNumberType numberType, const void *valuePtr);
// Create a string representation of the given number or value
// using the current state of the number formatter.
enum {
kCFNumberFormatterParseIntegersOnly = 1 /* only parse integers */
};
typedef CFOptionFlags CFNumberFormatterOptionFlags;
CF_EXPORT
CFNumberRef CFNumberFormatterCreateNumberFromString(CFAllocatorRef allocator, CFNumberFormatterRef formatter, CFStringRef string, CFRange *rangep, CFOptionFlags options);
CF_EXPORT
Boolean CFNumberFormatterGetValueFromString(CFNumberFormatterRef formatter, CFStringRef string, CFRange *rangep, CFNumberType numberType, void *valuePtr);
// Parse a string representation of a number using the current state
// of the number formatter. The range parameter specifies the range
// of the string in which the parsing should occur in input, and on
// output indicates the extent that was used; this parameter can
// be NULL, in which case the whole string may be used. The
// return value indicates whether some number was computed and
// (if valuePtr is not NULL) stored at the location specified by
// valuePtr. The numberType indicates the type of value pointed
// to by valuePtr.
CF_EXPORT
void CFNumberFormatterSetProperty(CFNumberFormatterRef formatter, CFStringRef key, CFTypeRef value);
CF_EXPORT
CFTypeRef CFNumberFormatterCopyProperty(CFNumberFormatterRef formatter, CFStringRef key);
// Set and get various properties of the number formatter, the set of
// which may be expanded in the future.
CF_EXPORT const CFStringRef kCFNumberFormatterCurrencyCode; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterDecimalSeparator; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterCurrencyDecimalSeparator; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterAlwaysShowDecimalSeparator; // CFBoolean
CF_EXPORT const CFStringRef kCFNumberFormatterGroupingSeparator; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterUseGroupingSeparator; // CFBoolean
CF_EXPORT const CFStringRef kCFNumberFormatterPercentSymbol; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterZeroSymbol; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterNaNSymbol; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterInfinitySymbol; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterMinusSign; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterPlusSign; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterCurrencySymbol; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterExponentSymbol; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterMinIntegerDigits; // CFNumber
CF_EXPORT const CFStringRef kCFNumberFormatterMaxIntegerDigits; // CFNumber
CF_EXPORT const CFStringRef kCFNumberFormatterMinFractionDigits; // CFNumber
CF_EXPORT const CFStringRef kCFNumberFormatterMaxFractionDigits; // CFNumber
CF_EXPORT const CFStringRef kCFNumberFormatterGroupingSize; // CFNumber
CF_EXPORT const CFStringRef kCFNumberFormatterSecondaryGroupingSize; // CFNumber
CF_EXPORT const CFStringRef kCFNumberFormatterRoundingMode; // CFNumber
CF_EXPORT const CFStringRef kCFNumberFormatterRoundingIncrement; // CFNumber
CF_EXPORT const CFStringRef kCFNumberFormatterFormatWidth; // CFNumber
CF_EXPORT const CFStringRef kCFNumberFormatterPaddingPosition; // CFNumber
CF_EXPORT const CFStringRef kCFNumberFormatterPaddingCharacter; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterDefaultFormat; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterMultiplier; // CFNumber
CF_EXPORT const CFStringRef kCFNumberFormatterPositivePrefix; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterPositiveSuffix; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterNegativePrefix; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterNegativeSuffix; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterPerMillSymbol; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterInternationalCurrencySymbol; // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterCurrencyGroupingSeparator CF_AVAILABLE(10_5, 2_0); // CFString
CF_EXPORT const CFStringRef kCFNumberFormatterIsLenient CF_AVAILABLE(10_5, 2_0); // CFBoolean
CF_EXPORT const CFStringRef kCFNumberFormatterUseSignificantDigits CF_AVAILABLE(10_5, 2_0); // CFBoolean
CF_EXPORT const CFStringRef kCFNumberFormatterMinSignificantDigits CF_AVAILABLE(10_5, 2_0); // CFNumber
CF_EXPORT const CFStringRef kCFNumberFormatterMaxSignificantDigits CF_AVAILABLE(10_5, 2_0); // CFNumber
enum {
kCFNumberFormatterRoundCeiling = 0,
kCFNumberFormatterRoundFloor = 1,
kCFNumberFormatterRoundDown = 2,
kCFNumberFormatterRoundUp = 3,
kCFNumberFormatterRoundHalfEven = 4,
kCFNumberFormatterRoundHalfDown = 5,
kCFNumberFormatterRoundHalfUp = 6
};
typedef CFIndex CFNumberFormatterRoundingMode;
enum {
kCFNumberFormatterPadBeforePrefix = 0,
kCFNumberFormatterPadAfterPrefix = 1,
kCFNumberFormatterPadBeforeSuffix = 2,
kCFNumberFormatterPadAfterSuffix = 3
};
typedef CFIndex CFNumberFormatterPadPosition;
CF_EXPORT
Boolean CFNumberFormatterGetDecimalInfoForCurrencyCode(CFStringRef currencyCode, int32_t *defaultFractionDigits, double *roundingIncrement);
// Returns the number of fraction digits that should be displayed, and
// the rounding increment (or 0.0 if no rounding is done by the currency)
// for the given currency. Returns false if the currency code is unknown
// or the information is not available.
// Not localized because these are properties of the currency.
CF_EXTERN_C_END
#endif /* ! __COREFOUNDATION_CFNUMBERFORMATTER__ */