00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
#ifndef NUMFMT_H
00020
#define NUMFMT_H
00021
00022
00023
#include "unicode/utypes.h"
00024
#include "unicode/unistr.h"
00025
#include "unicode/format.h"
00026
00027 U_NAMESPACE_BEGIN
00028
00029
class Locale;
00030
00125 class U_I18N_API NumberFormat :
public Format {
00126
public:
00127
00136 enum EAlignmentFields {
00137 kIntegerField,
00138 kFractionField,
00139
00140
00146 INTEGER_FIELD = kIntegerField,
00147 FRACTION_FIELD = kFractionField
00148 };
00149
00154
virtual ~NumberFormat();
00155
00161
virtual UBool operator==(
const Format& other)
const;
00162
00178
virtual UnicodeString& format(
const Formattable& obj,
00179
UnicodeString& toAppendTo,
00180
FieldPosition& pos,
00181 UErrorCode& status)
const;
00182
00211
virtual void parseObject(
const UnicodeString& source,
00212
Formattable& result,
00213
ParsePosition& parse_pos)
const;
00214
00224
UnicodeString& format(
double number,
00225
UnicodeString& output)
const;
00226
00236
UnicodeString& format( int32_t number,
00237
UnicodeString& output)
const;
00238
00251
virtual UnicodeString& format(
double number,
00252
UnicodeString& toAppendTo,
00253
FieldPosition& pos)
const = 0;
00266
virtual UnicodeString& format(int32_t number,
00267
UnicodeString& toAppendTo,
00268
FieldPosition& pos)
const = 0;
00269
00274
UnicodeString& format(
const Formattable& obj,
00275
UnicodeString& result,
00276 UErrorCode& status)
const;
00277
00299
virtual void parse(
const UnicodeString& text,
00300
Formattable& result,
00301
ParsePosition& parsePosition)
const = 0;
00302
00317
virtual void parse(
const UnicodeString& text,
00318
Formattable& result,
00319 UErrorCode& status)
const;
00320
00330 UBool isParseIntegerOnly(
void) const;
00331
00337 virtual
void setParseIntegerOnly(UBool value);
00338
00347 static NumberFormat* createInstance(UErrorCode&);
00348
00356 static NumberFormat* createInstance(const Locale& inLocale,
00357 UErrorCode&);
00358
00363 static NumberFormat* createCurrencyInstance(UErrorCode&);
00364
00369 static NumberFormat* createCurrencyInstance(const Locale& inLocale,
00370 UErrorCode&);
00371
00376 static NumberFormat* createPercentInstance(UErrorCode&);
00377
00382 static NumberFormat* createPercentInstance(const Locale& inLocale,
00383 UErrorCode&);
00384
00389 static NumberFormat* createScientificInstance(UErrorCode&);
00390
00395 static NumberFormat* createScientificInstance(const Locale& inLocale,
00396 UErrorCode&);
00397
00402 static const Locale* getAvailableLocales(int32_t& count);
00403
00413 UBool isGroupingUsed(
void) const;
00414
00420 virtual
void setGroupingUsed(UBool newValue);
00421
00428 int32_t getMaximumIntegerDigits(
void) const;
00429
00440 virtual
void setMaximumIntegerDigits(int32_t newValue);
00441
00448 int32_t getMinimumIntegerDigits(
void) const;
00449
00459 virtual
void setMinimumIntegerDigits(int32_t newValue);
00460
00467 int32_t getMaximumFractionDigits(
void) const;
00468
00478 virtual
void setMaximumFractionDigits(int32_t newValue);
00479
00486 int32_t getMinimumFractionDigits(
void) const;
00487
00497 virtual
void setMinimumFractionDigits(int32_t newValue);
00498
00499 public:
00500
00512 static
UClassID getStaticClassID(
void) {
return (
UClassID)&fgClassID; }
00513
00526 virtual UClassID getDynamicClassID(
void)
const {
return getStaticClassID(); }
00527
00528
protected:
00529
00534 NumberFormat();
00535
00540 NumberFormat(
const NumberFormat&);
00541
00546 NumberFormat& operator=(
const NumberFormat&);
00547
00548
protected:
00549
static const int32_t fgMaxIntegerDigits;
00550
static const int32_t fgMinIntegerDigits;
00551
00552
private:
00553
static const char fgClassID;
00554
00555
enum EStyles {
00556 kNumberStyle,
00557 kCurrencyStyle,
00558 kPercentStyle,
00559 kScientificStyle,
00560 kStyleCount
00561 };
00562
00563
static NumberFormat* createInstance(
const Locale& desiredLocale, EStyles choice, UErrorCode& success);
00564
00565
static const int32_t fgNumberPatternsCount;
00566
static const UChar*
const fgLastResortNumberPatterns[];
00567
00568 UBool fGroupingUsed;
00569 int32_t fMaxIntegerDigits;
00570 int32_t fMinIntegerDigits;
00571 int32_t fMaxFractionDigits;
00572 int32_t fMinFractionDigits;
00573 UBool fParseIntegerOnly;
00574 };
00575
00576
00577
00578
inline UBool
00579 NumberFormat::isParseIntegerOnly()
const
00580
{
00581
return fParseIntegerOnly;
00582 }
00583
00584
inline UnicodeString&
00585 NumberFormat::format(
const Formattable& obj,
00586
UnicodeString& result,
00587 UErrorCode& status)
const {
00588
return Format::format(obj, result, status);
00589 }
00590
00591 U_NAMESPACE_END
00592
00593
#endif // _NUMFMT
00594