• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
getISOCurrency()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