Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/intl/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 !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
0
}
124
125
0
inline const char16_t* CurrencyAmount::getISOCurrency() const {
126
0
    return getCurrency().getISOCurrency();
127
0
}
128
129
U_NAMESPACE_END
130
131
#endif // !UCONFIG_NO_FORMATTING
132
#endif // __CURRENCYAMOUNT_H__