Coverage Report

Created: 2025-06-24 06:43

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