ICU 55.1 55.1

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- File List
- Globals

All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
currpinf.h
Go to the documentation of this file.
1 /*
2 *******************************************************************************
3 * Copyright (C) 2009-2011, International Business Machines Corporation and *
4 * others. All Rights Reserved. *
5 *******************************************************************************
6 */
7 #ifndef CURRPINF_H
8 #define CURRPINF_H
9
10 #include "unicode/utypes.h"
11
17 #if !UCONFIG_NO_FORMATTING
18
19 #include "unicode/unistr.h"
20
21 U_NAMESPACE_BEGIN
22
23 class Locale;
24 class PluralRules;
25 class Hashtable;
26
44 class U_I18N_API CurrencyPluralInfo : public UObject {
45 public:
46
52 CurrencyPluralInfo(UErrorCode& status);
53
60 CurrencyPluralInfo(const Locale& locale, UErrorCode& status);
61
67 CurrencyPluralInfo(const CurrencyPluralInfo& info);
68
69
75 CurrencyPluralInfo& operator=(const CurrencyPluralInfo& info);
76
77
83 virtual ~CurrencyPluralInfo();
84
85
91 UBool operator==(const CurrencyPluralInfo& info) const;
92
93
99 UBool operator!=(const CurrencyPluralInfo& info) const;
100
101
107 CurrencyPluralInfo* clone() const;
108
109
116 const PluralRules* getPluralRules() const;
117
127 UnicodeString& getCurrencyPluralPattern(const UnicodeString& pluralCount,
128 UnicodeString& result) const;
129
136 const Locale& getLocale() const;
137
149 void setPluralRules(const UnicodeString& ruleDescription,
150 UErrorCode& status);
151
165 void setCurrencyPluralPattern(const UnicodeString& pluralCount,
166 const UnicodeString& pattern,
167 UErrorCode& status);
168
176 void setLocale(const Locale& loc, UErrorCode& status);
177
183 virtual UClassID getDynamicClassID() const;
184
190 static UClassID U_EXPORT2 getStaticClassID();
191
192 private:
193 friend class DecimalFormat;
194
195 void initialize(const Locale& loc, UErrorCode& status);
196
197 void setupCurrencyPluralPattern(const Locale& loc, UErrorCode& status);
198
199 /*
200 * delete hash table
201 *
202 * @param hTable hash table to be deleted
203 */
204 void deleteHash(Hashtable* hTable);
205
206
207 /*
208 * initialize hash table
209 *
210 * @param status output param set to success/failure code on exit
211 * @return hash table initialized
212 */
213 Hashtable* initHash(UErrorCode& status);
214
215
216
224 void copyHash(const Hashtable* source, Hashtable* target, UErrorCode& status);
225
226 //-------------------- private data member ---------------------
227 // map from plural count to currency plural pattern, for example
228 // a plural pattern defined in "CurrencyUnitPatterns" is
229 // "one{{0} {1}}", in which "one" is a plural count
230 // and "{0} {1}" is a currency plural pattern".
231 // The currency plural pattern saved in this mapping is the pattern
232 // defined in "CurrencyUnitPattern" by replacing
233 // {0} with the number format pattern,
234 // and {1} with 3 currency sign.
235 Hashtable* fPluralCountToCurrencyUnitPattern;
236
237 /*
238 * The plural rule is used to format currency plural name,
239 * for example: "3.00 US Dollars".
240 * If there are 3 currency signs in the currency patttern,
241 * the 3 currency signs will be replaced by currency plural name.
242 */
243 PluralRules* fPluralRules;
244
245 // locale
246 Locale* fLocale;
247 };
248
249
250 inline UBool
251 CurrencyPluralInfo::operator!=(const CurrencyPluralInfo& info) const { return !operator==(info); }
252
253 U_NAMESPACE_END
254
255 #endif /* #if !UCONFIG_NO_FORMATTING */
256
257 #endif // _CURRPINFO
258 //eof