00001
00002
00003
00004
00005
00006
00007 #ifndef CURRPINF_H
00008 #define CURRPINF_H
00009
00010 #include "unicode/utypes.h"
00011
00017 #if !UCONFIG_NO_FORMATTING
00018
00019 #include "unicode/unistr.h"
00020
00021 U_NAMESPACE_BEGIN
00022
00023 class Locale;
00024 class PluralRules;
00025 class Hashtable;
00026
00044 class U_I18N_API CurrencyPluralInfo : public UObject {
00045 public:
00046
00052 CurrencyPluralInfo(UErrorCode& status);
00053
00060 CurrencyPluralInfo(const Locale& locale, UErrorCode& status);
00061
00067 CurrencyPluralInfo(const CurrencyPluralInfo& info);
00068
00069
00075 CurrencyPluralInfo& operator=(const CurrencyPluralInfo& info);
00076
00077
00083 virtual ~CurrencyPluralInfo();
00084
00085
00091 UBool operator==(const CurrencyPluralInfo& info) const;
00092
00093
00099 UBool operator!=(const CurrencyPluralInfo& info) const;
00100
00101
00107 CurrencyPluralInfo* clone() const;
00108
00109
00116 const PluralRules* getPluralRules() const;
00117
00127 UnicodeString& getCurrencyPluralPattern(const UnicodeString& pluralCount,
00128 UnicodeString& result) const;
00129
00136 const Locale& getLocale() const;
00137
00149 void setPluralRules(const UnicodeString& ruleDescription,
00150 UErrorCode& status);
00151
00165 void setCurrencyPluralPattern(const UnicodeString& pluralCount,
00166 const UnicodeString& pattern,
00167 UErrorCode& status);
00168
00176 void setLocale(const Locale& loc, UErrorCode& status);
00177
00183 virtual UClassID getDynamicClassID() const;
00184
00190 static UClassID U_EXPORT2 getStaticClassID();
00191
00192 private:
00193 friend class DecimalFormat;
00194
00195 void initialize(const Locale& loc, UErrorCode& status);
00196
00197 void setupCurrencyPluralPattern(const Locale& loc, UErrorCode& status);
00198
00199
00200
00201
00202
00203
00204 void deleteHash(Hashtable* hTable);
00205
00206
00207
00208
00209
00210
00211
00212
00213 Hashtable* initHash(UErrorCode& status);
00214
00215
00216
00224 void copyHash(const Hashtable* source, Hashtable* target, UErrorCode& status);
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235 Hashtable* fPluralCountToCurrencyUnitPattern;
00236
00237
00238
00239
00240
00241
00242
00243 PluralRules* fPluralRules;
00244
00245
00246 Locale* fLocale;
00247 };
00248
00249
00250 inline UBool
00251 CurrencyPluralInfo::operator!=(const CurrencyPluralInfo& info) const { return !operator==(info); }
00252
00253 U_NAMESPACE_END
00254
00255 #endif
00256
00257 #endif // _CURRPINFO
00258