1*0e209d39SAndroid Build Coastguard Worker // © 2016 and later: Unicode, Inc. and others.
2*0e209d39SAndroid Build Coastguard Worker // License & terms of use: http://www.unicode.org/copyright.html
3*0e209d39SAndroid Build Coastguard Worker /*
4*0e209d39SAndroid Build Coastguard Worker ********************************************************************************
5*0e209d39SAndroid Build Coastguard Worker * Copyright (C) 1997-2016, International Business Machines
6*0e209d39SAndroid Build Coastguard Worker * Corporation and others. All Rights Reserved.
7*0e209d39SAndroid Build Coastguard Worker ********************************************************************************
8*0e209d39SAndroid Build Coastguard Worker *
9*0e209d39SAndroid Build Coastguard Worker * File DCFMTSYM.H
10*0e209d39SAndroid Build Coastguard Worker *
11*0e209d39SAndroid Build Coastguard Worker * Modification History:
12*0e209d39SAndroid Build Coastguard Worker *
13*0e209d39SAndroid Build Coastguard Worker * Date Name Description
14*0e209d39SAndroid Build Coastguard Worker * 02/19/97 aliu Converted from java.
15*0e209d39SAndroid Build Coastguard Worker * 03/18/97 clhuang Updated per C++ implementation.
16*0e209d39SAndroid Build Coastguard Worker * 03/27/97 helena Updated to pass the simple test after code review.
17*0e209d39SAndroid Build Coastguard Worker * 08/26/97 aliu Added currency/intl currency symbol support.
18*0e209d39SAndroid Build Coastguard Worker * 07/22/98 stephen Changed to match C++ style
19*0e209d39SAndroid Build Coastguard Worker * currencySymbol -> fCurrencySymbol
20*0e209d39SAndroid Build Coastguard Worker * Constants changed from CAPS to kCaps
21*0e209d39SAndroid Build Coastguard Worker * 06/24/99 helena Integrated Alan's NF enhancements and Java2 bug fixes
22*0e209d39SAndroid Build Coastguard Worker * 09/22/00 grhoten Marked deprecation tags with a pointer to replacement
23*0e209d39SAndroid Build Coastguard Worker * functions.
24*0e209d39SAndroid Build Coastguard Worker ********************************************************************************
25*0e209d39SAndroid Build Coastguard Worker */
26*0e209d39SAndroid Build Coastguard Worker
27*0e209d39SAndroid Build Coastguard Worker #ifndef DCFMTSYM_H
28*0e209d39SAndroid Build Coastguard Worker #define DCFMTSYM_H
29*0e209d39SAndroid Build Coastguard Worker
30*0e209d39SAndroid Build Coastguard Worker #include "unicode/utypes.h"
31*0e209d39SAndroid Build Coastguard Worker
32*0e209d39SAndroid Build Coastguard Worker #if U_SHOW_CPLUSPLUS_API
33*0e209d39SAndroid Build Coastguard Worker
34*0e209d39SAndroid Build Coastguard Worker #if !UCONFIG_NO_FORMATTING
35*0e209d39SAndroid Build Coastguard Worker
36*0e209d39SAndroid Build Coastguard Worker #include "unicode/uchar.h"
37*0e209d39SAndroid Build Coastguard Worker #include "unicode/uobject.h"
38*0e209d39SAndroid Build Coastguard Worker #include "unicode/locid.h"
39*0e209d39SAndroid Build Coastguard Worker #include "unicode/numsys.h"
40*0e209d39SAndroid Build Coastguard Worker #include "unicode/unum.h"
41*0e209d39SAndroid Build Coastguard Worker #include "unicode/unistr.h"
42*0e209d39SAndroid Build Coastguard Worker
43*0e209d39SAndroid Build Coastguard Worker /**
44*0e209d39SAndroid Build Coastguard Worker * \file
45*0e209d39SAndroid Build Coastguard Worker * \brief C++ API: Symbols for formatting numbers.
46*0e209d39SAndroid Build Coastguard Worker */
47*0e209d39SAndroid Build Coastguard Worker
48*0e209d39SAndroid Build Coastguard Worker
49*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_BEGIN
50*0e209d39SAndroid Build Coastguard Worker
51*0e209d39SAndroid Build Coastguard Worker /**
52*0e209d39SAndroid Build Coastguard Worker * This class represents the set of symbols needed by DecimalFormat
53*0e209d39SAndroid Build Coastguard Worker * to format numbers. DecimalFormat creates for itself an instance of
54*0e209d39SAndroid Build Coastguard Worker * DecimalFormatSymbols from its locale data. If you need to change any
55*0e209d39SAndroid Build Coastguard Worker * of these symbols, you can get the DecimalFormatSymbols object from
56*0e209d39SAndroid Build Coastguard Worker * your DecimalFormat and modify it.
57*0e209d39SAndroid Build Coastguard Worker * <P>
58*0e209d39SAndroid Build Coastguard Worker * Here are the special characters used in the parts of the
59*0e209d39SAndroid Build Coastguard Worker * subpattern, with notes on their usage.
60*0e209d39SAndroid Build Coastguard Worker * <pre>
61*0e209d39SAndroid Build Coastguard Worker * \code
62*0e209d39SAndroid Build Coastguard Worker * Symbol Meaning
63*0e209d39SAndroid Build Coastguard Worker * 0 a digit
64*0e209d39SAndroid Build Coastguard Worker * # a digit, zero shows as absent
65*0e209d39SAndroid Build Coastguard Worker * . placeholder for decimal separator
66*0e209d39SAndroid Build Coastguard Worker * , placeholder for grouping separator.
67*0e209d39SAndroid Build Coastguard Worker * ; separates formats.
68*0e209d39SAndroid Build Coastguard Worker * - default negative prefix.
69*0e209d39SAndroid Build Coastguard Worker * % divide by 100 and show as percentage
70*0e209d39SAndroid Build Coastguard Worker * X any other characters can be used in the prefix or suffix
71*0e209d39SAndroid Build Coastguard Worker * ' used to quote special characters in a prefix or suffix.
72*0e209d39SAndroid Build Coastguard Worker * \endcode
73*0e209d39SAndroid Build Coastguard Worker * </pre>
74*0e209d39SAndroid Build Coastguard Worker * [Notes]
75*0e209d39SAndroid Build Coastguard Worker * <P>
76*0e209d39SAndroid Build Coastguard Worker * If there is no explicit negative subpattern, - is prefixed to the
77*0e209d39SAndroid Build Coastguard Worker * positive form. That is, "0.00" alone is equivalent to "0.00;-0.00".
78*0e209d39SAndroid Build Coastguard Worker * <P>
79*0e209d39SAndroid Build Coastguard Worker * The grouping separator is commonly used for thousands, but in some
80*0e209d39SAndroid Build Coastguard Worker * countries for ten-thousands. The interval is a constant number of
81*0e209d39SAndroid Build Coastguard Worker * digits between the grouping characters, such as 100,000,000 or 1,0000,0000.
82*0e209d39SAndroid Build Coastguard Worker * If you supply a pattern with multiple grouping characters, the interval
83*0e209d39SAndroid Build Coastguard Worker * between the last one and the end of the integer is the one that is
84*0e209d39SAndroid Build Coastguard Worker * used. So "#,##,###,####" == "######,####" == "##,####,####".
85*0e209d39SAndroid Build Coastguard Worker */
86*0e209d39SAndroid Build Coastguard Worker class U_I18N_API DecimalFormatSymbols : public UObject {
87*0e209d39SAndroid Build Coastguard Worker public:
88*0e209d39SAndroid Build Coastguard Worker /**
89*0e209d39SAndroid Build Coastguard Worker * Constants for specifying a number format symbol.
90*0e209d39SAndroid Build Coastguard Worker * @stable ICU 2.0
91*0e209d39SAndroid Build Coastguard Worker */
92*0e209d39SAndroid Build Coastguard Worker enum ENumberFormatSymbol {
93*0e209d39SAndroid Build Coastguard Worker /** The decimal separator */
94*0e209d39SAndroid Build Coastguard Worker kDecimalSeparatorSymbol,
95*0e209d39SAndroid Build Coastguard Worker /** The grouping separator */
96*0e209d39SAndroid Build Coastguard Worker kGroupingSeparatorSymbol,
97*0e209d39SAndroid Build Coastguard Worker /** The pattern separator */
98*0e209d39SAndroid Build Coastguard Worker kPatternSeparatorSymbol,
99*0e209d39SAndroid Build Coastguard Worker /** The percent sign */
100*0e209d39SAndroid Build Coastguard Worker kPercentSymbol,
101*0e209d39SAndroid Build Coastguard Worker /** Zero*/
102*0e209d39SAndroid Build Coastguard Worker kZeroDigitSymbol,
103*0e209d39SAndroid Build Coastguard Worker /** Character representing a digit in the pattern */
104*0e209d39SAndroid Build Coastguard Worker kDigitSymbol,
105*0e209d39SAndroid Build Coastguard Worker /** The minus sign */
106*0e209d39SAndroid Build Coastguard Worker kMinusSignSymbol,
107*0e209d39SAndroid Build Coastguard Worker /** The plus sign */
108*0e209d39SAndroid Build Coastguard Worker kPlusSignSymbol,
109*0e209d39SAndroid Build Coastguard Worker /** The currency symbol */
110*0e209d39SAndroid Build Coastguard Worker kCurrencySymbol,
111*0e209d39SAndroid Build Coastguard Worker /** The international currency symbol */
112*0e209d39SAndroid Build Coastguard Worker kIntlCurrencySymbol,
113*0e209d39SAndroid Build Coastguard Worker /** The monetary separator */
114*0e209d39SAndroid Build Coastguard Worker kMonetarySeparatorSymbol,
115*0e209d39SAndroid Build Coastguard Worker /** The exponential symbol */
116*0e209d39SAndroid Build Coastguard Worker kExponentialSymbol,
117*0e209d39SAndroid Build Coastguard Worker /** Per mill symbol - replaces kPermillSymbol */
118*0e209d39SAndroid Build Coastguard Worker kPerMillSymbol,
119*0e209d39SAndroid Build Coastguard Worker /** Escape padding character */
120*0e209d39SAndroid Build Coastguard Worker kPadEscapeSymbol,
121*0e209d39SAndroid Build Coastguard Worker /** Infinity symbol */
122*0e209d39SAndroid Build Coastguard Worker kInfinitySymbol,
123*0e209d39SAndroid Build Coastguard Worker /** Nan symbol */
124*0e209d39SAndroid Build Coastguard Worker kNaNSymbol,
125*0e209d39SAndroid Build Coastguard Worker /** Significant digit symbol
126*0e209d39SAndroid Build Coastguard Worker * @stable ICU 3.0 */
127*0e209d39SAndroid Build Coastguard Worker kSignificantDigitSymbol,
128*0e209d39SAndroid Build Coastguard Worker /** The monetary grouping separator
129*0e209d39SAndroid Build Coastguard Worker * @stable ICU 3.6
130*0e209d39SAndroid Build Coastguard Worker */
131*0e209d39SAndroid Build Coastguard Worker kMonetaryGroupingSeparatorSymbol,
132*0e209d39SAndroid Build Coastguard Worker /** One
133*0e209d39SAndroid Build Coastguard Worker * @stable ICU 4.6
134*0e209d39SAndroid Build Coastguard Worker */
135*0e209d39SAndroid Build Coastguard Worker kOneDigitSymbol,
136*0e209d39SAndroid Build Coastguard Worker /** Two
137*0e209d39SAndroid Build Coastguard Worker * @stable ICU 4.6
138*0e209d39SAndroid Build Coastguard Worker */
139*0e209d39SAndroid Build Coastguard Worker kTwoDigitSymbol,
140*0e209d39SAndroid Build Coastguard Worker /** Three
141*0e209d39SAndroid Build Coastguard Worker * @stable ICU 4.6
142*0e209d39SAndroid Build Coastguard Worker */
143*0e209d39SAndroid Build Coastguard Worker kThreeDigitSymbol,
144*0e209d39SAndroid Build Coastguard Worker /** Four
145*0e209d39SAndroid Build Coastguard Worker * @stable ICU 4.6
146*0e209d39SAndroid Build Coastguard Worker */
147*0e209d39SAndroid Build Coastguard Worker kFourDigitSymbol,
148*0e209d39SAndroid Build Coastguard Worker /** Five
149*0e209d39SAndroid Build Coastguard Worker * @stable ICU 4.6
150*0e209d39SAndroid Build Coastguard Worker */
151*0e209d39SAndroid Build Coastguard Worker kFiveDigitSymbol,
152*0e209d39SAndroid Build Coastguard Worker /** Six
153*0e209d39SAndroid Build Coastguard Worker * @stable ICU 4.6
154*0e209d39SAndroid Build Coastguard Worker */
155*0e209d39SAndroid Build Coastguard Worker kSixDigitSymbol,
156*0e209d39SAndroid Build Coastguard Worker /** Seven
157*0e209d39SAndroid Build Coastguard Worker * @stable ICU 4.6
158*0e209d39SAndroid Build Coastguard Worker */
159*0e209d39SAndroid Build Coastguard Worker kSevenDigitSymbol,
160*0e209d39SAndroid Build Coastguard Worker /** Eight
161*0e209d39SAndroid Build Coastguard Worker * @stable ICU 4.6
162*0e209d39SAndroid Build Coastguard Worker */
163*0e209d39SAndroid Build Coastguard Worker kEightDigitSymbol,
164*0e209d39SAndroid Build Coastguard Worker /** Nine
165*0e209d39SAndroid Build Coastguard Worker * @stable ICU 4.6
166*0e209d39SAndroid Build Coastguard Worker */
167*0e209d39SAndroid Build Coastguard Worker kNineDigitSymbol,
168*0e209d39SAndroid Build Coastguard Worker /** Multiplication sign.
169*0e209d39SAndroid Build Coastguard Worker * @stable ICU 54
170*0e209d39SAndroid Build Coastguard Worker */
171*0e209d39SAndroid Build Coastguard Worker kExponentMultiplicationSymbol,
172*0e209d39SAndroid Build Coastguard Worker #ifndef U_HIDE_INTERNAL_API
173*0e209d39SAndroid Build Coastguard Worker /** Approximately sign.
174*0e209d39SAndroid Build Coastguard Worker * @internal
175*0e209d39SAndroid Build Coastguard Worker */
176*0e209d39SAndroid Build Coastguard Worker kApproximatelySignSymbol,
177*0e209d39SAndroid Build Coastguard Worker #endif /* U_HIDE_INTERNAL_API */
178*0e209d39SAndroid Build Coastguard Worker /** count symbol constants */
179*0e209d39SAndroid Build Coastguard Worker kFormatSymbolCount = kExponentMultiplicationSymbol + 2
180*0e209d39SAndroid Build Coastguard Worker };
181*0e209d39SAndroid Build Coastguard Worker
182*0e209d39SAndroid Build Coastguard Worker /**
183*0e209d39SAndroid Build Coastguard Worker * Create a DecimalFormatSymbols object for the given locale.
184*0e209d39SAndroid Build Coastguard Worker *
185*0e209d39SAndroid Build Coastguard Worker * @param locale The locale to get symbols for.
186*0e209d39SAndroid Build Coastguard Worker * @param status Input/output parameter, set to success or
187*0e209d39SAndroid Build Coastguard Worker * failure code upon return.
188*0e209d39SAndroid Build Coastguard Worker * @stable ICU 2.0
189*0e209d39SAndroid Build Coastguard Worker */
190*0e209d39SAndroid Build Coastguard Worker DecimalFormatSymbols(const Locale& locale, UErrorCode& status);
191*0e209d39SAndroid Build Coastguard Worker
192*0e209d39SAndroid Build Coastguard Worker /**
193*0e209d39SAndroid Build Coastguard Worker * Creates a DecimalFormatSymbols instance for the given locale with digits and symbols
194*0e209d39SAndroid Build Coastguard Worker * corresponding to the given NumberingSystem.
195*0e209d39SAndroid Build Coastguard Worker *
196*0e209d39SAndroid Build Coastguard Worker * This constructor behaves equivalently to the normal constructor called with a locale having a
197*0e209d39SAndroid Build Coastguard Worker * "numbers=xxxx" keyword specifying the numbering system by name.
198*0e209d39SAndroid Build Coastguard Worker *
199*0e209d39SAndroid Build Coastguard Worker * In this constructor, the NumberingSystem argument will be used even if the locale has its own
200*0e209d39SAndroid Build Coastguard Worker * "numbers=xxxx" keyword.
201*0e209d39SAndroid Build Coastguard Worker *
202*0e209d39SAndroid Build Coastguard Worker * @param locale The locale to get symbols for.
203*0e209d39SAndroid Build Coastguard Worker * @param ns The numbering system.
204*0e209d39SAndroid Build Coastguard Worker * @param status Input/output parameter, set to success or
205*0e209d39SAndroid Build Coastguard Worker * failure code upon return.
206*0e209d39SAndroid Build Coastguard Worker * @stable ICU 60
207*0e209d39SAndroid Build Coastguard Worker */
208*0e209d39SAndroid Build Coastguard Worker DecimalFormatSymbols(const Locale& locale, const NumberingSystem& ns, UErrorCode& status);
209*0e209d39SAndroid Build Coastguard Worker
210*0e209d39SAndroid Build Coastguard Worker /**
211*0e209d39SAndroid Build Coastguard Worker * Create a DecimalFormatSymbols object for the default locale.
212*0e209d39SAndroid Build Coastguard Worker * This constructor will not fail. If the resource file data is
213*0e209d39SAndroid Build Coastguard Worker * not available, it will use hard-coded last-resort data and
214*0e209d39SAndroid Build Coastguard Worker * set status to U_USING_FALLBACK_ERROR.
215*0e209d39SAndroid Build Coastguard Worker *
216*0e209d39SAndroid Build Coastguard Worker * @param status Input/output parameter, set to success or
217*0e209d39SAndroid Build Coastguard Worker * failure code upon return.
218*0e209d39SAndroid Build Coastguard Worker * @stable ICU 2.0
219*0e209d39SAndroid Build Coastguard Worker */
220*0e209d39SAndroid Build Coastguard Worker DecimalFormatSymbols(UErrorCode& status);
221*0e209d39SAndroid Build Coastguard Worker
222*0e209d39SAndroid Build Coastguard Worker /**
223*0e209d39SAndroid Build Coastguard Worker * Creates a DecimalFormatSymbols object with last-resort data.
224*0e209d39SAndroid Build Coastguard Worker * Intended for callers who cache the symbols data and
225*0e209d39SAndroid Build Coastguard Worker * set all symbols on the resulting object.
226*0e209d39SAndroid Build Coastguard Worker *
227*0e209d39SAndroid Build Coastguard Worker * The last-resort symbols are similar to those for the root data,
228*0e209d39SAndroid Build Coastguard Worker * except that the grouping separators are empty,
229*0e209d39SAndroid Build Coastguard Worker * the NaN symbol is U+FFFD rather than "NaN",
230*0e209d39SAndroid Build Coastguard Worker * and the CurrencySpacing patterns are empty.
231*0e209d39SAndroid Build Coastguard Worker *
232*0e209d39SAndroid Build Coastguard Worker * @param status Input/output parameter, set to success or
233*0e209d39SAndroid Build Coastguard Worker * failure code upon return.
234*0e209d39SAndroid Build Coastguard Worker * @return last-resort symbols
235*0e209d39SAndroid Build Coastguard Worker * @stable ICU 52
236*0e209d39SAndroid Build Coastguard Worker */
237*0e209d39SAndroid Build Coastguard Worker static DecimalFormatSymbols* createWithLastResortData(UErrorCode& status);
238*0e209d39SAndroid Build Coastguard Worker
239*0e209d39SAndroid Build Coastguard Worker /**
240*0e209d39SAndroid Build Coastguard Worker * Copy constructor.
241*0e209d39SAndroid Build Coastguard Worker * @stable ICU 2.0
242*0e209d39SAndroid Build Coastguard Worker */
243*0e209d39SAndroid Build Coastguard Worker DecimalFormatSymbols(const DecimalFormatSymbols&);
244*0e209d39SAndroid Build Coastguard Worker
245*0e209d39SAndroid Build Coastguard Worker /**
246*0e209d39SAndroid Build Coastguard Worker * Assignment operator.
247*0e209d39SAndroid Build Coastguard Worker * @stable ICU 2.0
248*0e209d39SAndroid Build Coastguard Worker */
249*0e209d39SAndroid Build Coastguard Worker DecimalFormatSymbols& operator=(const DecimalFormatSymbols&);
250*0e209d39SAndroid Build Coastguard Worker
251*0e209d39SAndroid Build Coastguard Worker /**
252*0e209d39SAndroid Build Coastguard Worker * Destructor.
253*0e209d39SAndroid Build Coastguard Worker * @stable ICU 2.0
254*0e209d39SAndroid Build Coastguard Worker */
255*0e209d39SAndroid Build Coastguard Worker virtual ~DecimalFormatSymbols();
256*0e209d39SAndroid Build Coastguard Worker
257*0e209d39SAndroid Build Coastguard Worker /**
258*0e209d39SAndroid Build Coastguard Worker * Return true if another object is semantically equal to this one.
259*0e209d39SAndroid Build Coastguard Worker *
260*0e209d39SAndroid Build Coastguard Worker * @param other the object to be compared with.
261*0e209d39SAndroid Build Coastguard Worker * @return true if another object is semantically equal to this one.
262*0e209d39SAndroid Build Coastguard Worker * @stable ICU 2.0
263*0e209d39SAndroid Build Coastguard Worker */
264*0e209d39SAndroid Build Coastguard Worker bool operator==(const DecimalFormatSymbols& other) const;
265*0e209d39SAndroid Build Coastguard Worker
266*0e209d39SAndroid Build Coastguard Worker /**
267*0e209d39SAndroid Build Coastguard Worker * Return true if another object is semantically unequal to this one.
268*0e209d39SAndroid Build Coastguard Worker *
269*0e209d39SAndroid Build Coastguard Worker * @param other the object to be compared with.
270*0e209d39SAndroid Build Coastguard Worker * @return true if another object is semantically unequal to this one.
271*0e209d39SAndroid Build Coastguard Worker * @stable ICU 2.0
272*0e209d39SAndroid Build Coastguard Worker */
273*0e209d39SAndroid Build Coastguard Worker bool operator!=(const DecimalFormatSymbols& other) const { return !operator==(other); }
274*0e209d39SAndroid Build Coastguard Worker
275*0e209d39SAndroid Build Coastguard Worker /**
276*0e209d39SAndroid Build Coastguard Worker * Get one of the format symbols by its enum constant.
277*0e209d39SAndroid Build Coastguard Worker * Each symbol is stored as a string so that graphemes
278*0e209d39SAndroid Build Coastguard Worker * (characters with modifier letters) can be used.
279*0e209d39SAndroid Build Coastguard Worker *
280*0e209d39SAndroid Build Coastguard Worker * @param symbol Constant to indicate a number format symbol.
281*0e209d39SAndroid Build Coastguard Worker * @return the format symbols by the param 'symbol'
282*0e209d39SAndroid Build Coastguard Worker * @stable ICU 2.0
283*0e209d39SAndroid Build Coastguard Worker */
284*0e209d39SAndroid Build Coastguard Worker inline UnicodeString getSymbol(ENumberFormatSymbol symbol) const;
285*0e209d39SAndroid Build Coastguard Worker
286*0e209d39SAndroid Build Coastguard Worker /**
287*0e209d39SAndroid Build Coastguard Worker * Set one of the format symbols by its enum constant.
288*0e209d39SAndroid Build Coastguard Worker * Each symbol is stored as a string so that graphemes
289*0e209d39SAndroid Build Coastguard Worker * (characters with modifier letters) can be used.
290*0e209d39SAndroid Build Coastguard Worker *
291*0e209d39SAndroid Build Coastguard Worker * @param symbol Constant to indicate a number format symbol.
292*0e209d39SAndroid Build Coastguard Worker * @param value value of the format symbol
293*0e209d39SAndroid Build Coastguard Worker * @param propagateDigits If false, setting the zero digit will not automatically set 1-9.
294*0e209d39SAndroid Build Coastguard Worker * The default behavior is to automatically set 1-9 if zero is being set and the value
295*0e209d39SAndroid Build Coastguard Worker * it is being set to corresponds to a known Unicode zero digit.
296*0e209d39SAndroid Build Coastguard Worker * @stable ICU 2.0
297*0e209d39SAndroid Build Coastguard Worker */
298*0e209d39SAndroid Build Coastguard Worker void setSymbol(ENumberFormatSymbol symbol, const UnicodeString &value, const UBool propagateDigits);
299*0e209d39SAndroid Build Coastguard Worker
300*0e209d39SAndroid Build Coastguard Worker #ifndef U_HIDE_INTERNAL_API
301*0e209d39SAndroid Build Coastguard Worker /**
302*0e209d39SAndroid Build Coastguard Worker * Loads symbols for the specified currency into this instance.
303*0e209d39SAndroid Build Coastguard Worker *
304*0e209d39SAndroid Build Coastguard Worker * This method is internal. If you think it should be public, file a ticket.
305*0e209d39SAndroid Build Coastguard Worker *
306*0e209d39SAndroid Build Coastguard Worker * @internal
307*0e209d39SAndroid Build Coastguard Worker */
308*0e209d39SAndroid Build Coastguard Worker void setCurrency(const char16_t* currency, UErrorCode& status);
309*0e209d39SAndroid Build Coastguard Worker #endif // U_HIDE_INTERNAL_API
310*0e209d39SAndroid Build Coastguard Worker
311*0e209d39SAndroid Build Coastguard Worker /**
312*0e209d39SAndroid Build Coastguard Worker * Returns the locale for which this object was constructed.
313*0e209d39SAndroid Build Coastguard Worker * @stable ICU 2.6
314*0e209d39SAndroid Build Coastguard Worker */
315*0e209d39SAndroid Build Coastguard Worker inline Locale getLocale() const;
316*0e209d39SAndroid Build Coastguard Worker
317*0e209d39SAndroid Build Coastguard Worker /**
318*0e209d39SAndroid Build Coastguard Worker * Returns the locale for this object. Two flavors are available:
319*0e209d39SAndroid Build Coastguard Worker * valid and actual locale.
320*0e209d39SAndroid Build Coastguard Worker * @stable ICU 2.8
321*0e209d39SAndroid Build Coastguard Worker */
322*0e209d39SAndroid Build Coastguard Worker Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const;
323*0e209d39SAndroid Build Coastguard Worker
324*0e209d39SAndroid Build Coastguard Worker /**
325*0e209d39SAndroid Build Coastguard Worker * Get pattern string for 'CurrencySpacing' that can be applied to
326*0e209d39SAndroid Build Coastguard Worker * currency format.
327*0e209d39SAndroid Build Coastguard Worker * This API gets the CurrencySpacing data from ResourceBundle. The pattern can
328*0e209d39SAndroid Build Coastguard Worker * be empty if there is no data from current locale and its parent locales.
329*0e209d39SAndroid Build Coastguard Worker *
330*0e209d39SAndroid Build Coastguard Worker * @param type : UNUM_CURRENCY_MATCH, UNUM_CURRENCY_SURROUNDING_MATCH or UNUM_CURRENCY_INSERT.
331*0e209d39SAndroid Build Coastguard Worker * @param beforeCurrency : true if the pattern is for before currency symbol.
332*0e209d39SAndroid Build Coastguard Worker * false if the pattern is for after currency symbol.
333*0e209d39SAndroid Build Coastguard Worker * @param status: Input/output parameter, set to success or
334*0e209d39SAndroid Build Coastguard Worker * failure code upon return.
335*0e209d39SAndroid Build Coastguard Worker * @return pattern string for currencyMatch, surroundingMatch or spaceInsert.
336*0e209d39SAndroid Build Coastguard Worker * Return empty string if there is no data for this locale and its parent
337*0e209d39SAndroid Build Coastguard Worker * locales.
338*0e209d39SAndroid Build Coastguard Worker * @stable ICU 4.8
339*0e209d39SAndroid Build Coastguard Worker */
340*0e209d39SAndroid Build Coastguard Worker const UnicodeString& getPatternForCurrencySpacing(UCurrencySpacing type,
341*0e209d39SAndroid Build Coastguard Worker UBool beforeCurrency,
342*0e209d39SAndroid Build Coastguard Worker UErrorCode& status) const;
343*0e209d39SAndroid Build Coastguard Worker /**
344*0e209d39SAndroid Build Coastguard Worker * Set pattern string for 'CurrencySpacing' that can be applied to
345*0e209d39SAndroid Build Coastguard Worker * currency format.
346*0e209d39SAndroid Build Coastguard Worker *
347*0e209d39SAndroid Build Coastguard Worker * @param type : UNUM_CURRENCY_MATCH, UNUM_CURRENCY_SURROUNDING_MATCH or UNUM_CURRENCY_INSERT.
348*0e209d39SAndroid Build Coastguard Worker * @param beforeCurrency : true if the pattern is for before currency symbol.
349*0e209d39SAndroid Build Coastguard Worker * false if the pattern is for after currency symbol.
350*0e209d39SAndroid Build Coastguard Worker * @param pattern : pattern string to override current setting.
351*0e209d39SAndroid Build Coastguard Worker * @stable ICU 4.8
352*0e209d39SAndroid Build Coastguard Worker */
353*0e209d39SAndroid Build Coastguard Worker void setPatternForCurrencySpacing(UCurrencySpacing type,
354*0e209d39SAndroid Build Coastguard Worker UBool beforeCurrency,
355*0e209d39SAndroid Build Coastguard Worker const UnicodeString& pattern);
356*0e209d39SAndroid Build Coastguard Worker
357*0e209d39SAndroid Build Coastguard Worker /**
358*0e209d39SAndroid Build Coastguard Worker * ICU "poor man's RTTI", returns a UClassID for the actual class.
359*0e209d39SAndroid Build Coastguard Worker *
360*0e209d39SAndroid Build Coastguard Worker * @stable ICU 2.2
361*0e209d39SAndroid Build Coastguard Worker */
362*0e209d39SAndroid Build Coastguard Worker virtual UClassID getDynamicClassID() const override;
363*0e209d39SAndroid Build Coastguard Worker
364*0e209d39SAndroid Build Coastguard Worker /**
365*0e209d39SAndroid Build Coastguard Worker * ICU "poor man's RTTI", returns a UClassID for this class.
366*0e209d39SAndroid Build Coastguard Worker *
367*0e209d39SAndroid Build Coastguard Worker * @stable ICU 2.2
368*0e209d39SAndroid Build Coastguard Worker */
369*0e209d39SAndroid Build Coastguard Worker static UClassID U_EXPORT2 getStaticClassID();
370*0e209d39SAndroid Build Coastguard Worker
371*0e209d39SAndroid Build Coastguard Worker private:
372*0e209d39SAndroid Build Coastguard Worker DecimalFormatSymbols();
373*0e209d39SAndroid Build Coastguard Worker
374*0e209d39SAndroid Build Coastguard Worker /**
375*0e209d39SAndroid Build Coastguard Worker * Initializes the symbols from the LocaleElements resource bundle.
376*0e209d39SAndroid Build Coastguard Worker * Note: The organization of LocaleElements badly needs to be
377*0e209d39SAndroid Build Coastguard Worker * cleaned up.
378*0e209d39SAndroid Build Coastguard Worker *
379*0e209d39SAndroid Build Coastguard Worker * @param locale The locale to get symbols for.
380*0e209d39SAndroid Build Coastguard Worker * @param success Input/output parameter, set to success or
381*0e209d39SAndroid Build Coastguard Worker * failure code upon return.
382*0e209d39SAndroid Build Coastguard Worker * @param useLastResortData determine if use last resort data
383*0e209d39SAndroid Build Coastguard Worker * @param ns The NumberingSystem to use; otherwise, fall
384*0e209d39SAndroid Build Coastguard Worker * back to the locale.
385*0e209d39SAndroid Build Coastguard Worker */
386*0e209d39SAndroid Build Coastguard Worker void initialize(const Locale& locale, UErrorCode& success,
387*0e209d39SAndroid Build Coastguard Worker UBool useLastResortData = false, const NumberingSystem* ns = nullptr);
388*0e209d39SAndroid Build Coastguard Worker
389*0e209d39SAndroid Build Coastguard Worker /**
390*0e209d39SAndroid Build Coastguard Worker * Initialize the symbols with default values.
391*0e209d39SAndroid Build Coastguard Worker */
392*0e209d39SAndroid Build Coastguard Worker void initialize();
393*0e209d39SAndroid Build Coastguard Worker
394*0e209d39SAndroid Build Coastguard Worker public:
395*0e209d39SAndroid Build Coastguard Worker
396*0e209d39SAndroid Build Coastguard Worker #ifndef U_HIDE_INTERNAL_API
397*0e209d39SAndroid Build Coastguard Worker /**
398*0e209d39SAndroid Build Coastguard Worker * @internal For ICU use only
399*0e209d39SAndroid Build Coastguard Worker */
isCustomCurrencySymbol()400*0e209d39SAndroid Build Coastguard Worker inline UBool isCustomCurrencySymbol() const {
401*0e209d39SAndroid Build Coastguard Worker return fIsCustomCurrencySymbol;
402*0e209d39SAndroid Build Coastguard Worker }
403*0e209d39SAndroid Build Coastguard Worker
404*0e209d39SAndroid Build Coastguard Worker /**
405*0e209d39SAndroid Build Coastguard Worker * @internal For ICU use only
406*0e209d39SAndroid Build Coastguard Worker */
isCustomIntlCurrencySymbol()407*0e209d39SAndroid Build Coastguard Worker inline UBool isCustomIntlCurrencySymbol() const {
408*0e209d39SAndroid Build Coastguard Worker return fIsCustomIntlCurrencySymbol;
409*0e209d39SAndroid Build Coastguard Worker }
410*0e209d39SAndroid Build Coastguard Worker
411*0e209d39SAndroid Build Coastguard Worker /**
412*0e209d39SAndroid Build Coastguard Worker * @internal For ICU use only
413*0e209d39SAndroid Build Coastguard Worker */
getCodePointZero()414*0e209d39SAndroid Build Coastguard Worker inline UChar32 getCodePointZero() const {
415*0e209d39SAndroid Build Coastguard Worker return fCodePointZero;
416*0e209d39SAndroid Build Coastguard Worker }
417*0e209d39SAndroid Build Coastguard Worker #endif /* U_HIDE_INTERNAL_API */
418*0e209d39SAndroid Build Coastguard Worker
419*0e209d39SAndroid Build Coastguard Worker /**
420*0e209d39SAndroid Build Coastguard Worker * _Internal_ function - more efficient version of getSymbol,
421*0e209d39SAndroid Build Coastguard Worker * returning a const reference to one of the symbol strings.
422*0e209d39SAndroid Build Coastguard Worker * The returned reference becomes invalid when the symbol is changed
423*0e209d39SAndroid Build Coastguard Worker * or when the DecimalFormatSymbols are destroyed.
424*0e209d39SAndroid Build Coastguard Worker * Note: moved \#ifndef U_HIDE_INTERNAL_API after this, since this is needed for inline in DecimalFormat
425*0e209d39SAndroid Build Coastguard Worker *
426*0e209d39SAndroid Build Coastguard Worker * This is not currently stable API, but if you think it should be stable,
427*0e209d39SAndroid Build Coastguard Worker * post a comment on the following ticket and the ICU team will take a look:
428*0e209d39SAndroid Build Coastguard Worker * https://unicode-org.atlassian.net/browse/ICU-13580
429*0e209d39SAndroid Build Coastguard Worker *
430*0e209d39SAndroid Build Coastguard Worker * @param symbol Constant to indicate a number format symbol.
431*0e209d39SAndroid Build Coastguard Worker * @return the format symbol by the param 'symbol'
432*0e209d39SAndroid Build Coastguard Worker * @internal
433*0e209d39SAndroid Build Coastguard Worker */
434*0e209d39SAndroid Build Coastguard Worker inline const UnicodeString& getConstSymbol(ENumberFormatSymbol symbol) const;
435*0e209d39SAndroid Build Coastguard Worker
436*0e209d39SAndroid Build Coastguard Worker #ifndef U_HIDE_INTERNAL_API
437*0e209d39SAndroid Build Coastguard Worker /**
438*0e209d39SAndroid Build Coastguard Worker * Returns the const UnicodeString reference, like getConstSymbol,
439*0e209d39SAndroid Build Coastguard Worker * corresponding to the digit with the given value. This is equivalent
440*0e209d39SAndroid Build Coastguard Worker * to accessing the symbol from getConstSymbol with the corresponding
441*0e209d39SAndroid Build Coastguard Worker * key, such as kZeroDigitSymbol or kOneDigitSymbol.
442*0e209d39SAndroid Build Coastguard Worker *
443*0e209d39SAndroid Build Coastguard Worker * This is not currently stable API, but if you think it should be stable,
444*0e209d39SAndroid Build Coastguard Worker * post a comment on the following ticket and the ICU team will take a look:
445*0e209d39SAndroid Build Coastguard Worker * https://unicode-org.atlassian.net/browse/ICU-13580
446*0e209d39SAndroid Build Coastguard Worker *
447*0e209d39SAndroid Build Coastguard Worker * @param digit The digit, an integer between 0 and 9 inclusive.
448*0e209d39SAndroid Build Coastguard Worker * If outside the range 0 to 9, the zero digit is returned.
449*0e209d39SAndroid Build Coastguard Worker * @return the format symbol for the given digit.
450*0e209d39SAndroid Build Coastguard Worker * @internal This API is currently for ICU use only.
451*0e209d39SAndroid Build Coastguard Worker */
452*0e209d39SAndroid Build Coastguard Worker inline const UnicodeString& getConstDigitSymbol(int32_t digit) const;
453*0e209d39SAndroid Build Coastguard Worker
454*0e209d39SAndroid Build Coastguard Worker /**
455*0e209d39SAndroid Build Coastguard Worker * Returns that pattern stored in currency info. Internal API for use by NumberFormat API.
456*0e209d39SAndroid Build Coastguard Worker * @internal
457*0e209d39SAndroid Build Coastguard Worker */
458*0e209d39SAndroid Build Coastguard Worker inline const char16_t* getCurrencyPattern() const;
459*0e209d39SAndroid Build Coastguard Worker
460*0e209d39SAndroid Build Coastguard Worker /**
461*0e209d39SAndroid Build Coastguard Worker * Returns the numbering system with which this DecimalFormatSymbols was initialized.
462*0e209d39SAndroid Build Coastguard Worker * @internal
463*0e209d39SAndroid Build Coastguard Worker */
464*0e209d39SAndroid Build Coastguard Worker inline const char* getNumberingSystemName() const;
465*0e209d39SAndroid Build Coastguard Worker #endif /* U_HIDE_INTERNAL_API */
466*0e209d39SAndroid Build Coastguard Worker
467*0e209d39SAndroid Build Coastguard Worker private:
468*0e209d39SAndroid Build Coastguard Worker /**
469*0e209d39SAndroid Build Coastguard Worker * Private symbol strings.
470*0e209d39SAndroid Build Coastguard Worker * They are either loaded from a resource bundle or otherwise owned.
471*0e209d39SAndroid Build Coastguard Worker * setSymbol() clones the symbol string.
472*0e209d39SAndroid Build Coastguard Worker * Readonly aliases can only come from a resource bundle, so that we can always
473*0e209d39SAndroid Build Coastguard Worker * use fastCopyFrom() with them.
474*0e209d39SAndroid Build Coastguard Worker *
475*0e209d39SAndroid Build Coastguard Worker * If DecimalFormatSymbols becomes subclassable and the status of fSymbols changes
476*0e209d39SAndroid Build Coastguard Worker * from private to protected,
477*0e209d39SAndroid Build Coastguard Worker * or when fSymbols can be set any other way that allows them to be readonly aliases
478*0e209d39SAndroid Build Coastguard Worker * to non-resource bundle strings,
479*0e209d39SAndroid Build Coastguard Worker * then regular UnicodeString copies must be used instead of fastCopyFrom().
480*0e209d39SAndroid Build Coastguard Worker *
481*0e209d39SAndroid Build Coastguard Worker */
482*0e209d39SAndroid Build Coastguard Worker UnicodeString fSymbols[kFormatSymbolCount];
483*0e209d39SAndroid Build Coastguard Worker
484*0e209d39SAndroid Build Coastguard Worker /**
485*0e209d39SAndroid Build Coastguard Worker * Non-symbol variable for getConstSymbol(). Always empty.
486*0e209d39SAndroid Build Coastguard Worker */
487*0e209d39SAndroid Build Coastguard Worker UnicodeString fNoSymbol;
488*0e209d39SAndroid Build Coastguard Worker
489*0e209d39SAndroid Build Coastguard Worker /**
490*0e209d39SAndroid Build Coastguard Worker * Dealing with code points is faster than dealing with strings when formatting. Because of
491*0e209d39SAndroid Build Coastguard Worker * this, we maintain a value containing the zero code point that is used whenever digitStrings
492*0e209d39SAndroid Build Coastguard Worker * represents a sequence of ten code points in order.
493*0e209d39SAndroid Build Coastguard Worker *
494*0e209d39SAndroid Build Coastguard Worker * <p>If the value stored here is positive, it means that the code point stored in this value
495*0e209d39SAndroid Build Coastguard Worker * corresponds to the digitStrings array, and codePointZero can be used instead of the
496*0e209d39SAndroid Build Coastguard Worker * digitStrings array for the purposes of efficient formatting; if -1, then digitStrings does
497*0e209d39SAndroid Build Coastguard Worker * *not* contain a sequence of code points, and it must be used directly.
498*0e209d39SAndroid Build Coastguard Worker *
499*0e209d39SAndroid Build Coastguard Worker * <p>It is assumed that codePointZero always shadows the value in digitStrings. codePointZero
500*0e209d39SAndroid Build Coastguard Worker * should never be set directly; rather, it should be updated only when digitStrings mutates.
501*0e209d39SAndroid Build Coastguard Worker * That is, the flow of information is digitStrings -> codePointZero, not the other way.
502*0e209d39SAndroid Build Coastguard Worker */
503*0e209d39SAndroid Build Coastguard Worker UChar32 fCodePointZero;
504*0e209d39SAndroid Build Coastguard Worker
505*0e209d39SAndroid Build Coastguard Worker Locale locale;
506*0e209d39SAndroid Build Coastguard Worker
507*0e209d39SAndroid Build Coastguard Worker char actualLocale[ULOC_FULLNAME_CAPACITY];
508*0e209d39SAndroid Build Coastguard Worker char validLocale[ULOC_FULLNAME_CAPACITY];
509*0e209d39SAndroid Build Coastguard Worker const char16_t* currPattern = nullptr;
510*0e209d39SAndroid Build Coastguard Worker
511*0e209d39SAndroid Build Coastguard Worker UnicodeString currencySpcBeforeSym[UNUM_CURRENCY_SPACING_COUNT];
512*0e209d39SAndroid Build Coastguard Worker UnicodeString currencySpcAfterSym[UNUM_CURRENCY_SPACING_COUNT];
513*0e209d39SAndroid Build Coastguard Worker UBool fIsCustomCurrencySymbol;
514*0e209d39SAndroid Build Coastguard Worker UBool fIsCustomIntlCurrencySymbol;
515*0e209d39SAndroid Build Coastguard Worker char nsName[kInternalNumSysNameCapacity+1] = {};
516*0e209d39SAndroid Build Coastguard Worker };
517*0e209d39SAndroid Build Coastguard Worker
518*0e209d39SAndroid Build Coastguard Worker // -------------------------------------
519*0e209d39SAndroid Build Coastguard Worker
520*0e209d39SAndroid Build Coastguard Worker inline UnicodeString
getSymbol(ENumberFormatSymbol symbol)521*0e209d39SAndroid Build Coastguard Worker DecimalFormatSymbols::getSymbol(ENumberFormatSymbol symbol) const {
522*0e209d39SAndroid Build Coastguard Worker const UnicodeString *strPtr;
523*0e209d39SAndroid Build Coastguard Worker if(symbol < kFormatSymbolCount) {
524*0e209d39SAndroid Build Coastguard Worker strPtr = &fSymbols[symbol];
525*0e209d39SAndroid Build Coastguard Worker } else {
526*0e209d39SAndroid Build Coastguard Worker strPtr = &fNoSymbol;
527*0e209d39SAndroid Build Coastguard Worker }
528*0e209d39SAndroid Build Coastguard Worker return *strPtr;
529*0e209d39SAndroid Build Coastguard Worker }
530*0e209d39SAndroid Build Coastguard Worker
531*0e209d39SAndroid Build Coastguard Worker // See comments above for this function. Not hidden with #ifdef U_HIDE_INTERNAL_API
532*0e209d39SAndroid Build Coastguard Worker inline const UnicodeString &
getConstSymbol(ENumberFormatSymbol symbol)533*0e209d39SAndroid Build Coastguard Worker DecimalFormatSymbols::getConstSymbol(ENumberFormatSymbol symbol) const {
534*0e209d39SAndroid Build Coastguard Worker const UnicodeString *strPtr;
535*0e209d39SAndroid Build Coastguard Worker if(symbol < kFormatSymbolCount) {
536*0e209d39SAndroid Build Coastguard Worker strPtr = &fSymbols[symbol];
537*0e209d39SAndroid Build Coastguard Worker } else {
538*0e209d39SAndroid Build Coastguard Worker strPtr = &fNoSymbol;
539*0e209d39SAndroid Build Coastguard Worker }
540*0e209d39SAndroid Build Coastguard Worker return *strPtr;
541*0e209d39SAndroid Build Coastguard Worker }
542*0e209d39SAndroid Build Coastguard Worker
543*0e209d39SAndroid Build Coastguard Worker #ifndef U_HIDE_INTERNAL_API
getConstDigitSymbol(int32_t digit)544*0e209d39SAndroid Build Coastguard Worker inline const UnicodeString& DecimalFormatSymbols::getConstDigitSymbol(int32_t digit) const {
545*0e209d39SAndroid Build Coastguard Worker if (digit < 0 || digit > 9) {
546*0e209d39SAndroid Build Coastguard Worker digit = 0;
547*0e209d39SAndroid Build Coastguard Worker }
548*0e209d39SAndroid Build Coastguard Worker if (digit == 0) {
549*0e209d39SAndroid Build Coastguard Worker return fSymbols[kZeroDigitSymbol];
550*0e209d39SAndroid Build Coastguard Worker }
551*0e209d39SAndroid Build Coastguard Worker ENumberFormatSymbol key = static_cast<ENumberFormatSymbol>(kOneDigitSymbol + digit - 1);
552*0e209d39SAndroid Build Coastguard Worker return fSymbols[key];
553*0e209d39SAndroid Build Coastguard Worker }
554*0e209d39SAndroid Build Coastguard Worker #endif /* U_HIDE_INTERNAL_API */
555*0e209d39SAndroid Build Coastguard Worker
556*0e209d39SAndroid Build Coastguard Worker // -------------------------------------
557*0e209d39SAndroid Build Coastguard Worker
558*0e209d39SAndroid Build Coastguard Worker inline void
559*0e209d39SAndroid Build Coastguard Worker DecimalFormatSymbols::setSymbol(ENumberFormatSymbol symbol, const UnicodeString &value, const UBool propagateDigits = true) {
560*0e209d39SAndroid Build Coastguard Worker if (symbol == kCurrencySymbol) {
561*0e209d39SAndroid Build Coastguard Worker fIsCustomCurrencySymbol = true;
562*0e209d39SAndroid Build Coastguard Worker }
563*0e209d39SAndroid Build Coastguard Worker else if (symbol == kIntlCurrencySymbol) {
564*0e209d39SAndroid Build Coastguard Worker fIsCustomIntlCurrencySymbol = true;
565*0e209d39SAndroid Build Coastguard Worker }
566*0e209d39SAndroid Build Coastguard Worker if(symbol<kFormatSymbolCount) {
567*0e209d39SAndroid Build Coastguard Worker fSymbols[symbol]=value;
568*0e209d39SAndroid Build Coastguard Worker }
569*0e209d39SAndroid Build Coastguard Worker
570*0e209d39SAndroid Build Coastguard Worker // If the zero digit is being set to a known zero digit according to Unicode,
571*0e209d39SAndroid Build Coastguard Worker // then we automatically set the corresponding 1-9 digits
572*0e209d39SAndroid Build Coastguard Worker // Also record updates to fCodePointZero. Be conservative if in doubt.
573*0e209d39SAndroid Build Coastguard Worker if (symbol == kZeroDigitSymbol) {
574*0e209d39SAndroid Build Coastguard Worker UChar32 sym = value.char32At(0);
575*0e209d39SAndroid Build Coastguard Worker if ( propagateDigits && u_charDigitValue(sym) == 0 && value.countChar32() == 1 ) {
576*0e209d39SAndroid Build Coastguard Worker fCodePointZero = sym;
577*0e209d39SAndroid Build Coastguard Worker for ( int8_t i = 1 ; i<= 9 ; i++ ) {
578*0e209d39SAndroid Build Coastguard Worker sym++;
579*0e209d39SAndroid Build Coastguard Worker fSymbols[(int)kOneDigitSymbol+i-1] = UnicodeString(sym);
580*0e209d39SAndroid Build Coastguard Worker }
581*0e209d39SAndroid Build Coastguard Worker } else {
582*0e209d39SAndroid Build Coastguard Worker fCodePointZero = -1;
583*0e209d39SAndroid Build Coastguard Worker }
584*0e209d39SAndroid Build Coastguard Worker } else if (symbol >= kOneDigitSymbol && symbol <= kNineDigitSymbol) {
585*0e209d39SAndroid Build Coastguard Worker fCodePointZero = -1;
586*0e209d39SAndroid Build Coastguard Worker }
587*0e209d39SAndroid Build Coastguard Worker }
588*0e209d39SAndroid Build Coastguard Worker
589*0e209d39SAndroid Build Coastguard Worker // -------------------------------------
590*0e209d39SAndroid Build Coastguard Worker
591*0e209d39SAndroid Build Coastguard Worker inline Locale
getLocale()592*0e209d39SAndroid Build Coastguard Worker DecimalFormatSymbols::getLocale() const {
593*0e209d39SAndroid Build Coastguard Worker return locale;
594*0e209d39SAndroid Build Coastguard Worker }
595*0e209d39SAndroid Build Coastguard Worker
596*0e209d39SAndroid Build Coastguard Worker #ifndef U_HIDE_INTERNAL_API
597*0e209d39SAndroid Build Coastguard Worker inline const char16_t*
getCurrencyPattern()598*0e209d39SAndroid Build Coastguard Worker DecimalFormatSymbols::getCurrencyPattern() const {
599*0e209d39SAndroid Build Coastguard Worker return currPattern;
600*0e209d39SAndroid Build Coastguard Worker }
601*0e209d39SAndroid Build Coastguard Worker inline const char*
getNumberingSystemName()602*0e209d39SAndroid Build Coastguard Worker DecimalFormatSymbols::getNumberingSystemName() const {
603*0e209d39SAndroid Build Coastguard Worker return nsName;
604*0e209d39SAndroid Build Coastguard Worker }
605*0e209d39SAndroid Build Coastguard Worker #endif /* U_HIDE_INTERNAL_API */
606*0e209d39SAndroid Build Coastguard Worker
607*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_END
608*0e209d39SAndroid Build Coastguard Worker
609*0e209d39SAndroid Build Coastguard Worker #endif /* #if !UCONFIG_NO_FORMATTING */
610*0e209d39SAndroid Build Coastguard Worker
611*0e209d39SAndroid Build Coastguard Worker #endif /* U_SHOW_CPLUSPLUS_API */
612*0e209d39SAndroid Build Coastguard Worker
613*0e209d39SAndroid Build Coastguard Worker #endif // _DCFMTSYM
614*0e209d39SAndroid Build Coastguard Worker //eof
615