1b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru/*
2b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru *******************************************************************************
3b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Copyright (C) 2009-2011, International Business Machines Corporation and         *
4b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * others. All Rights Reserved.                                                *
5b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru *******************************************************************************
6b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */
7b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#ifndef CURRPINF_H
8b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#define CURRPINF_H
9b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
10b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#include "unicode/utypes.h"
11b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
12b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru/**
13b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * \file
14b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * \brief C++ API: Currency Plural Information used by Decimal Format
15b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */
16b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
17b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#if !UCONFIG_NO_FORMATTING
18b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
19b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#include "unicode/unistr.h"
20b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
21b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruU_NAMESPACE_BEGIN
22b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
23b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruclass Locale;
24b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruclass PluralRules;
25b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruclass Hashtable;
26b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
27b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru/**
28b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * This class represents the information needed by
29b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * DecimalFormat to format currency plural,
30b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * such as "3.00 US dollars" or "1.00 US dollar".
31b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * DecimalFormat creates for itself an instance of
32b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * CurrencyPluralInfo from its locale data.
33b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * If you need to change any of these symbols, you can get the
34b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * CurrencyPluralInfo object from your
35b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * DecimalFormat and modify it.
36b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru *
37b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Following are the information needed for currency plural format and parse:
38b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * locale information,
39b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * plural rule of the locale,
40b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * currency plural pattern of the locale.
41b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru *
4250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.2
43b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */
44b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruclass  U_I18N_API CurrencyPluralInfo : public UObject {
45b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Querupublic:
46b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
47b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
48b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * Create a CurrencyPluralInfo object for the default locale.
49b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @param status output param set to success/failure code on exit
5050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @stable ICU 4.2
51b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
52b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    CurrencyPluralInfo(UErrorCode& status);
53b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
54b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
55b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * Create a CurrencyPluralInfo object for the given locale.
56b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @param locale the locale
57b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @param status output param set to success/failure code on exit
5850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @stable ICU 4.2
59b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
60b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    CurrencyPluralInfo(const Locale& locale, UErrorCode& status);
61b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
62b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
63b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * Copy constructor
64b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
6550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @stable ICU 4.2
66b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
67b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    CurrencyPluralInfo(const CurrencyPluralInfo& info);
68b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
69b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
70b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
71b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * Assignment operator
72b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
7350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @stable ICU 4.2
74b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
75b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    CurrencyPluralInfo& operator=(const CurrencyPluralInfo& info);
76b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
77b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
78b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
79b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * Destructor
80b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
8150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @stable ICU 4.2
82b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
83b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    virtual ~CurrencyPluralInfo();
84b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
85b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
86b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
87b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * Equal operator.
88b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
8950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @stable ICU 4.2
90b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
91b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    UBool operator==(const CurrencyPluralInfo& info) const;
92b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
93b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
94b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
95b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * Not equal operator
96b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
9750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @stable ICU 4.2
98b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
99b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    UBool operator!=(const CurrencyPluralInfo& info) const;
100b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
101b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
102b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
103b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * Clone
104b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
10550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @stable ICU 4.2
106b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
107b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    CurrencyPluralInfo* clone() const;
108b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
109b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
110b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
111b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * Gets plural rules of this locale, used for currency plural format
112b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
113b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @return plural rule
11450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @stable ICU 4.2
115b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
116b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    const PluralRules* getPluralRules() const;
117b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
118b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
119b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * Given a plural count, gets currency plural pattern of this locale,
120b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * used for currency plural format
121b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
122b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @param  pluralCount currency plural count
123b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @param  result      output param to receive the pattern
124b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @return a currency plural pattern based on plural count
12550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @stable ICU 4.2
126b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
127b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    UnicodeString& getCurrencyPluralPattern(const UnicodeString& pluralCount,
128b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                                            UnicodeString& result) const;
129b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
130b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
131b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * Get locale
132b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
133b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @return locale
13450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @stable ICU 4.2
135b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
136b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    const Locale& getLocale() const;
137b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
138b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
139b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * Set plural rules.
140b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * The plural rule is set when CurrencyPluralInfo
141b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * instance is created.
142b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * You can call this method to reset plural rules only if you want
143b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * to modify the default plural rule of the locale.
144b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
145b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @param ruleDescription new plural rule description
146b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @param status output param set to success/failure code on exit
14750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @stable ICU 4.2
148b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
149b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    void setPluralRules(const UnicodeString& ruleDescription,
150b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                        UErrorCode& status);
151b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
152b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
153b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * Set currency plural pattern.
154b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * The currency plural pattern is set when CurrencyPluralInfo
155b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * instance is created.
156b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * You can call this method to reset currency plural pattern only if
157b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * you want to modify the default currency plural pattern of the locale.
158b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
159b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @param pluralCount the plural count for which the currency pattern will
160b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *                    be overridden.
161b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @param pattern     the new currency plural pattern
162b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @param status      output param set to success/failure code on exit
16350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @stable ICU 4.2
164b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
165b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    void setCurrencyPluralPattern(const UnicodeString& pluralCount,
166b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                                  const UnicodeString& pattern,
167b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                                  UErrorCode& status);
168b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
169b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
170b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * Set locale
171b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
172b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @param loc     the new locale to set
173b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @param status  output param set to success/failure code on exit
17450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @stable ICU 4.2
175b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
176b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    void setLocale(const Locale& loc, UErrorCode& status);
177b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
178b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
179b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * ICU "poor man's RTTI", returns a UClassID for the actual class.
180b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
18150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @stable ICU 4.2
182b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
183b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    virtual UClassID getDynamicClassID() const;
184b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
185b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
186b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * ICU "poor man's RTTI", returns a UClassID for this class.
187b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
18850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @stable ICU 4.2
189b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
190b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    static UClassID U_EXPORT2 getStaticClassID();
191b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
192b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruprivate:
193b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    friend class DecimalFormat;
194b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
195b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    void initialize(const Locale& loc, UErrorCode& status);
196b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
197b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    void setupCurrencyPluralPattern(const Locale& loc, UErrorCode& status);
198b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
199b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /*
200b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * delete hash table
201b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
202b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @param hTable  hash table to be deleted
203b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
204b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    void deleteHash(Hashtable* hTable);
205b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
206b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
207b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /*
208b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * initialize hash table
209b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
210b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @param status   output param set to success/failure code on exit
211b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @return         hash table initialized
212b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
213b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    Hashtable* initHash(UErrorCode& status);
214b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
215b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
216b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
217b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /**
218b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * copy hash table
219b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     *
220b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @param source   the source to copy from
221b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * @param target   the target to copy to
222b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho     * @param status   error code
223b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
224b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    void copyHash(const Hashtable* source, Hashtable* target, UErrorCode& status);
225b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
226b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    //-------------------- private data member ---------------------
227b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    // map from plural count to currency plural pattern, for example
228b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    // a plural pattern defined in "CurrencyUnitPatterns" is
229b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    // "one{{0} {1}}", in which "one" is a plural count
230b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    // and "{0} {1}" is a currency plural pattern".
231b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    // The currency plural pattern saved in this mapping is the pattern
232b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    // defined in "CurrencyUnitPattern" by replacing
233b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    // {0} with the number format pattern,
234b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    // and {1} with 3 currency sign.
235b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    Hashtable* fPluralCountToCurrencyUnitPattern;
236b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
237b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    /*
238b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * The plural rule is used to format currency plural name,
239b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * for example: "3.00 US Dollars".
240b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * If there are 3 currency signs in the currency patttern,
241b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     * the 3 currency signs will be replaced by currency plural name.
242b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru     */
243b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    PluralRules* fPluralRules;
244b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
245b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    // locale
246b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    Locale* fLocale;
247b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru};
248b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
249b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
250b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruinline UBool
251b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruCurrencyPluralInfo::operator!=(const CurrencyPluralInfo& info) const {              return !operator==(info);                                                   }
252b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
253b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruU_NAMESPACE_END
254b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
255b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */
256b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
257b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#endif // _CURRPINFO
258b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru//eof
259