16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org********************************************************************** 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (c) 2002-2013, International Business Machines 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Corporation and others. All Rights Reserved. 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org********************************************************************** 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef _UCURR_H_ 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define _UCURR_H_ 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/uenum.h" 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \file 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \brief C API: Encapsulates information about a currency. 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_FORMATTING 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The ucurr API encapsulates information about a currency, as defined by 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * ISO 4217. A currency is represented by a 3-character string 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * containing its ISO 4217 code. This API can return various data 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * necessary the proper display of a currency: 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <ul><li>A display symbol, for a specific locale 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <li>The number of fraction digits to display 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <li>A rounding increment 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * </ul> 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The <tt>DecimalFormat</tt> class uses these data to display 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * currencies. 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @author Alan Liu 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @since ICU 2.2 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Finds a currency code for the given locale. 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale the locale for which to retrieve a currency code. 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Currency can be specified by the "currency" keyword 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * in which case it overrides the default currency code 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param buff fill in buffer. Can be NULL for preflighting. 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param buffCapacity capacity of the fill in buffer. Can be 0 for 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * preflighting. If it is non-zero, the buff parameter 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * must not be NULL. 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ec error code 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return length of the currency string. It should always be 3. If 0, 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * currency couldn't be found or the input values are 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * invalid. 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.8 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgucurr_forLocale(const char* locale, 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar* buff, 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t buffCapacity, 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* ec); 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Selector constants for ucurr_getName(). 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see ucurr_getName 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.6 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef enum UCurrNameStyle { 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Selector for ucurr_getName indicating a symbolic name for a 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * currency, such as "$" for USD. 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.6 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UCURR_SYMBOL_NAME, 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Selector for ucurr_getName indicating the long name for a 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * currency, such as "US Dollar" for USD. 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.6 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UCURR_LONG_NAME 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} UCurrNameStyle; 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_SERVICE 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.6 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef const void* UCurrRegistryKey; 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Register an (existing) ISO 4217 currency code for the given locale. 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Only the country code and the two variants EURO and PRE_EURO are 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * recognized. 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param isoCode the three-letter ISO 4217 currency code 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale the locale for which to register this currency code 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status the in/out status code 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return a registry key that can be used to unregister this currency code, or NULL 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * if there was an error. 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.6 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE UCurrRegistryKey U_EXPORT2 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgucurr_register(const UChar* isoCode, 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* locale, 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Unregister the previously-registered currency definitions using the 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * URegistryKey returned from ucurr_register. Key becomes invalid after 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * a successful call and should not be used again. Any currency 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * that might have been hidden by the original ucurr_register call is 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * restored. 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param key the registry key returned by a previous call to ucurr_register 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status the in/out status code, no special meanings are assigned 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return TRUE if the currency for this key was successfully unregistered 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.6 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE UBool U_EXPORT2 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgucurr_unregister(UCurrRegistryKey key, UErrorCode* status); 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* UCONFIG_NO_SERVICE */ 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns the display name for the given currency in the 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * given locale. For example, the display name for the USD 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * currency object in the en_US locale is "$". 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param currency null-terminated 3-letter ISO 4217 code 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale locale in which to display currency 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param nameStyle selector for which kind of name to return 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param isChoiceFormat fill-in set to TRUE if the returned value 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * is a ChoiceFormat pattern; otherwise it is a static string 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param len fill-in parameter to receive length of result 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ec error code 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return pointer to display string of 'len' UChars. If the resource 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * data contains no entry for 'currency', then 'currency' itself is 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * returned. If *isChoiceFormat is TRUE, then the result is a 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * ChoiceFormat pattern. Otherwise it is a static string. 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.6 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE const UChar* U_EXPORT2 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgucurr_getName(const UChar* currency, 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* locale, 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UCurrNameStyle nameStyle, 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool* isChoiceFormat, 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t* len, 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* ec); 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns the plural name for the given currency in the 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * given locale. For example, the plural name for the USD 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * currency object in the en_US locale is "US dollar" or "US dollars". 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param currency null-terminated 3-letter ISO 4217 code 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale locale in which to display currency 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param isChoiceFormat fill-in set to TRUE if the returned value 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * is a ChoiceFormat pattern; otherwise it is a static string 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pluralCount plural count 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param len fill-in parameter to receive length of result 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ec error code 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return pointer to display string of 'len' UChars. If the resource 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * data contains no entry for 'currency', then 'currency' itself is 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * returned. 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.2 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE const UChar* U_EXPORT2 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgucurr_getPluralName(const UChar* currency, 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* locale, 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool* isChoiceFormat, 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* pluralCount, 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t* len, 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* ec); 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns the number of the number of fraction digits that should 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * be displayed for the given currency. 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param currency null-terminated 3-letter ISO 4217 code 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ec input-output error code 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return a non-negative number of fraction digits to be 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * displayed, or 0 if there is an error 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.0 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgucurr_getDefaultFractionDigits(const UChar* currency, 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* ec); 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns the rounding increment for the given currency, or 0.0 if no 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * rounding is done by the currency. 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param currency null-terminated 3-letter ISO 4217 code 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ec input-output error code 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return the non-negative rounding increment, or 0.0 if none, 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * or 0.0 if there is an error 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.0 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE double U_EXPORT2 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgucurr_getRoundingIncrement(const UChar* currency, 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* ec); 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Selector constants for ucurr_openCurrencies(). 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see ucurr_openCurrencies 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.2 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef enum UCurrCurrencyType { 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Select all ISO-4217 currency codes. 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.2 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UCURR_ALL = INT32_MAX, 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Select only ISO-4217 commonly used currency codes. 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * These currencies can be found in common use, and they usually have 2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * bank notes or coins associated with the currency code. 2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This does not include fund codes, precious metals and other 2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * various ISO-4217 codes limited to special financial products. 2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.2 2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UCURR_COMMON = 1, 2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Select ISO-4217 uncommon currency codes. 2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * These codes respresent fund codes, precious metals and other 2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * various ISO-4217 codes limited to special financial products. 2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * A fund code is a monetary resource associated with a currency. 2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.2 2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UCURR_UNCOMMON = 2, 2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Select only deprecated ISO-4217 codes. 2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * These codes are no longer in general public use. 2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.2 2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UCURR_DEPRECATED = 4, 2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Select only non-deprecated ISO-4217 codes. 2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * These codes are in general public use. 2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.2 2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UCURR_NON_DEPRECATED = 8 2326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} UCurrCurrencyType; 2336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 2356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Provides a UEnumeration object for listing ISO-4217 codes. 2366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param currType You can use one of several UCurrCurrencyType values for this 2376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * variable. You can also | (or) them together to get a specific list of 2386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * currencies. Most people will want to use the (UCURR_CURRENCY|UCURR_NON_DEPRECATED) value to 2396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * get a list of current currencies. 2406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pErrorCode Error code 2416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.2 2426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE UEnumeration * U_EXPORT2 2446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgucurr_openISOCurrencies(uint32_t currType, UErrorCode *pErrorCode); 2456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 2476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Queries if the given ISO 4217 3-letter code is available on the specified date range. 2486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Note: For checking availability of a currency on a specific date, specify the date on both 'from' and 'to' 2506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * When 'from' is U_DATE_MIN and 'to' is U_DATE_MAX, this method checks if the specified currency is available any time. 2526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * If 'from' and 'to' are same UDate value, this method checks if the specified currency is available on that date. 2536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param isoCode 2556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The ISO 4217 3-letter code. 2566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param from 2586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The lower bound of the date range, inclusive. When 'from' is U_DATE_MIN, check the availability 2596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * of the currency any date before 'to' 2606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param to 2626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The upper bound of the date range, inclusive. When 'to' is U_DATE_MAX, check the availability of 2636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the currency any date after 'from' 2646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param errorCode 2666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * ICU error code 2676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return TRUE if the given ISO 4217 3-letter code is supported on the specified date range. 2696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.8 2716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE UBool U_EXPORT2 2736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgucurr_isAvailable(const UChar* isoCode, 2746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UDate from, 2756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UDate to, 2766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* errorCode); 2776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 2796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Finds the number of valid currency codes for the 2806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * given locale and date. 2816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale the locale for which to retrieve the 2826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * currency count. 2836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param date the date for which to retrieve the 2846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * currency count for the given locale. 2856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ec error code 2866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return the number of currency codes for the 2876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * given locale and date. If 0, currency 2886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * codes couldn't be found for the input 2896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * values are invalid. 2906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.0 2916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 2936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgucurr_countCurrencies(const char* locale, 2946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UDate date, 2956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* ec); 2966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 2986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Finds a currency code for the given locale and date 2996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale the locale for which to retrieve a currency code. 3006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Currency can be specified by the "currency" keyword 3016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * in which case it overrides the default currency code 3026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param date the date for which to retrieve a currency code for 3036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the given locale. 3046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param index the index within the available list of currency codes 3056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * for the given locale on the given date. 3066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param buff fill in buffer. Can be NULL for preflighting. 3076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param buffCapacity capacity of the fill in buffer. Can be 0 for 3086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * preflighting. If it is non-zero, the buff parameter 3096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * must not be NULL. 3106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ec error code 3116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return length of the currency string. It should always be 3. 3126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * If 0, currency couldn't be found or the input values are 3136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * invalid. 3146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.0 3156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 3176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgucurr_forLocaleAndDate(const char* locale, 3186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UDate date, 3196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t index, 3206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar* buff, 3216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t buffCapacity, 3226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* ec); 3236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 3256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Given a key and a locale, returns an array of string values in a preferred 3266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * order that would make a difference. These are all and only those values where 3276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the open (creation) of the service with the locale formed from the input locale 3286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * plus input keyword and that value has different behavior than creation with the 3296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * input locale alone. 3306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param key one of the keys supported by this service. For now, only 3316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * "currency" is supported. 3326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale the locale 3336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param commonlyUsed if set to true it will return only commonly used values 3346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * with the given locale in preferred order. Otherwise, 3356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * it will return all the available values for the locale. 3366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status error status 3376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return a string enumeration over keyword values for the given key and the locale. 3386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.2 3396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE UEnumeration* U_EXPORT2 3416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgucurr_getKeywordValuesForLocale(const char* key, 3426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* locale, 3436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool commonlyUsed, 3446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 3456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 3476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns the ISO 4217 numeric code for the currency. 3486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p>Note: If the ISO 4217 numeric code is not assigned for the currency or 3496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the currency is unknown, this function returns 0. 3506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 3516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param currency null-terminated 3-letter ISO 4217 code 3526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The ISO 4217 numeric code of the currency 3536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 49 3546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 3566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgucurr_getNumericCode(const UChar* currency); 3576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* #if !UCONFIG_NO_FORMATTING */ 3596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 361