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