xref: /aosp_15_r20/external/icu/libicu/cts_headers/number_currencysymbols.h (revision 0e209d3975ff4a8c132096b14b0e9364a753506e)
1*0e209d39SAndroid Build Coastguard Worker // © 2018 and later: Unicode, Inc. and others.
2*0e209d39SAndroid Build Coastguard Worker // License & terms of use: http://www.unicode.org/copyright.html
3*0e209d39SAndroid Build Coastguard Worker 
4*0e209d39SAndroid Build Coastguard Worker #include "unicode/utypes.h"
5*0e209d39SAndroid Build Coastguard Worker 
6*0e209d39SAndroid Build Coastguard Worker #if !UCONFIG_NO_FORMATTING
7*0e209d39SAndroid Build Coastguard Worker #ifndef __SOURCE_NUMBER_CURRENCYSYMBOLS_H__
8*0e209d39SAndroid Build Coastguard Worker #define __SOURCE_NUMBER_CURRENCYSYMBOLS_H__
9*0e209d39SAndroid Build Coastguard Worker 
10*0e209d39SAndroid Build Coastguard Worker #include "numparse_types.h"
11*0e209d39SAndroid Build Coastguard Worker #include "charstr.h"
12*0e209d39SAndroid Build Coastguard Worker #include "number_decimfmtprops.h"
13*0e209d39SAndroid Build Coastguard Worker 
14*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_BEGIN
15*0e209d39SAndroid Build Coastguard Worker namespace number::impl {
16*0e209d39SAndroid Build Coastguard Worker 
17*0e209d39SAndroid Build Coastguard Worker // Exported as U_I18N_API for tests
18*0e209d39SAndroid Build Coastguard Worker class U_I18N_API CurrencySymbols : public UMemory {
19*0e209d39SAndroid Build Coastguard Worker   public:
20*0e209d39SAndroid Build Coastguard Worker     CurrencySymbols() = default; // default constructor: leaves class in valid but undefined state
21*0e209d39SAndroid Build Coastguard Worker 
22*0e209d39SAndroid Build Coastguard Worker     /** Creates an instance in which all symbols are loaded from data. */
23*0e209d39SAndroid Build Coastguard Worker     CurrencySymbols(CurrencyUnit currency, const Locale& locale, UErrorCode& status);
24*0e209d39SAndroid Build Coastguard Worker 
25*0e209d39SAndroid Build Coastguard Worker     /** Creates an instance in which some symbols might be pre-populated. */
26*0e209d39SAndroid Build Coastguard Worker     CurrencySymbols(CurrencyUnit currency, const Locale& locale, const DecimalFormatSymbols& symbols,
27*0e209d39SAndroid Build Coastguard Worker                     UErrorCode& status);
28*0e209d39SAndroid Build Coastguard Worker 
29*0e209d39SAndroid Build Coastguard Worker     const char16_t* getIsoCode() const;
30*0e209d39SAndroid Build Coastguard Worker 
31*0e209d39SAndroid Build Coastguard Worker     UnicodeString getNarrowCurrencySymbol(UErrorCode& status) const;
32*0e209d39SAndroid Build Coastguard Worker 
33*0e209d39SAndroid Build Coastguard Worker     UnicodeString getFormalCurrencySymbol(UErrorCode& status) const;
34*0e209d39SAndroid Build Coastguard Worker 
35*0e209d39SAndroid Build Coastguard Worker     UnicodeString getVariantCurrencySymbol(UErrorCode& status) const;
36*0e209d39SAndroid Build Coastguard Worker 
37*0e209d39SAndroid Build Coastguard Worker     UnicodeString getCurrencySymbol(UErrorCode& status) const;
38*0e209d39SAndroid Build Coastguard Worker 
39*0e209d39SAndroid Build Coastguard Worker     UnicodeString getIntlCurrencySymbol(UErrorCode& status) const;
40*0e209d39SAndroid Build Coastguard Worker 
41*0e209d39SAndroid Build Coastguard Worker     UnicodeString getPluralName(StandardPlural::Form plural, UErrorCode& status) const;
42*0e209d39SAndroid Build Coastguard Worker 
43*0e209d39SAndroid Build Coastguard Worker     bool hasEmptyCurrencySymbol() const;
44*0e209d39SAndroid Build Coastguard Worker 
45*0e209d39SAndroid Build Coastguard Worker   protected:
46*0e209d39SAndroid Build Coastguard Worker     // Required fields:
47*0e209d39SAndroid Build Coastguard Worker     CurrencyUnit fCurrency;
48*0e209d39SAndroid Build Coastguard Worker     CharString fLocaleName;
49*0e209d39SAndroid Build Coastguard Worker 
50*0e209d39SAndroid Build Coastguard Worker     // Optional fields:
51*0e209d39SAndroid Build Coastguard Worker     UnicodeString fCurrencySymbol;
52*0e209d39SAndroid Build Coastguard Worker     UnicodeString fIntlCurrencySymbol;
53*0e209d39SAndroid Build Coastguard Worker 
54*0e209d39SAndroid Build Coastguard Worker     UnicodeString loadSymbol(UCurrNameStyle selector, UErrorCode& status) const;
55*0e209d39SAndroid Build Coastguard Worker };
56*0e209d39SAndroid Build Coastguard Worker 
57*0e209d39SAndroid Build Coastguard Worker 
58*0e209d39SAndroid Build Coastguard Worker /**
59*0e209d39SAndroid Build Coastguard Worker  * Resolves the effective currency from the property bag.
60*0e209d39SAndroid Build Coastguard Worker  */
61*0e209d39SAndroid Build Coastguard Worker CurrencyUnit
62*0e209d39SAndroid Build Coastguard Worker resolveCurrency(const DecimalFormatProperties& properties, const Locale& locale, UErrorCode& status);
63*0e209d39SAndroid Build Coastguard Worker 
64*0e209d39SAndroid Build Coastguard Worker } // namespace number::impl
65*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_END
66*0e209d39SAndroid Build Coastguard Worker 
67*0e209d39SAndroid Build Coastguard Worker #endif //__SOURCE_NUMBER_CURRENCYSYMBOLS_H__
68*0e209d39SAndroid Build Coastguard Worker #endif /* #if !UCONFIG_NO_FORMATTING */
69