Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

numfmt.h

Go to the documentation of this file.
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 
00162     virtual UBool operator==(const Format& other) const;
00163 
00179     virtual UnicodeString& format(const Formattable& obj,
00180                                   UnicodeString& toAppendTo,
00181                                   FieldPosition& pos,
00182                                   UErrorCode& status) const;
00183 
00212     virtual void parseObject(const UnicodeString& source,
00213                              Formattable& result,
00214                              ParsePosition& parse_pos) const;
00215 
00225     UnicodeString& format(  double number,
00226                             UnicodeString& output) const;
00227 
00237     UnicodeString& format(  int32_t number,
00238                             UnicodeString& output) const;
00239 
00252     virtual UnicodeString& format(double number,
00253                                   UnicodeString& toAppendTo,
00254                                   FieldPosition& pos) const = 0;
00267     virtual UnicodeString& format(int32_t number,
00268                                   UnicodeString& toAppendTo,
00269                                   FieldPosition& pos) const = 0;
00270 
00278     UnicodeString& format(const Formattable& obj,
00279                           UnicodeString& result,
00280                           UErrorCode& status) const;
00281 
00303     virtual void parse(const UnicodeString& text,
00304                        Formattable& result,
00305                        ParsePosition& parsePosition) const = 0;
00306 
00321     virtual void parse( const UnicodeString& text,
00322                         Formattable& result,
00323                         UErrorCode& status) const;
00324 
00336     UBool isParseIntegerOnly(void) const;
00337 
00345     virtual void setParseIntegerOnly(UBool value);
00346 
00355     static NumberFormat* createInstance(UErrorCode&);
00356 
00365     static NumberFormat* createInstance(const Locale& inLocale,
00366                                         UErrorCode&);
00367 
00372     static NumberFormat* createCurrencyInstance(UErrorCode&);
00373 
00379     static NumberFormat* createCurrencyInstance(const Locale& inLocale,
00380                                                 UErrorCode&);
00381 
00386     static NumberFormat* createPercentInstance(UErrorCode&);
00387 
00393     static NumberFormat* createPercentInstance(const Locale& inLocale,
00394                                                UErrorCode&);
00395 
00400     static NumberFormat* createScientificInstance(UErrorCode&);
00401 
00407     static NumberFormat* createScientificInstance(const Locale& inLocale,
00408                                                 UErrorCode&);
00409 
00415     static const Locale* getAvailableLocales(int32_t& count);
00416 
00426     UBool isGroupingUsed(void) const;
00427 
00434     virtual void setGroupingUsed(UBool newValue);
00435 
00444     int32_t getMaximumIntegerDigits(void) const;
00445 
00458     virtual void setMaximumIntegerDigits(int32_t newValue);
00459 
00468     int32_t getMinimumIntegerDigits(void) const;
00469 
00480     virtual void setMinimumIntegerDigits(int32_t newValue);
00481 
00490     int32_t getMaximumFractionDigits(void) const;
00491 
00502     virtual void setMaximumFractionDigits(int32_t newValue);
00503 
00512     int32_t getMinimumFractionDigits(void) const;
00513 
00524     virtual void setMinimumFractionDigits(int32_t newValue);
00525 
00526 public:
00527 
00539     static UClassID getStaticClassID(void) { return (UClassID)&fgClassID; }
00540 
00553     virtual UClassID getDynamicClassID(void) const { return getStaticClassID(); }
00554 
00555 protected:
00556 
00561     NumberFormat();
00562 
00567     NumberFormat(const NumberFormat&);
00568 
00573     NumberFormat& operator=(const NumberFormat&);
00574 
00575 protected:
00576     static const int32_t fgMaxIntegerDigits;
00577     static const int32_t fgMinIntegerDigits;
00578 
00579 private:
00580     static const char fgClassID;
00581 
00582     enum EStyles {
00583         kNumberStyle,
00584         kCurrencyStyle,
00585         kPercentStyle,
00586         kScientificStyle,
00587         kStyleCount // ALWAYS LAST ENUM: number of styles
00588     };
00589     
00597     static NumberFormat* createInstance(const Locale& desiredLocale, EStyles choice, UErrorCode& success);
00598 
00599     static const int32_t    fgNumberPatternsCount;
00600     static const UChar* const fgLastResortNumberPatterns[];
00601 
00602     UBool      fGroupingUsed;
00603     int32_t     fMaxIntegerDigits;
00604     int32_t     fMinIntegerDigits;
00605     int32_t     fMaxFractionDigits;
00606     int32_t     fMinFractionDigits;
00607     UBool      fParseIntegerOnly;
00608 };
00609 
00610 // -------------------------------------
00611 
00612 inline UBool
00613 NumberFormat::isParseIntegerOnly() const
00614 {
00615     return fParseIntegerOnly;
00616 }
00617 
00618 inline UnicodeString&
00619 NumberFormat::format(const Formattable& obj,
00620                      UnicodeString& result,
00621                      UErrorCode& status) const {
00622     return Format::format(obj, result, status);
00623 }
00624 
00625 U_NAMESPACE_END
00626 
00627 #endif // _NUMFMT
00628 //eof

Generated on Thu Aug 15 14:13:27 2002 for ICU 2.2 by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001