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

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 class Locale;
00028 
00123 class U_I18N_API NumberFormat : public Format {
00124 public:
00125 
00134     enum EAlignmentFields {
00135         kIntegerField,
00136         kFractionField,
00137 
00138 
00144         INTEGER_FIELD        = kIntegerField,
00145         FRACTION_FIELD        = kFractionField
00146     };
00147 
00148     virtual ~NumberFormat();
00149 
00155     virtual UBool operator==(const Format& other) const;
00156 
00172     virtual UnicodeString& format(const Formattable& obj,
00173                                   UnicodeString& toAppendTo,
00174                                   FieldPosition& pos,
00175                                   UErrorCode& status) const;
00176 
00205     virtual void parseObject(const UnicodeString& source,
00206                              Formattable& result,
00207                              ParsePosition& parse_pos) const;
00208 
00218     UnicodeString& format(  double number,
00219                             UnicodeString& output) const;
00220 
00221     UnicodeString& format(  int32_t number,
00222                             UnicodeString& output) const;
00223 
00236     virtual UnicodeString& format(double number,
00237                                   UnicodeString& toAppendTo,
00238                                   FieldPosition& pos) const = 0;
00239     virtual UnicodeString& format(int32_t number,
00240                                   UnicodeString& toAppendTo,
00241                                   FieldPosition& pos) const = 0;
00242 
00247     UnicodeString& format(const Formattable& obj,
00248                           UnicodeString& result,
00249                           UErrorCode& status) const;
00250 
00272     virtual void parse(const UnicodeString& text,
00273                        Formattable& result,
00274                        ParsePosition& parsePosition) const = 0;
00275 
00290     virtual void parse( const UnicodeString& text,
00291                         Formattable& result,
00292                         UErrorCode& status) const;
00293 
00303     UBool isParseIntegerOnly(void) const;
00304 
00310     virtual void setParseIntegerOnly(UBool value);
00311 
00320     static NumberFormat* createInstance(UErrorCode&);
00321 
00329     static NumberFormat* createInstance(const Locale& inLocale,
00330                                         UErrorCode&);
00331 
00336     static NumberFormat* createCurrencyInstance(UErrorCode&);
00337 
00342     static NumberFormat* createCurrencyInstance(const Locale& inLocale,
00343                                                 UErrorCode&);
00344 
00349     static NumberFormat* createPercentInstance(UErrorCode&);
00350 
00355     static NumberFormat* createPercentInstance(const Locale& inLocale,
00356                                                UErrorCode&);
00357 
00362     static NumberFormat* createScientificInstance(UErrorCode&);
00363 
00368     static NumberFormat* createScientificInstance(const Locale& inLocale,
00369                                                 UErrorCode&);
00370 
00375     static const Locale* getAvailableLocales(int32_t& count);
00376 
00386     UBool isGroupingUsed(void) const;
00387 
00393     virtual void setGroupingUsed(UBool newValue);
00394 
00401     int32_t getMaximumIntegerDigits(void) const;
00402 
00413     virtual void setMaximumIntegerDigits(int32_t newValue);
00414 
00421     int32_t getMinimumIntegerDigits(void) const;
00422 
00432     virtual void setMinimumIntegerDigits(int32_t newValue);
00433 
00440     int32_t getMaximumFractionDigits(void) const;
00441 
00451     virtual void setMaximumFractionDigits(int32_t newValue);
00452 
00459     int32_t getMinimumFractionDigits(void) const;
00460 
00470     virtual void setMinimumFractionDigits(int32_t newValue);
00471 
00472 public:
00473 
00485     static UClassID getStaticClassID(void) { return (UClassID)&fgClassID; }
00486 
00499     virtual UClassID getDynamicClassID(void) const { return getStaticClassID(); }
00500 
00501 protected:
00502 
00507     NumberFormat();
00508 
00513     NumberFormat(const NumberFormat&);
00514 
00519     NumberFormat& operator=(const NumberFormat&);
00520 
00521 protected:
00522     static const int32_t fgMaxIntegerDigits;
00523     static const int32_t fgMinIntegerDigits;
00524 
00525 private:
00526     static char fgClassID;
00527 
00528     enum EStyles {
00529         kNumberStyle,
00530         kCurrencyStyle,
00531         kPercentStyle,
00532         kScientificStyle,
00533         kStyleCount // ALWAYS LAST ENUM: number of styles
00534     };
00535 
00536     static NumberFormat* createInstance(const Locale& desiredLocale, EStyles choice, UErrorCode& success);
00537 
00538     static const int32_t         fgNumberPatternsCount;
00539     static const UnicodeString     fgLastResortNumberPatterns[];
00540 
00541     UBool      fGroupingUsed;
00542     int32_t     fMaxIntegerDigits;
00543     int32_t     fMinIntegerDigits;
00544     int32_t     fMaxFractionDigits;
00545     int32_t     fMinFractionDigits;
00546     UBool      fParseIntegerOnly;
00547 };
00548 
00549 // -------------------------------------
00550 
00551 inline UBool
00552 NumberFormat::isParseIntegerOnly() const
00553 {
00554     return fParseIntegerOnly;
00555 }
00556 
00557 inline UnicodeString&
00558 NumberFormat::format(const Formattable& obj,
00559                      UnicodeString& result,
00560                      UErrorCode& status) const {
00561     return Format::format(obj, result, status);
00562 }
00563 
00564 #endif // _NUMFMT
00565 //eof

Generated at Tue Jun 12 14:03:57 2001 for ICU 1.8.1 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000