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