• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
2  **********************************************************************
3  * Copyright (c) 2004-2014, 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       * Returns a unique class ID for this object POLYMORPHICALLY.
74       * This method implements a simple form of RTTI used by ICU.
75       * @return The class ID for this object. All objects of a given
76       * class have the same class ID.  Objects of other classes have
77       * different class IDs.
78       * @stable ICU 3.0
79       */
80      virtual UClassID getDynamicClassID() const;
81  
82      /**
83       * Returns the class ID for this class. This is used to compare to
84       * the return value of getDynamicClassID().
85       * @return The class ID for all objects of this class.
86       * @stable ICU 3.0
87       */
88      static UClassID U_EXPORT2 getStaticClassID();
89  
90      /**
91       * Return the ISO currency code of this object.
92       * @stable ICU 3.0
93       */
94      inline const UChar* getISOCurrency() const;
95  
96   private:
97      /**
98       * The ISO 4217 code of this object.
99       */
100      UChar isoCode[4];
101  };
102  
getISOCurrency()103  inline const UChar* CurrencyUnit::getISOCurrency() const {
104      return isoCode;
105  }
106  
107  U_NAMESPACE_END
108  
109  #endif // !UCONFIG_NO_FORMATTING
110  #endif // __CURRENCYUNIT_H__
111