Home | History | Annotate | Download | only in unicode
      1 /*
      2 **********************************************************************
      3 * Copyright (c) 2004-2006, International Business Machines
      4 * Corporation and others.  All Rights Reserved.
      5 **********************************************************************
      6 * Author: Alan Liu
      7 * Created: April 26, 2004
      8 * Since: ICU 3.0
      9 **********************************************************************
     10 */
     11 #ifndef __CURRENCYUNIT_H__
     12 #define __CURRENCYUNIT_H__
     13 
     14 #include "unicode/utypes.h"
     15 
     16 #if !UCONFIG_NO_FORMATTING
     17 
     18 #include "unicode/measunit.h"
     19 
     20 /**
     21  * \file
     22  * \brief C++ API: Currency Unit Information.
     23  */
     24 
     25 U_NAMESPACE_BEGIN
     26 
     27 /**
     28  * A unit of currency, such as USD (U.S. dollars) or JPY (Japanese
     29  * yen).  This class is a thin wrapper over a UChar string that
     30  * subclasses MeasureUnit, for use with Measure and MeasureFormat.
     31  *
     32  * @author Alan Liu
     33  * @stable ICU 3.0
     34  */
     35 class U_I18N_API CurrencyUnit: public MeasureUnit {
     36  public:
     37     /**
     38      * Construct an object with the given ISO currency code.
     39      * @param isoCode the 3-letter ISO 4217 currency code; must not be
     40      * NULL and must have length 3
     41      * @param ec input-output error code. If the isoCode is invalid,
     42      * then this will be set to a failing value.
     43      * @stable ICU 3.0
     44      */
     45     CurrencyUnit(const UChar* isoCode, UErrorCode &ec);
     46 
     47     /**
     48      * Copy constructor
     49      * @stable ICU 3.0
     50      */
     51     CurrencyUnit(const CurrencyUnit& other);
     52 
     53     /**
     54      * Assignment operator
     55      * @stable ICU 3.0
     56      */
     57     CurrencyUnit& operator=(const CurrencyUnit& other);
     58 
     59     /**
     60      * Return a polymorphic clone of this object.  The result will
     61      * have the same class as returned by getDynamicClassID().
     62      * @stable ICU 3.0
     63      */
     64     virtual UObject* clone() const;
     65 
     66     /**
     67      * Destructor
     68      * @stable ICU 3.0
     69      */
     70     virtual ~CurrencyUnit();
     71 
     72     /**
     73      * Equality operator.  Return true if this object is equal
     74      * to the given object.
     75      * @stable ICU 3.0
     76      */
     77     UBool operator==(const UObject& other) const;
     78 
     79     /**
     80      * Returns a unique class ID for this object POLYMORPHICALLY.
     81      * This method implements a simple form of RTTI used by ICU.
     82      * @return The class ID for this object. All objects of a given
     83      * class have the same class ID.  Objects of other classes have
     84      * different class IDs.
     85      * @stable ICU 3.0
     86      */
     87     virtual UClassID getDynamicClassID() const;
     88 
     89     /**
     90      * Returns the class ID for this class. This is used to compare to
     91      * the return value of getDynamicClassID().
     92      * @return The class ID for all objects of this class.
     93      * @stable ICU 3.0
     94      */
     95     static UClassID U_EXPORT2 getStaticClassID();
     96 
     97     /**
     98      * Return the ISO currency code of this object.
     99      * @stable ICU 3.0
    100      */
    101     inline const UChar* getISOCurrency() const;
    102 
    103  private:
    104     /**
    105      * The ISO 4217 code of this object.
    106      */
    107     UChar isoCode[4];
    108 };
    109 
    110 inline const UChar* CurrencyUnit::getISOCurrency() const {
    111     return isoCode;
    112 }
    113 
    114 U_NAMESPACE_END
    115 
    116 #endif // !UCONFIG_NO_FORMATTING
    117 #endif // __CURRENCYUNIT_H__
    118