Home | History | Annotate | Download | only in common
      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