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 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
99