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-2006, 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 __CURRENCYAMOUNT_H__
14 : #define __CURRENCYAMOUNT_H__
15 :
16 : #include "unicode/utypes.h"
17 :
18 : #if !UCONFIG_NO_FORMATTING
19 :
20 : #include "unicode/measure.h"
21 : #include "unicode/currunit.h"
22 :
23 : /**
24 : * \file
25 : * \brief C++ API: Currency Amount Object.
26 : */
27 :
28 : U_NAMESPACE_BEGIN
29 :
30 : /**
31 : *
32 : * A currency together with a numeric amount, such as 200 USD.
33 : *
34 : * @author Alan Liu
35 : * @stable ICU 3.0
36 : */
37 : class U_I18N_API CurrencyAmount: public Measure {
38 : public:
39 : /**
40 : * Construct an object with the given numeric amount and the given
41 : * ISO currency code.
42 : * @param amount a numeric object; amount.isNumeric() must be TRUE
43 : * @param isoCode the 3-letter ISO 4217 currency code; must not be
44 : * NULL and must have length 3
45 : * @param ec input-output error code. If the amount or the isoCode
46 : * is invalid, then this will be set to a failing value.
47 : * @stable ICU 3.0
48 : */
49 : CurrencyAmount(const Formattable& amount, ConstChar16Ptr isoCode,
50 : UErrorCode &ec);
51 :
52 : /**
53 : * Construct an object with the given numeric amount and the given
54 : * ISO currency code.
55 : * @param amount the amount of the given currency
56 : * @param isoCode the 3-letter ISO 4217 currency code; must not be
57 : * NULL and must have length 3
58 : * @param ec input-output error code. If the isoCode is invalid,
59 : * then this will be set to a failing value.
60 : * @stable ICU 3.0
61 : */
62 : CurrencyAmount(double amount, ConstChar16Ptr isoCode,
63 : UErrorCode &ec);
64 :
65 : /**
66 : * Copy constructor
67 : * @stable ICU 3.0
68 : */
69 : CurrencyAmount(const CurrencyAmount& other);
70 :
71 : /**
72 : * Assignment operator
73 : * @stable ICU 3.0
74 : */
75 : CurrencyAmount& operator=(const CurrencyAmount& other);
76 :
77 : /**
78 : * Return a polymorphic clone of this object. The result will
79 : * have the same class as returned by getDynamicClassID().
80 : * @stable ICU 3.0
81 : */
82 : virtual UObject* clone() const;
83 :
84 : /**
85 : * Destructor
86 : * @stable ICU 3.0
87 : */
88 : virtual ~CurrencyAmount();
89 :
90 : /**
91 : * Returns a unique class ID for this object POLYMORPHICALLY.
92 : * This method implements a simple form of RTTI used by ICU.
93 : * @return The class ID for this object. All objects of a given
94 : * class have the same class ID. Objects of other classes have
95 : * different class IDs.
96 : * @stable ICU 3.0
97 : */
98 : virtual UClassID getDynamicClassID() const;
99 :
100 : /**
101 : * Returns the class ID for this class. This is used to compare to
102 : * the return value of getDynamicClassID().
103 : * @return The class ID for all objects of this class.
104 : * @stable ICU 3.0
105 : */
106 : static UClassID U_EXPORT2 getStaticClassID();
107 :
108 : /**
109 : * Return the currency unit object of this object.
110 : * @stable ICU 3.0
111 : */
112 : inline const CurrencyUnit& getCurrency() const;
113 :
114 : /**
115 : * Return the ISO currency code of this object.
116 : * @stable ICU 3.0
117 : */
118 : inline const char16_t* getISOCurrency() const;
119 : };
120 :
121 0 : inline const CurrencyUnit& CurrencyAmount::getCurrency() const {
122 0 : return (const CurrencyUnit&) getUnit();
123 : }
124 :
125 0 : inline const char16_t* CurrencyAmount::getISOCurrency() const {
126 0 : return getCurrency().getISOCurrency();
127 : }
128 :
129 : U_NAMESPACE_END
130 :
131 : #endif // !UCONFIG_NO_FORMATTING
132 : #endif // __CURRENCYAMOUNT_H__
|