2 * Copyright (c) 2008 Apple Inc. All rights reserved.
4 * @APPLE_LICENSE_HEADER_START@
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
21 * @APPLE_LICENSE_HEADER_END@
23 /* CFNumberFormatter.h
24 Copyright (c) 2003-2007, Apple Inc. All rights reserved.
27 #if !defined(__COREFOUNDATION_CFNUMBERFORMATTER__)
28 #define __COREFOUNDATION_CFNUMBERFORMATTER__ 1
30 #include <CoreFoundation/CFBase.h>
31 #include <CoreFoundation/CFNumber.h>
32 #include <CoreFoundation/CFLocale.h>
34 #if MAC_OS_X_VERSION_10_3 <= MAC_OS_X_VERSION_MAX_ALLOWED
38 typedef struct __CFNumberFormatter
*CFNumberFormatterRef
;
40 // CFNumberFormatters are not thread-safe. Do not use one from multiple threads!
43 CFTypeID
CFNumberFormatterGetTypeID(void) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
;
45 enum { // number format styles
46 kCFNumberFormatterNoStyle
= 0,
47 kCFNumberFormatterDecimalStyle
= 1,
48 kCFNumberFormatterCurrencyStyle
= 2,
49 kCFNumberFormatterPercentStyle
= 3,
50 kCFNumberFormatterScientificStyle
= 4,
51 kCFNumberFormatterSpellOutStyle
= 5
53 typedef CFIndex CFNumberFormatterStyle
;
57 CFNumberFormatterRef
CFNumberFormatterCreate(CFAllocatorRef allocator
, CFLocaleRef locale
, CFNumberFormatterStyle style
) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
;
58 // Returns a CFNumberFormatter, localized to the given locale, which
59 // will format numbers to the given style.
62 CFLocaleRef
CFNumberFormatterGetLocale(CFNumberFormatterRef formatter
) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
;
65 CFNumberFormatterStyle
CFNumberFormatterGetStyle(CFNumberFormatterRef formatter
) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
;
66 // Get the properties with which the number formatter was created.
69 CFStringRef
CFNumberFormatterGetFormat(CFNumberFormatterRef formatter
) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
;
72 void CFNumberFormatterSetFormat(CFNumberFormatterRef formatter
, CFStringRef formatString
) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
;
73 // Set the format description string of the number formatter. This
74 // overrides the style settings. The format of the format string
75 // is as defined by the ICU library, and is similar to that found
76 // in Microsoft Excel and NSNumberFormatter (and Java I believe).
77 // The number formatter starts with a default format string defined
78 // by the style argument with which it was created.
82 CFStringRef
CFNumberFormatterCreateStringWithNumber(CFAllocatorRef allocator
, CFNumberFormatterRef formatter
, CFNumberRef number
) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
;
85 CFStringRef
CFNumberFormatterCreateStringWithValue(CFAllocatorRef allocator
, CFNumberFormatterRef formatter
, CFNumberType numberType
, const void *valuePtr
) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
;
86 // Create a string representation of the given number or value
87 // using the current state of the number formatter.
91 kCFNumberFormatterParseIntegersOnly
= 1 /* only parse integers */
93 typedef CFOptionFlags CFNumberFormatterOptionFlags
;
96 CFNumberRef
CFNumberFormatterCreateNumberFromString(CFAllocatorRef allocator
, CFNumberFormatterRef formatter
, CFStringRef string
, CFRange
*rangep
, CFOptionFlags options
) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
;
99 Boolean
CFNumberFormatterGetValueFromString(CFNumberFormatterRef formatter
, CFStringRef string
, CFRange
*rangep
, CFNumberType numberType
, void *valuePtr
) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
;
100 // Parse a string representation of a number using the current state
101 // of the number formatter. The range parameter specifies the range
102 // of the string in which the parsing should occur in input, and on
103 // output indicates the extent that was used; this parameter can
104 // be NULL, in which case the whole string may be used. The
105 // return value indicates whether some number was computed and
106 // (if valuePtr is not NULL) stored at the location specified by
107 // valuePtr. The numberType indicates the type of value pointed
112 void CFNumberFormatterSetProperty(CFNumberFormatterRef formatter
, CFStringRef key
, CFTypeRef value
) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
;
115 CFTypeRef
CFNumberFormatterCopyProperty(CFNumberFormatterRef formatter
, CFStringRef key
) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
;
116 // Set and get various properties of the number formatter, the set of
117 // which may be expanded in the future.
119 CF_EXPORT
const CFStringRef kCFNumberFormatterCurrencyCode AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFString
120 CF_EXPORT
const CFStringRef kCFNumberFormatterDecimalSeparator AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFString
121 CF_EXPORT
const CFStringRef kCFNumberFormatterCurrencyDecimalSeparator AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFString
122 CF_EXPORT
const CFStringRef kCFNumberFormatterAlwaysShowDecimalSeparator AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFBoolean
123 CF_EXPORT
const CFStringRef kCFNumberFormatterGroupingSeparator AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFString
124 CF_EXPORT
const CFStringRef kCFNumberFormatterUseGroupingSeparator AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFBoolean
125 CF_EXPORT
const CFStringRef kCFNumberFormatterPercentSymbol AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFString
126 CF_EXPORT
const CFStringRef kCFNumberFormatterZeroSymbol AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFString
127 CF_EXPORT
const CFStringRef kCFNumberFormatterNaNSymbol AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFString
128 CF_EXPORT
const CFStringRef kCFNumberFormatterInfinitySymbol AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFString
129 CF_EXPORT
const CFStringRef kCFNumberFormatterMinusSign AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFString
130 CF_EXPORT
const CFStringRef kCFNumberFormatterPlusSign AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFString
131 CF_EXPORT
const CFStringRef kCFNumberFormatterCurrencySymbol AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFString
132 CF_EXPORT
const CFStringRef kCFNumberFormatterExponentSymbol AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFString
133 CF_EXPORT
const CFStringRef kCFNumberFormatterMinIntegerDigits AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFNumber
134 CF_EXPORT
const CFStringRef kCFNumberFormatterMaxIntegerDigits AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFNumber
135 CF_EXPORT
const CFStringRef kCFNumberFormatterMinFractionDigits AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFNumber
136 CF_EXPORT
const CFStringRef kCFNumberFormatterMaxFractionDigits AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFNumber
137 CF_EXPORT
const CFStringRef kCFNumberFormatterGroupingSize AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFNumber
138 CF_EXPORT
const CFStringRef kCFNumberFormatterSecondaryGroupingSize AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFNumber
139 CF_EXPORT
const CFStringRef kCFNumberFormatterRoundingMode AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFNumber
140 CF_EXPORT
const CFStringRef kCFNumberFormatterRoundingIncrement AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFNumber
141 CF_EXPORT
const CFStringRef kCFNumberFormatterFormatWidth AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFNumber
142 CF_EXPORT
const CFStringRef kCFNumberFormatterPaddingPosition AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFNumber
143 CF_EXPORT
const CFStringRef kCFNumberFormatterPaddingCharacter AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFString
144 CF_EXPORT
const CFStringRef kCFNumberFormatterDefaultFormat AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
; // CFString
145 CF_EXPORT
const CFStringRef kCFNumberFormatterMultiplier AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
; // CFNumber
146 CF_EXPORT
const CFStringRef kCFNumberFormatterPositivePrefix AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
; // CFString
147 CF_EXPORT
const CFStringRef kCFNumberFormatterPositiveSuffix AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
; // CFString
148 CF_EXPORT
const CFStringRef kCFNumberFormatterNegativePrefix AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
; // CFString
149 CF_EXPORT
const CFStringRef kCFNumberFormatterNegativeSuffix AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
; // CFString
150 CF_EXPORT
const CFStringRef kCFNumberFormatterPerMillSymbol AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
; // CFString
151 CF_EXPORT
const CFStringRef kCFNumberFormatterInternationalCurrencySymbol AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
; // CFString
152 CF_EXPORT
const CFStringRef kCFNumberFormatterCurrencyGroupingSeparator AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
; // CFString
153 CF_EXPORT
const CFStringRef kCFNumberFormatterIsLenient AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
; // CFBoolean
154 CF_EXPORT
const CFStringRef kCFNumberFormatterUseSignificantDigits AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
; // CFBoolean
155 CF_EXPORT
const CFStringRef kCFNumberFormatterMinSignificantDigits AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
; // CFNumber
156 CF_EXPORT
const CFStringRef kCFNumberFormatterMaxSignificantDigits AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
; // CFNumber
159 kCFNumberFormatterRoundCeiling
= 0,
160 kCFNumberFormatterRoundFloor
= 1,
161 kCFNumberFormatterRoundDown
= 2,
162 kCFNumberFormatterRoundUp
= 3,
163 kCFNumberFormatterRoundHalfEven
= 4,
164 kCFNumberFormatterRoundHalfDown
= 5,
165 kCFNumberFormatterRoundHalfUp
= 6
167 typedef CFIndex CFNumberFormatterRoundingMode
;
170 kCFNumberFormatterPadBeforePrefix
= 0,
171 kCFNumberFormatterPadAfterPrefix
= 1,
172 kCFNumberFormatterPadBeforeSuffix
= 2,
173 kCFNumberFormatterPadAfterSuffix
= 3
175 typedef CFIndex CFNumberFormatterPadPosition
;
179 Boolean
CFNumberFormatterGetDecimalInfoForCurrencyCode(CFStringRef currencyCode
, int32_t *defaultFractionDigits
, double *roundingIncrement
) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
;
180 // Returns the number of fraction digits that should be displayed, and
181 // the rounding increment (or 0.0 if no rounding is done by the currency)
182 // for the given currency. Returns false if the currency code is unknown
183 // or the information is not available.
184 // Not localized because these are properties of the currency.
190 #endif /* ! __COREFOUNDATION_CFNUMBERFORMATTER__ */