ICU 70.1  70.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 
14 #if U_SHOW_CPLUSPLUS_API
15 
21 #if !UCONFIG_NO_FORMATTING
22 
23 #include "unicode/unistr.h"
24 
25 U_NAMESPACE_BEGIN
26 
27 class Locale;
28 class PluralRules;
29 class Hashtable;
30 
49 public:
50 
57 
64  CurrencyPluralInfo(const Locale& locale, UErrorCode& status);
65 
72 
73 
80 
81 
88 
89 
95  bool operator==(const CurrencyPluralInfo& info) const;
96 
97 
103  bool operator!=(const CurrencyPluralInfo& info) const;
104 
105 
112 
113 
120  const PluralRules* getPluralRules() const;
121 
132  UnicodeString& result) const;
133 
140  const Locale& getLocale() const;
141 
153  void setPluralRules(const UnicodeString& ruleDescription,
154  UErrorCode& status);
155 
169  void setCurrencyPluralPattern(const UnicodeString& pluralCount,
170  const UnicodeString& pattern,
171  UErrorCode& status);
172 
180  void setLocale(const Locale& loc, UErrorCode& status);
181 
187  virtual UClassID getDynamicClassID() const override;
188 
194  static UClassID U_EXPORT2 getStaticClassID();
195 
196 private:
197  friend class DecimalFormat;
198  friend class DecimalFormatImpl;
199 
200  void initialize(const Locale& loc, UErrorCode& status);
201 
202  void setupCurrencyPluralPattern(const Locale& loc, UErrorCode& status);
203 
204  /*
205  * delete hash table
206  *
207  * @param hTable hash table to be deleted
208  */
209  void deleteHash(Hashtable* hTable);
210 
211 
212  /*
213  * initialize hash table
214  *
215  * @param status output param set to success/failure code on exit
216  * @return hash table initialized
217  */
218  Hashtable* initHash(UErrorCode& status);
219 
220 
221 
229  void copyHash(const Hashtable* source, Hashtable* target, UErrorCode& status);
230 
231  //-------------------- private data member ---------------------
232  // map from plural count to currency plural pattern, for example
233  // a plural pattern defined in "CurrencyUnitPatterns" is
234  // "one{{0} {1}}", in which "one" is a plural count
235  // and "{0} {1}" is a currency plural pattern".
236  // The currency plural pattern saved in this mapping is the pattern
237  // defined in "CurrencyUnitPattern" by replacing
238  // {0} with the number format pattern,
239  // and {1} with 3 currency sign.
240  Hashtable* fPluralCountToCurrencyUnitPattern;
241 
242  /*
243  * The plural rule is used to format currency plural name,
244  * for example: "3.00 US Dollars".
245  * If there are 3 currency signs in the currency pattern,
246  * the 3 currency signs will be replaced by currency plural name.
247  */
248  PluralRules* fPluralRules;
249 
250  // locale
251  Locale* fLocale;
252 
253 private:
258  UErrorCode fInternalStatus;
259 };
260 
261 
262 inline bool
264  return !operator==(info);
265 }
266 
267 U_NAMESPACE_END
268 
269 #endif /* #if !UCONFIG_NO_FORMATTING */
270 
271 #endif /* U_SHOW_CPLUSPLUS_API */
272 
273 #endif // _CURRPINFO
274 //eof
This class represents the information needed by DecimalFormat to format currency plural,...
Definition: currpinf.h:48
const Locale & getLocale() const
Get locale.
CurrencyPluralInfo & operator=(const CurrencyPluralInfo &info)
Assignment operator.
CurrencyPluralInfo * clone() const
Clone.
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.
bool operator==(const CurrencyPluralInfo &info) const
Equal operator.
CurrencyPluralInfo(UErrorCode &status)
Create a CurrencyPluralInfo object for the default locale.
virtual UClassID getDynamicClassID() const override
ICU "poor man's RTTI", returns a UClassID for the actual class.
CurrencyPluralInfo(const Locale &locale, UErrorCode &status)
Create a CurrencyPluralInfo object for the given locale.
static UClassID getStaticClassID()
ICU "poor man's RTTI", returns a UClassID for this class.
void setLocale(const Locale &loc, UErrorCode &status)
Set locale.
const PluralRules * getPluralRules() const
Gets plural rules of this locale, used for currency plural format.
CurrencyPluralInfo(const CurrencyPluralInfo &info)
Copy constructor.
virtual ~CurrencyPluralInfo()
Destructor.
void setCurrencyPluralPattern(const UnicodeString &pluralCount, const UnicodeString &pattern, UErrorCode &status)
Set currency plural pattern.
IMPORTANT: New users are strongly encouraged to see if numberformatter.h fits their use case.
Definition: decimfmt.h:668
A Locale object represents a specific geographical, political, or cultural region.
Definition: locid.h:195
Defines rules for mapping non-negative numeric values onto a small set of keywords.
Definition: plurrule.h:206
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:296
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
bool operator!=(const StringPiece &x, const StringPiece &y)
Global operator != for StringPiece.
Definition: stringpiece.h:335
C++ API: Unicode String.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition: uobject.h:96
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition: utypes.h:415
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition: utypes.h:301