Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

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 Mon Mar 4 22:08:39 2002 for ICU 2.0 by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002