ICU 62.1 62.1
currpinf.h
Go to the documentation of this file.
1// © 2016 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
3/*
4 *******************************************************************************
5 * Copyright (C) 2009-2015, International Business Machines Corporation and *
6 * others. All Rights Reserved. *
7 *******************************************************************************
8 */
9#ifndef CURRPINF_H
10#define CURRPINF_H
11
12#include "unicode/utypes.h"
13
19#if !UCONFIG_NO_FORMATTING
20
21#include "unicode/unistr.h"
22
24
25class Locale;
26class PluralRules;
27class Hashtable;
28
47public:
48
55
63
70
71
78
79
86
87
94
95
102
103
110
111
119
130 UnicodeString& result) const;
131
138 const Locale& getLocale() const;
139
153
168 const UnicodeString& pattern,
170
179
186
193
194private:
195 friend class DecimalFormat;
196 friend class DecimalFormatImpl;
197
198 void initialize(const Locale& loc, UErrorCode& status);
199
200 void setupCurrencyPluralPattern(const Locale& loc, UErrorCode& status);
201
202 /*
203 * delete hash table
204 *
205 * @param hTable hash table to be deleted
206 */
207 void deleteHash(Hashtable* hTable);
208
209
210 /*
211 * initialize hash table
212 *
213 * @param status output param set to success/failure code on exit
214 * @return hash table initialized
215 */
216 Hashtable* initHash(UErrorCode& status);
217
218
219
227 void copyHash(const Hashtable* source, Hashtable* target, UErrorCode& status);
228
229 //-------------------- private data member ---------------------
230 // map from plural count to currency plural pattern, for example
231 // a plural pattern defined in "CurrencyUnitPatterns" is
232 // "one{{0} {1}}", in which "one" is a plural count
233 // and "{0} {1}" is a currency plural pattern".
234 // The currency plural pattern saved in this mapping is the pattern
235 // defined in "CurrencyUnitPattern" by replacing
236 // {0} with the number format pattern,
237 // and {1} with 3 currency sign.
238 Hashtable* fPluralCountToCurrencyUnitPattern;
239
240 /*
241 * The plural rule is used to format currency plural name,
242 * for example: "3.00 US Dollars".
243 * If there are 3 currency signs in the currency patttern,
244 * the 3 currency signs will be replaced by currency plural name.
245 */
246 PluralRules* fPluralRules;
247
248 // locale
249 Locale* fLocale;
250};
251
252
253inline UBool
254CurrencyPluralInfo::operator!=(const CurrencyPluralInfo& info) const { return !operator==(info); }
255
257
258#endif /* #if !UCONFIG_NO_FORMATTING */
259
260#endif // _CURRPINFO
261//eof
This class represents the information needed by DecimalFormat to format currency plural,...
Definition currpinf.h:46
CurrencyPluralInfo & operator=(const CurrencyPluralInfo &info)
Assignment operator.
const PluralRules * getPluralRules() const
Gets plural rules of this locale, used for currency plural format.
UnicodeString & getCurrencyPluralPattern(const UnicodeString &pluralCount, UnicodeString &result) const
Given a plural count, gets currency plural pattern of this locale, used for currency plural format.
void setPluralRules(const UnicodeString &ruleDescription, UErrorCode &status)
Set plural rules.
CurrencyPluralInfo(UErrorCode &status)
Create a CurrencyPluralInfo object for the default locale.
CurrencyPluralInfo(const Locale &locale, UErrorCode &status)
Create a CurrencyPluralInfo object for the given locale.
virtual UClassID getDynamicClassID() const
ICU "poor man's RTTI", returns a UClassID for the actual class.
UBool operator==(const CurrencyPluralInfo &info) const
Equal operator.
static UClassID getStaticClassID()
ICU "poor man's RTTI", returns a UClassID for this class.
CurrencyPluralInfo * clone() const
Clone.
void setLocale(const Locale &loc, UErrorCode &status)
Set locale.
const Locale & getLocale() const
Get locale.
CurrencyPluralInfo(const CurrencyPluralInfo &info)
Copy constructor.
virtual ~CurrencyPluralInfo()
Destructor.
void setCurrencyPluralPattern(const UnicodeString &pluralCount, const UnicodeString &pattern, UErrorCode &status)
Set currency plural pattern.
"Smart pointer" base class; do not use directly: use LocalPointer etc.
A Locale object represents a specific geographical, political, or cultural region.
Definition locid.h:188
Defines rules for mapping non-negative numeric values onto a small set of keywords.
Definition plurrule.h:196
UObject is the common ICU "boilerplate" class.
Definition uobject.h:223
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition unistr.h:287
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
UBool operator!=(const StringPiece &x, const StringPiece &y)
Global operator != for StringPiece.
int8_t UBool
The ICU boolean type.
Definition umachine.h:236
C++ API: Unicode String.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition uobject.h:93
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers,...
Definition utypes.h:396
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition utypes.h:360
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition uversion.h:138
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition uversion.h:137