1/*
2**********************************************************************
3* Copyright (c) 2004-2010, 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 UBool operator==(const Format& other) const;
59
60    /**
61     * Override Format API.
62     */
63    virtual Format* clone() const;
64
65
66    using MeasureFormat::format;
67
68    /**
69     * Override Format API.
70     */
71    virtual UnicodeString& format(const Formattable& obj,
72                                  UnicodeString& appendTo,
73                                  FieldPosition& pos,
74                                  UErrorCode& ec) const;
75
76    /**
77     * Override Format API.
78     */
79    virtual void parseObject(const UnicodeString& source,
80                             Formattable& result,
81                             ParsePosition& pos) const;
82
83    /**
84     * Override Format API.
85     */
86    virtual UClassID getDynamicClassID() const;
87
88    /**
89     * Returns the class ID for this class.
90     */
91    static UClassID U_EXPORT2 getStaticClassID();
92
93 private:
94
95    NumberFormat* fmt;
96};
97
98U_NAMESPACE_END
99
100#endif // #if !UCONFIG_NO_FORMATTING
101#endif // #ifndef CURRENCYFORMAT_H
102