00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
#ifndef DCFMTSYM_H
00026
#define DCFMTSYM_H
00027
00028
#include "unicode/utypes.h"
00029
00030
#if !UCONFIG_NO_FORMATTING
00031
00032
#include "unicode/uobject.h"
00033
#include "unicode/locid.h"
00034
00035
U_NAMESPACE_BEGIN
00036
00076 class U_I18N_API DecimalFormatSymbols :
public UObject {
00077
public:
00082
enum ENumberFormatSymbol {
00084 kDecimalSeparatorSymbol,
00086 kGroupingSeparatorSymbol,
00088 kPatternSeparatorSymbol,
00090 kPercentSymbol,
00092 kZeroDigitSymbol,
00094 kDigitSymbol,
00096 kMinusSignSymbol,
00098 kPlusSignSymbol,
00100 kCurrencySymbol,
00102 kIntlCurrencySymbol,
00104 kMonetarySeparatorSymbol,
00106 kExponentialSymbol,
00108 kPerMillSymbol,
00110 kPadEscapeSymbol,
00112 kInfinitySymbol,
00114 kNaNSymbol,
00117 kSignificantDigitSymbol,
00119 kFormatSymbolCount
00120 };
00121
00130 DecimalFormatSymbols(
const Locale& locale,
UErrorCode& status);
00131
00142 DecimalFormatSymbols(
UErrorCode& status);
00143
00148 DecimalFormatSymbols(
const DecimalFormatSymbols&);
00149
00154 DecimalFormatSymbols& operator=(
const DecimalFormatSymbols&);
00155
00160 ~DecimalFormatSymbols();
00161
00169
UBool operator==(
const DecimalFormatSymbols& other)
const;
00170
00178
UBool operator!=(
const DecimalFormatSymbols& other)
const {
return !operator==(other); }
00179
00189
inline UnicodeString getSymbol(ENumberFormatSymbol symbol)
const;
00190
00200
void setSymbol(ENumberFormatSymbol symbol,
const UnicodeString &value);
00201
00206
inline Locale getLocale()
const;
00207
00213
Locale getLocale(
ULocDataLocaleType type,
UErrorCode& status)
const;
00214
00220
virtual UClassID getDynamicClassID()
const;
00221
00227
static UClassID getStaticClassID();
00228
00229
private:
00230 DecimalFormatSymbols();
00231
00242
void initialize(
const Locale& locale,
UErrorCode& success,
UBool useLastResortData =
FALSE);
00243
00251
void initialize(
const UnicodeString* numberElements,
int32_t numberElementsLength);
00252
00256
void initialize();
00257
00258
void setCurrencyForSymbols();
00259
00260
public:
00272
inline const UnicodeString &getConstSymbol(ENumberFormatSymbol symbol)
const;
00273
00274
private:
00290
UnicodeString fSymbols[kFormatSymbolCount];
00291
00296
UnicodeString fNoSymbol;
00297
00298
Locale locale;
00299
00300
char actualLocale[
ULOC_FULLNAME_CAPACITY];
00301
char validLocale[
ULOC_FULLNAME_CAPACITY];
00302 };
00303
00304
00305
00306
inline UnicodeString
00307 DecimalFormatSymbols::getSymbol(ENumberFormatSymbol symbol)
const {
00308
const UnicodeString *strPtr;
00309
if(symbol < kFormatSymbolCount) {
00310 strPtr = &fSymbols[symbol];
00311 }
else {
00312 strPtr = &fNoSymbol;
00313 }
00314
return *strPtr;
00315 }
00316
00317
inline const UnicodeString &
00318
DecimalFormatSymbols::getConstSymbol(ENumberFormatSymbol symbol)
const {
00319
const UnicodeString *strPtr;
00320
if(symbol <
kFormatSymbolCount) {
00321 strPtr = &fSymbols[symbol];
00322 }
else {
00323 strPtr = &fNoSymbol;
00324 }
00325
return *strPtr;
00326 }
00327
00328
00329
00330 inline void
00331
DecimalFormatSymbols::setSymbol(ENumberFormatSymbol symbol,
const UnicodeString &value) {
00332
if(symbol<
kFormatSymbolCount) {
00333 fSymbols[symbol]=value;
00334 }
00335 }
00336
00337
00338
00339
inline Locale
00340
DecimalFormatSymbols::getLocale()
const {
00341 return locale;
00342 }
00343
00344
00345
U_NAMESPACE_END
00346
00347
#endif
00348
00349
#endif // _DCFMTSYM
00350