Main Page   Class Hierarchy   Compound List   File List   Header Files   Sources   Compound Members   File Members  

numfmt.h

00001 /*
00002 * Copyright © {1997-1999}, 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 class Locale;
00028 
00115 class U_I18N_API NumberFormat : public Format {
00116 public:
00117 
00126     enum EAlignmentFields {
00127         kIntegerField,
00128         kFractionField,
00129 
00130 
00136         INTEGER_FIELD        = kIntegerField,
00137         FRACTION_FIELD        = kFractionField
00138     };
00139 
00140     virtual ~NumberFormat();
00141 
00147     virtual UBool operator==(const Format& other) const;
00148 
00164     virtual UnicodeString& format(const Formattable& obj,
00165                                   UnicodeString& toAppendTo,
00166                                   FieldPosition& pos,
00167                                   UErrorCode& status) const;
00168 
00197     virtual void parseObject(const UnicodeString& source,
00198                              Formattable& result,
00199                              ParsePosition& parse_pos) const;
00200 
00210     UnicodeString& format(  double number,
00211                             UnicodeString& output) const;
00212 
00213     UnicodeString& format(  int32_t number,
00214                             UnicodeString& output) const;
00215 
00228     virtual UnicodeString& format(double number,
00229                                   UnicodeString& toAppendTo,
00230                                   FieldPosition& pos) const = 0;
00231     virtual UnicodeString& format(int32_t number,
00232                                   UnicodeString& toAppendTo,
00233                                   FieldPosition& pos) const = 0;
00234 
00239     UnicodeString& format(const Formattable& obj,
00240                           UnicodeString& result,
00241                           UErrorCode& status) const;
00242 
00264     virtual void parse(const UnicodeString& text,
00265                        Formattable& result,
00266                        ParsePosition& parsePosition) const = 0;
00267 
00282     virtual void parse( const UnicodeString& text,
00283                         Formattable& result,
00284                         UErrorCode& status) const;
00285 
00295     UBool isParseIntegerOnly(void) const;
00296 
00302     virtual void setParseIntegerOnly(UBool value);
00303 
00312     static NumberFormat* createInstance(UErrorCode&);
00313 
00321     static NumberFormat* createInstance(const Locale& inLocale,
00322                                         UErrorCode&);
00323 
00328     static NumberFormat* createCurrencyInstance(UErrorCode&);
00329 
00334     static NumberFormat* createCurrencyInstance(const Locale& inLocale,
00335                                                 UErrorCode&);
00336 
00341     static NumberFormat* createPercentInstance(UErrorCode&);
00342 
00347     static NumberFormat* createPercentInstance(const Locale& inLocale,
00348                                                UErrorCode&);
00349 
00354     static NumberFormat* createScientificInstance(UErrorCode&);
00355 
00360     static NumberFormat* createScientificInstance(const Locale& inLocale,
00361                                                 UErrorCode&);
00362 
00367     static const Locale* getAvailableLocales(int32_t& count);
00368 
00378     UBool isGroupingUsed(void) const;
00379 
00385     virtual void setGroupingUsed(UBool newValue);
00386 
00393     int32_t getMaximumIntegerDigits(void) const;
00394 
00405     virtual void setMaximumIntegerDigits(int32_t newValue);
00406 
00413     int32_t getMinimumIntegerDigits(void) const;
00414 
00424     virtual void setMinimumIntegerDigits(int32_t newValue);
00425 
00432     int32_t getMaximumFractionDigits(void) const;
00433 
00443     virtual void setMaximumFractionDigits(int32_t newValue);
00444 
00451     int32_t getMinimumFractionDigits(void) const;
00452 
00462     virtual void setMinimumFractionDigits(int32_t newValue);
00463 
00464 public:
00465 
00477     static UClassID getStaticClassID(void) { return (UClassID)&fgClassID; }
00478 
00491     virtual UClassID getDynamicClassID(void) const { return getStaticClassID(); }
00492 
00493 protected:
00494 
00499     NumberFormat();
00500 
00505     NumberFormat(const NumberFormat&);
00506 
00511     NumberFormat& operator=(const NumberFormat&);
00512 
00513 protected:
00514     static const int32_t fgMaxIntegerDigits;
00515     static const int32_t fgMinIntegerDigits;
00516 
00517 private:
00518     static char fgClassID;
00519 
00520     enum EStyles {
00521         kNumberStyle,
00522         kCurrencyStyle,
00523         kPercentStyle,
00524         kScientificStyle,
00525         kStyleCount // ALWAYS LAST ENUM: number of styles
00526     };
00527 
00528     static NumberFormat* createInstance(const Locale& desiredLocale, EStyles choice, UErrorCode& success);
00529 
00530     static const int32_t         fgNumberPatternsCount;
00531     static const UnicodeString     fgLastResortNumberPatterns[];
00532 
00533     UBool      fGroupingUsed;
00534     int32_t     fMaxIntegerDigits;
00535     int32_t     fMinIntegerDigits;
00536     int32_t     fMaxFractionDigits;
00537     int32_t     fMinFractionDigits;
00538     UBool      fParseIntegerOnly;
00539 };
00540  
00541 // -------------------------------------
00542  
00543 inline UBool
00544 NumberFormat::isParseIntegerOnly() const
00545 {
00546     return fParseIntegerOnly;
00547 }
00548 
00549 inline UnicodeString&
00550 NumberFormat::format(const Formattable& obj,
00551                      UnicodeString& result,
00552                      UErrorCode& status) const {
00553     return Format::format(obj, result, status);
00554 }
00555  
00556 #endif // _NUMFMT
00557 //eof

Generated at Wed Aug 16 16:05:34 2000 for ICU1.6 by doxygen 1.0.0 written by Dimitri van Heesch, © 1997-1999