Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

numfmt.h

00001 /* 00002 * Copyright (C) {1997-2001}, International Business Machines Corporation and others. All Rights Reserved. 00003 ******************************************************************************** 00004 * 00005 * File NUMFMT.H 00006 * 00007 * Modification History: 00008 * 00009 * Date Name Description 00010 * 02/19/97 aliu Converted from java. 00011 * 03/18/97 clhuang Updated per C++ implementation. 00012 * 04/17/97 aliu Changed DigitCount to int per code review. 00013 * 07/20/98 stephen JDK 1.2 sync up. Added scientific support. 00014 * Changed naming conventions to match C++ guidelines 00015 * Derecated Java style constants (eg, INTEGER_FIELD) 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 // ALWAYS LAST ENUM: number of styles 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 //eof

Generated on Wed Aug 18 05:18:14 2004 for ICU 2.1 by doxygen 1.3.7