Imported Upstream version 58.1
[platform/upstream/icu.git] / source / i18n / currfmt.h
1 // Copyright (C) 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 20, 2004
10 * Since: ICU 3.0
11 **********************************************************************
12 */
13 #ifndef CURRENCYFORMAT_H
14 #define CURRENCYFORMAT_H
15
16 #include "unicode/utypes.h"
17
18 #if !UCONFIG_NO_FORMATTING
19
20 #include "unicode/measfmt.h"
21
22 U_NAMESPACE_BEGIN
23
24 class NumberFormat;
25
26 /**
27  * Temporary internal concrete subclass of MeasureFormat implementing
28  * parsing and formatting of currency amount objects.  This class is
29  * likely to be redesigned and rewritten in the near future.
30  *
31  * <p>This class currently delegates to DecimalFormat for parsing and
32  * formatting.
33  *
34  * @see MeasureFormat
35  * @author Alan Liu
36  * @internal
37  */
38 class CurrencyFormat : public MeasureFormat {
39
40  public:
41
42     /**
43      * Construct a CurrencyFormat for the given locale.
44      */
45     CurrencyFormat(const Locale& locale, UErrorCode& ec);
46
47     /**
48      * Copy constructor.
49      */
50     CurrencyFormat(const CurrencyFormat& other);
51
52     /**
53      * Destructor.
54      */
55     virtual ~CurrencyFormat();
56
57     /**
58      * Override Format API.
59      */
60     virtual Format* clone() const;
61
62
63     using MeasureFormat::format;
64
65     /**
66      * Override Format API.
67      */
68     virtual UnicodeString& format(const Formattable& obj,
69                                   UnicodeString& appendTo,
70                                   FieldPosition& pos,
71                                   UErrorCode& ec) const;
72
73     /**
74      * Override Format API.
75      */
76     virtual void parseObject(const UnicodeString& source,
77                              Formattable& result,
78                              ParsePosition& pos) const;
79
80     /**
81      * Override Format API.
82      */
83     virtual UClassID getDynamicClassID() const;
84
85     /**
86      * Returns the class ID for this class.
87      */
88     static UClassID U_EXPORT2 getStaticClassID();
89
90  private:
91
92     NumberFormat* fmt;
93 };
94
95 U_NAMESPACE_END
96
97 #endif // #if !UCONFIG_NO_FORMATTING
98 #endif // #ifndef CURRENCYFORMAT_H