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

dcfmtsym.h

00001 /*
00002 ********************************************************************************
00003 *   Copyright (C) 1997-1999, International Business Machines
00004 *   Corporation and others.  All Rights Reserved.
00005 ********************************************************************************
00006 *
00007 * File DCFMTSYM.H
00008 *
00009 * Modification History:
00010 * 
00011 *   Date        Name        Description
00012 *   02/19/97    aliu        Converted from java.
00013 *   03/18/97    clhuang     Updated per C++ implementation.
00014 *   03/27/97    helena      Updated to pass the simple test after code review.
00015 *   08/26/97    aliu        Added currency/intl currency symbol support.
00016 *    07/22/98    stephen        Changed to match C++ style 
00017 *                            currencySymbol -> fCurrencySymbol
00018 *                            Constants changed from CAPS to kCaps
00019 *   06/24/99    helena      Integrated Alan's NF enhancements and Java2 bug fixes
00020 ********************************************************************************
00021 */
00022  
00023 #ifndef DCFMTSYM_H
00024 #define DCFMTSYM_H
00025  
00026 #include "unicode/utypes.h"
00027 #include "unicode/locid.h"
00028 
00067 class U_I18N_API DecimalFormatSymbols {
00068 public:
00073     enum ENumberFormatSymbol {
00075         kDecimalSeparatorSymbol,
00077         kGroupingSeparatorSymbol,
00079         kPatternSeparatorSymbol,
00081         kPercentSymbol,
00083         kZeroDigitSymbol,
00085         kDigitSymbol,
00087         kMinusSignSymbol,
00089         kPlusSignSymbol,
00091         kCurrencySymbol,
00093         kIntlCurrencySymbol,
00095         kMonetarySeparatorSymbol,
00097         kExponentialSymbol,
00099         kPermillSymbol,
00101         kPadEscapeSymbol,
00103         kInfinitySymbol,
00105         kNaNSymbol,
00107         kFormatSymbolCount
00108     };
00109 
00118     DecimalFormatSymbols(const Locale& locale, UErrorCode& status);
00119 
00130     DecimalFormatSymbols( UErrorCode& status);
00131 
00136     DecimalFormatSymbols(const DecimalFormatSymbols&);
00137 
00142     DecimalFormatSymbols& operator=(const DecimalFormatSymbols&);
00143 
00148     ~DecimalFormatSymbols();
00149 
00154     UBool operator==(const DecimalFormatSymbols& other) const;
00155 
00160     UBool operator!=(const DecimalFormatSymbols& other) const { return !operator==(other); }
00161 
00168     UnicodeString getSymbol(ENumberFormatSymbol symbol) const;
00169 
00176     void setSymbol(ENumberFormatSymbol symbol, UnicodeString value);
00177 
00182     UChar getZeroDigit(void) const;
00187     void setZeroDigit(UChar zeroDigit);
00188 
00193     UChar getGroupingSeparator(void) const;
00198     void setGroupingSeparator(UChar groupingSeparator);
00199 
00204     UChar getDecimalSeparator(void) const;
00209     void setDecimalSeparator(UChar decimalSeparator);
00210 
00215     UChar getPerMill(void) const;
00220     void setPerMill(UChar permill);
00221 
00226     UChar getPercent(void) const;
00231     void setPercent(UChar percent);
00232 
00237     UChar getDigit(void) const;
00242     void setDigit(UChar digit);
00243 
00249     UChar getPatternSeparator(void) const;
00255     void setPatternSeparator(UChar patternSeparator);
00256 
00262     UnicodeString& getInfinity(UnicodeString& result) const;
00268     void setInfinity(const UnicodeString& infinity);
00269 
00275     UnicodeString& getNaN(UnicodeString& result) const;
00281     void setNaN(const UnicodeString& NaN);
00282 
00287     UChar getPlusSign(void) const;
00292     void setPlusSign(UChar minusSign);
00293 
00300     UChar getMinusSign(void) const;
00307     void setMinusSign(UChar minusSign);
00308  
00314     UChar getExponentialSymbol(void) const;
00320     void setExponentialSymbol(UChar exponential);
00321 
00326     UnicodeString& getCurrencySymbol(UnicodeString& result) const;
00331     void setCurrencySymbol(const UnicodeString& currency);
00332 
00337     UnicodeString& getInternationalCurrencySymbol(UnicodeString& result) const;
00342     void setInternationalCurrencySymbol(const UnicodeString& currency);
00343 
00348     UChar getMonetaryDecimalSeparator(void) const;
00353     void setMonetaryDecimalSeparator(UChar sep);
00354 
00367     UChar getPadEscape(void) const;
00368 
00380     void setPadEscape(UChar c);
00381 
00382 private:
00388     void initialize(const Locale& locale, UErrorCode& success, UBool useLastResortData = FALSE);
00389 
00394     void initialize(const UnicodeString* numberElements, const UnicodeString* currencyElements);
00395 
00399     void initialize();
00400 
00401     UnicodeString fSymbols[kFormatSymbolCount];
00402 };
00403  
00404 
00405 // -------------------------------------
00406  
00407 inline UnicodeString
00408 DecimalFormatSymbols::getSymbol(ENumberFormatSymbol symbol) const {
00409     if(symbol<kFormatSymbolCount) {
00410         return fSymbols[symbol];
00411     } else {
00412         return UnicodeString();
00413     }
00414 }
00415  
00416 // -------------------------------------
00417  
00418 inline void
00419 DecimalFormatSymbols::setSymbol(ENumberFormatSymbol symbol, UnicodeString value) {
00420     if(symbol<kFormatSymbolCount) {
00421         fSymbols[symbol]=value;
00422     }
00423 }
00424 
00425 // -------------------------------------
00426  
00427 inline UChar
00428 DecimalFormatSymbols::getZeroDigit() const
00429 {
00430     return fSymbols[kZeroDigitSymbol].charAt(0);
00431 }
00432  
00433 // -------------------------------------
00434  
00435 inline void
00436 DecimalFormatSymbols::setZeroDigit(UChar zeroDigit)
00437 {
00438     fSymbols[kZeroDigitSymbol] = zeroDigit;
00439 }
00440  
00441 // -------------------------------------
00442  
00443 inline UChar
00444 DecimalFormatSymbols::getGroupingSeparator() const
00445 {
00446     return fSymbols[kGroupingSeparatorSymbol].charAt(0);
00447 }
00448  
00449 // -------------------------------------
00450  
00451 inline void
00452 DecimalFormatSymbols::setGroupingSeparator(UChar groupingSeparator)
00453 {
00454     fSymbols[kGroupingSeparatorSymbol] = groupingSeparator;
00455 }
00456  
00457 // -------------------------------------
00458  
00459 inline UChar
00460 DecimalFormatSymbols::getDecimalSeparator() const
00461 {
00462     return fSymbols[kDecimalSeparatorSymbol].charAt(0);
00463 }
00464  
00465 // -------------------------------------
00466  
00467 inline void
00468 DecimalFormatSymbols::setDecimalSeparator(UChar decimalSeparator)
00469 {
00470     fSymbols[kDecimalSeparatorSymbol] = decimalSeparator;
00471 }
00472  
00473 // -------------------------------------
00474  
00475 inline UChar
00476 DecimalFormatSymbols::getPerMill() const
00477 {
00478     return fSymbols[kPermillSymbol].charAt(0);
00479 }
00480  
00481 // -------------------------------------
00482  
00483 inline void
00484 DecimalFormatSymbols::setPerMill(UChar permill)
00485 {
00486     fSymbols[kPermillSymbol] = permill;
00487 }
00488  
00489 // -------------------------------------
00490  
00491 inline UChar
00492 DecimalFormatSymbols::getPercent() const
00493 {
00494     return fSymbols[kPercentSymbol].charAt(0);
00495 }
00496  
00497 // -------------------------------------
00498  
00499 inline void
00500 DecimalFormatSymbols::setPercent(UChar percent)
00501 {
00502     fSymbols[kPercentSymbol] = percent;
00503 }
00504  
00505 // -------------------------------------
00506  
00507 inline UChar
00508 DecimalFormatSymbols::getDigit() const
00509 {
00510     return fSymbols[kDigitSymbol].charAt(0);
00511 }
00512  
00513 // -------------------------------------
00514  
00515 inline void
00516 DecimalFormatSymbols::setDigit(UChar digit)
00517 {
00518     fSymbols[kDigitSymbol] = digit;
00519 }
00520  
00521 // -------------------------------------
00522  
00523 inline UChar
00524 DecimalFormatSymbols::getPatternSeparator() const
00525 {
00526     return fSymbols[kPatternSeparatorSymbol].charAt(0);
00527 }
00528  
00529 // -------------------------------------
00530  
00531 inline void
00532 DecimalFormatSymbols::setPatternSeparator(UChar patternSeparator)
00533 {
00534     fSymbols[kPatternSeparatorSymbol] = patternSeparator;
00535 }
00536  
00537 // -------------------------------------
00538  
00539 inline UnicodeString&
00540 DecimalFormatSymbols::getInfinity(UnicodeString& result) const
00541 {
00542     return result = fSymbols[kInfinitySymbol];
00543 }
00544  
00545 // -------------------------------------
00546  
00547 inline void
00548 DecimalFormatSymbols::setInfinity(const UnicodeString& infinity)
00549 {
00550     fSymbols[kInfinitySymbol] = infinity;
00551 }
00552  
00553 // -------------------------------------
00554  
00555 inline UnicodeString&
00556 DecimalFormatSymbols::getNaN(UnicodeString& result) const
00557 {
00558     return result = fSymbols[kNaNSymbol];
00559 }
00560  
00561 // -------------------------------------
00562  
00563 inline void
00564 DecimalFormatSymbols::setNaN(const UnicodeString& NaN)
00565 {
00566     fSymbols[kNaNSymbol] = NaN;
00567 }
00568  
00569 // -------------------------------------
00570  
00571 inline UChar
00572 DecimalFormatSymbols::getPlusSign() const
00573 {
00574     return fSymbols[kPlusSignSymbol].charAt(0);
00575 }
00576  
00577 // -------------------------------------
00578  
00579 inline void
00580 DecimalFormatSymbols::setPlusSign(UChar plusSign)
00581 {
00582     fSymbols[kPlusSignSymbol] = plusSign;
00583 }
00584  
00585 // -------------------------------------
00586  
00587 inline UChar
00588 DecimalFormatSymbols::getMinusSign() const
00589 {
00590     return fSymbols[kMinusSignSymbol].charAt(0);
00591 }
00592  
00593 // -------------------------------------
00594  
00595 inline void
00596 DecimalFormatSymbols::setMinusSign(UChar minusSign)
00597 {
00598     fSymbols[kMinusSignSymbol] = minusSign;
00599 }
00600  
00601 // -------------------------------------
00602  
00603 inline UChar
00604 DecimalFormatSymbols::getExponentialSymbol(void) const
00605 {
00606     return fSymbols[kExponentialSymbol].charAt(0);
00607 }
00608  
00609 // -------------------------------------
00610  
00611 inline void
00612 DecimalFormatSymbols::setExponentialSymbol(UChar exponential)
00613 {
00614     fSymbols[kExponentialSymbol] = exponential;
00615 }
00616  
00617 // -------------------------------------
00618  
00619 inline UnicodeString&
00620 DecimalFormatSymbols::getCurrencySymbol(UnicodeString& result) const
00621 {
00622     return result = fSymbols[kCurrencySymbol];
00623 }
00624  
00625 // -------------------------------------
00626  
00627 inline void
00628 DecimalFormatSymbols::setCurrencySymbol(const UnicodeString& str)
00629 {
00630     fSymbols[kCurrencySymbol] = str;
00631 }
00632  
00633 // -------------------------------------
00634  
00635 inline UnicodeString&
00636 DecimalFormatSymbols::getInternationalCurrencySymbol(UnicodeString& result) const
00637 {
00638     return result = fSymbols[kIntlCurrencySymbol];
00639 }
00640  
00641 // -------------------------------------
00642  
00643 inline void
00644 DecimalFormatSymbols::setInternationalCurrencySymbol(const UnicodeString& str)
00645 {
00646     fSymbols[kIntlCurrencySymbol] = str;
00647 }
00648  
00649 // -------------------------------------
00650  
00651 inline UChar
00652 DecimalFormatSymbols::getMonetaryDecimalSeparator(void) const
00653 {
00654     return fSymbols[kMonetarySeparatorSymbol].charAt(0);
00655 }
00656  
00657 // -------------------------------------
00658  
00659 inline void
00660 DecimalFormatSymbols::setMonetaryDecimalSeparator(UChar sep)
00661 {
00662     fSymbols[kMonetarySeparatorSymbol] = sep;
00663 }
00664  
00665 inline UChar DecimalFormatSymbols::getPadEscape(void) const {
00666     return fSymbols[kPadEscapeSymbol].charAt(0);
00667 }
00668 
00669 inline void DecimalFormatSymbols::setPadEscape(UChar c) {
00670     fSymbols[kPadEscapeSymbol] = c;
00671 }
00672 
00673 #endif // _DCFMTSYM
00674 //eof

Generated at Mon Jun 5 12:53:02 2000 for ICU1.5 by doxygen 1.0.0 written by Dimitri van Heesch, © 1997-1999