00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef CURRPINF_H
00010 #define CURRPINF_H
00011
00012 #include "unicode/utypes.h"
00013
00014 #if U_SHOW_CPLUSPLUS_API
00015
00021 #if !UCONFIG_NO_FORMATTING
00022
00023 #include "unicode/unistr.h"
00024
00025 U_NAMESPACE_BEGIN
00026
00027 class Locale;
00028 class PluralRules;
00029 class Hashtable;
00030
00048 class U_I18N_API CurrencyPluralInfo : public UObject {
00049 public:
00050
00056 CurrencyPluralInfo(UErrorCode& status);
00057
00064 CurrencyPluralInfo(const Locale& locale, UErrorCode& status);
00065
00071 CurrencyPluralInfo(const CurrencyPluralInfo& info);
00072
00073
00079 CurrencyPluralInfo& operator=(const CurrencyPluralInfo& info);
00080
00081
00087 virtual ~CurrencyPluralInfo();
00088
00089
00095 UBool operator==(const CurrencyPluralInfo& info) const;
00096
00097
00103 UBool operator!=(const CurrencyPluralInfo& info) const;
00104
00105
00111 CurrencyPluralInfo* clone() const;
00112
00113
00120 const PluralRules* getPluralRules() const;
00121
00131 UnicodeString& getCurrencyPluralPattern(const UnicodeString& pluralCount,
00132 UnicodeString& result) const;
00133
00140 const Locale& getLocale() const;
00141
00153 void setPluralRules(const UnicodeString& ruleDescription,
00154 UErrorCode& status);
00155
00169 void setCurrencyPluralPattern(const UnicodeString& pluralCount,
00170 const UnicodeString& pattern,
00171 UErrorCode& status);
00172
00180 void setLocale(const Locale& loc, UErrorCode& status);
00181
00187 virtual UClassID getDynamicClassID() const;
00188
00194 static UClassID U_EXPORT2 getStaticClassID();
00195
00196 private:
00197 friend class DecimalFormat;
00198 friend class DecimalFormatImpl;
00199
00200 void initialize(const Locale& loc, UErrorCode& status);
00201
00202 void setupCurrencyPluralPattern(const Locale& loc, UErrorCode& status);
00203
00204
00205
00206
00207
00208
00209 void deleteHash(Hashtable* hTable);
00210
00211
00212
00213
00214
00215
00216
00217
00218 Hashtable* initHash(UErrorCode& status);
00219
00220
00221
00229 void copyHash(const Hashtable* source, Hashtable* target, UErrorCode& status);
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240 Hashtable* fPluralCountToCurrencyUnitPattern;
00241
00242
00243
00244
00245
00246
00247
00248 PluralRules* fPluralRules;
00249
00250
00251 Locale* fLocale;
00252
00253 private:
00258 UErrorCode fInternalStatus;
00259 };
00260
00261
00262 inline UBool
00263 CurrencyPluralInfo::operator!=(const CurrencyPluralInfo& info) const {
00264 return !operator==(info);
00265 }
00266
00267 U_NAMESPACE_END
00268
00269 #endif
00270
00271 #endif
00272
00273 #endif // _CURRPINFO
00274