1 // © 2016 and later: Unicode, Inc. and others. 2 // License & terms of use: http://www.unicode.org/copyright.html 3 /* 4 ********************************************************************** 5 * Copyright (c) 2002-2016, International Business Machines 6 * Corporation and others. All Rights Reserved. 7 ********************************************************************** 8 */ 9 10 #ifndef _UCURR_IMP_H_ 11 #define _UCURR_IMP_H_ 12 13 #include "unicode/utypes.h" 14 #include "unicode/unistr.h" 15 #include "unicode/parsepos.h" 16 #include "unicode/uniset.h" 17 18 /** 19 * Internal method. Given a currency ISO code and a locale, return 20 * the "static" currency name. This is usually the same as the 21 * UCURR_SYMBOL_NAME, but if the latter is a choice format, then the 22 * format is applied to the number 2.0 (to yield the more common 23 * plural) to return a static name. 24 * 25 * This is used for backward compatibility with old currency logic in 26 * DecimalFormat and DecimalFormatSymbols. 27 */ 28 U_CAPI void 29 uprv_getStaticCurrencyName(const UChar* iso, const char* loc, 30 icu::UnicodeString& result, UErrorCode& ec); 31 32 /** 33 * Attempt to parse the given string as a currency, either as a 34 * display name in the given locale, or as a 3-letter ISO 4217 35 * code. If multiple display names match, then the longest one is 36 * selected. If both a display name and a 3-letter ISO code 37 * match, then the display name is preferred, unless it's length 38 * is less than 3. 39 * 40 * The parameters must not be NULL. 41 * 42 * @param locale the locale of the display names to match 43 * @param text the text to parse 44 * @param pos input-output position; on input, the position within 45 * text to match; must have 0 <= pos.getIndex() < text.length(); 46 * on output, the position after the last matched character. If 47 * the parse fails, the position in unchanged upon output. 48 * @param type currency type to parse against, LONG_NAME only or not 49 * @param partialMatchLen The length of the longest matching prefix; 50 * this may be nonzero even if no full currency was matched. 51 * @return the ISO 4217 code, as a string, of the best match, or 52 * null if there is no match 53 * 54 * @internal 55 */ 56 U_CAPI void 57 uprv_parseCurrency(const char* locale, 58 const icu::UnicodeString& text, 59 icu::ParsePosition& pos, 60 int8_t type, 61 int32_t* partialMatchLen, 62 UChar* result, 63 UErrorCode& ec); 64 65 /** 66 * Puts all possible first-characters of a currency into the 67 * specified UnicodeSet. 68 * 69 * @param locale the locale of the display names of interest 70 * @param result the UnicodeSet to which to add the starting characters 71 */ 72 void uprv_currencyLeads(const char* locale, icu::UnicodeSet& result, UErrorCode& ec); 73 74 75 76 #endif /* #ifndef _UCURR_IMP_H_ */ 77 78 //eof 79