16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (C) 1997-2013, International Business Machines Corporation and others. 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* All Rights Reserved. 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Modification History: 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Date Name Description 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 06/24/99 helena Integrated Alan's NF enhancements and Java2 bug fixes 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef _UNUM 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define _UNUM 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_FORMATTING 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/localpointer.h" 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/uloc.h" 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/umisc.h" 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/parseerr.h" 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/uformattable.h" 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \file 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \brief C API: NumberFormat 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <h2> Number Format C API </h2> 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Number Format C API Provides functions for 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * formatting and parsing a number. Also provides methods for 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * determining which locales have number formats, and what their names 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * are. 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <P> 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UNumberFormat helps you to format and parse numbers for any locale. 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Your code can be completely independent of the locale conventions 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * for decimal points, thousands-separators, or even the particular 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * decimal digits used, or whether the number format is even decimal. 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * There are different number format styles like decimal, currency, 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * percent and spellout. 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <P> 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * To format a number for the current Locale, use one of the static 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * factory methods: 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <pre> 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \code 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UChar myString[20]; 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * double myNumber = 7.0; 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UErrorCode status = U_ZERO_ERROR; 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UNumberFormat* nf = unum_open(UNUM_DEFAULT, NULL, -1, NULL, NULL, &status); 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * unum_formatDouble(nf, myNumber, myString, 20, NULL, &status); 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * printf(" Example 1: %s\n", austrdup(myString) ); //austrdup( a function used to convert UChar* to char*) 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \endcode 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * </pre> 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * If you are formatting multiple numbers, it is more efficient to get 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the format and use it multiple times so that the system doesn't 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * have to fetch the information about the local language and country 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * conventions multiple times. 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <pre> 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \code 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * uint32_t i, resultlength, reslenneeded; 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UErrorCode status = U_ZERO_ERROR; 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UFieldPosition pos; 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * uint32_t a[] = { 123, 3333, -1234567 }; 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * const uint32_t a_len = sizeof(a) / sizeof(a[0]); 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UNumberFormat* nf; 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UChar* result = NULL; 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * nf = unum_open(UNUM_DEFAULT, NULL, -1, NULL, NULL, &status); 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * for (i = 0; i < a_len; i++) { 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * resultlength=0; 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * reslenneeded=unum_format(nf, a[i], NULL, resultlength, &pos, &status); 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * result = NULL; 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * if(status==U_BUFFER_OVERFLOW_ERROR){ 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * status=U_ZERO_ERROR; 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * resultlength=reslenneeded+1; 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * result=(UChar*)malloc(sizeof(UChar) * resultlength); 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * unum_format(nf, a[i], result, resultlength, &pos, &status); 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * } 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * printf( " Example 2: %s\n", austrdup(result)); 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * free(result); 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * } 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \endcode 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * </pre> 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * To format a number for a different Locale, specify it in the 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * call to unum_open(). 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <pre> 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \code 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UNumberFormat* nf = unum_open(UNUM_DEFAULT, NULL, -1, "fr_FR", NULL, &success) 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \endcode 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * </pre> 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * You can use a NumberFormat API unum_parse() to parse. 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <pre> 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \code 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UErrorCode status = U_ZERO_ERROR; 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * int32_t pos=0; 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * int32_t num; 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * num = unum_parse(nf, str, u_strlen(str), &pos, &status); 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \endcode 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * </pre> 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Use UNUM_DECIMAL to get the normal number format for that country. 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * There are other static options available. Use UNUM_CURRENCY 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * to get the currency number format for that country. Use UNUM_PERCENT 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * to get a format for displaying percentages. With this format, a 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * fraction from 0.53 is displayed as 53%. 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <P> 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Use a pattern to create either a DecimalFormat or a RuleBasedNumberFormat 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * formatter. The pattern must conform to the syntax defined for those 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * formatters. 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <P> 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * You can also control the display of numbers with such function as 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * unum_getAttributes() and unum_setAttributes(), which let you set the 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * miminum fraction digits, grouping, etc. 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see UNumberFormatAttributes for more details 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <P> 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * You can also use forms of the parse and format methods with 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * ParsePosition and UFieldPosition to allow you to: 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <ul type=round> 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <li>(a) progressively parse through pieces of a string. 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <li>(b) align the decimal point and other areas. 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * </ul> 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * It is also possible to change or set the symbols used for a particular 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * locale like the currency symbol, the grouping seperator , monetary seperator 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * etc by making use of functions unum_setSymbols() and unum_getSymbols(). 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** A number formatter. 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For usage in C programs. 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef void* UNumberFormat; 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** The possible number format styles. 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef enum UNumberFormatStyle { 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Decimal format defined by a pattern string. 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.0 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PATTERN_DECIMAL=0, 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Decimal format ("normal" style). 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_DECIMAL=1, 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Currency format with a currency symbol, e.g., "$1.00". 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_CURRENCY, 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Percent format 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PERCENT, 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Scientific format 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.1 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_SCIENTIFIC, 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Spellout rule-based format 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_SPELLOUT, 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Ordinal rule-based format 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.0 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_ORDINAL, 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Duration rule-based format 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.0 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_DURATION, 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Numbering system rule-based format 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.2 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_NUMBERING_SYSTEM, 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Rule-based format defined by a pattern string. 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.0 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PATTERN_RULEBASED, 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Currency format with an ISO currency code, e.g., "USD1.00". 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.8 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_CURRENCY_ISO, 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Currency format with a pluralized currency name, 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * e.g., "1.00 US dollar" and "3.00 US dollars". 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.8 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_CURRENCY_PLURAL, 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * One more than the highest number format style constant. 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.8 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_FORMAT_STYLE_COUNT, 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Default format 2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_DEFAULT = UNUM_DECIMAL, 2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Alias for UNUM_PATTERN_DECIMAL 2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.0 2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_IGNORE = UNUM_PATTERN_DECIMAL 2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} UNumberFormatStyle; 2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** The possible number format rounding modes. 2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef enum UNumberFormatRoundingMode { 2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_ROUND_CEILING, 2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_ROUND_FLOOR, 2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_ROUND_DOWN, 2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_ROUND_UP, 2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Half-even rounding 2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable, ICU 3.8 2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_ROUND_HALFEVEN, 2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef U_HIDE_DEPRECATED_API 2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Half-even rounding, misspelled name 2326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @deprecated, ICU 3.8 2336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_FOUND_HALFEVEN = UNUM_ROUND_HALFEVEN, 2356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* U_HIDE_DEPRECATED_API */ 2366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_ROUND_HALFDOWN = UNUM_ROUND_HALFEVEN + 1, 2376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_ROUND_HALFUP, 2386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * ROUND_UNNECESSARY reports an error if formatted result is not exact. 2406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.8 2416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_ROUND_UNNECESSARY 2436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} UNumberFormatRoundingMode; 2446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** The possible number format pad positions. 2466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef enum UNumberFormatPadPosition { 2496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PAD_BEFORE_PREFIX, 2506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PAD_AFTER_PREFIX, 2516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PAD_BEFORE_SUFFIX, 2526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PAD_AFTER_SUFFIX 2536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} UNumberFormatPadPosition; 2546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef U_HIDE_DRAFT_API 2566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 2576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constants for specifying short or long format. 2586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @draft ICU 51 2596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef enum UNumberCompactStyle { 2616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @draft ICU 51 */ 2626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_SHORT, 2636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @draft ICU 51 */ 2646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_LONG 2656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @draft ICU 51 */ 2666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} UNumberCompactStyle; 2676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* U_HIDE_DRAFT_API */ 2686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 2706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constants for specifying currency spacing 2716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.8 2726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgenum UCurrencySpacing { 2746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @stable ICU 4.8 */ 2756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_CURRENCY_MATCH, 2766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @stable ICU 4.8 */ 2776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_CURRENCY_SURROUNDING_MATCH, 2786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @stable ICU 4.8 */ 2796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_CURRENCY_INSERT, 2806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @stable ICU 4.8 */ 2816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_CURRENCY_SPACING_COUNT 2826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 2836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef enum UCurrencySpacing UCurrencySpacing; /**< @stable ICU 4.8 */ 2846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 2876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * FieldPosition and UFieldPosition selectors for format fields 2886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * defined by NumberFormat and UNumberFormat. 2896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 49 2906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef enum UNumberFormatFields { 2926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @stable ICU 49 */ 2936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_INTEGER_FIELD, 2946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @stable ICU 49 */ 2956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_FRACTION_FIELD, 2966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @stable ICU 49 */ 2976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_DECIMAL_SEPARATOR_FIELD, 2986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @stable ICU 49 */ 2996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_EXPONENT_SYMBOL_FIELD, 3006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @stable ICU 49 */ 3016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_EXPONENT_SIGN_FIELD, 3026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @stable ICU 49 */ 3036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_EXPONENT_FIELD, 3046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @stable ICU 49 */ 3056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_GROUPING_SEPARATOR_FIELD, 3066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @stable ICU 49 */ 3076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_CURRENCY_FIELD, 3086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @stable ICU 49 */ 3096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PERCENT_FIELD, 3106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @stable ICU 49 */ 3116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PERMILL_FIELD, 3126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @stable ICU 49 */ 3136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_SIGN_FIELD, 3146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @stable ICU 49 */ 3156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_FIELD_COUNT 3166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} UNumberFormatFields; 3176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 3206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Create and return a new UNumberFormat for formatting and parsing 3216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * numbers. A UNumberFormat may be used to format numbers by calling 3226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * {@link #unum_format }, and to parse numbers by calling {@link #unum_parse }. 3236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The caller must call {@link #unum_close } when done to release resources 3246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * used by this object. 3256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param style The type of number format to open: one of 3266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UNUM_DECIMAL, UNUM_CURRENCY, UNUM_PERCENT, UNUM_SCIENTIFIC, UNUM_SPELLOUT, 3276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UNUM_PATTERN_DECIMAL, UNUM_PATTERN_RULEBASED, or UNUM_DEFAULT. 3286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * If UNUM_PATTERN_DECIMAL or UNUM_PATTERN_RULEBASED is passed then the 3296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * number format is opened using the given pattern, which must conform 3306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * to the syntax described in DecimalFormat or RuleBasedNumberFormat, 3316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * respectively. 3326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pattern A pattern specifying the format to use. 3336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This parameter is ignored unless the style is 3346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UNUM_PATTERN_DECIMAL or UNUM_PATTERN_RULEBASED. 3356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param patternLength The number of characters in the pattern, or -1 3366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * if null-terminated. This parameter is ignored unless the style is 3376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UNUM_PATTERN. 3386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale A locale identifier to use to determine formatting 3396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * and parsing conventions, or NULL to use the default locale. 3406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param parseErr A pointer to a UParseError struct to receive the 3416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * details of any parsing errors, or NULL if no parsing error details 3426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * are desired. 3436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an input-output UErrorCode. 3446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return A pointer to a newly created UNumberFormat, or NULL if an 3456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * error occurred. 3466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see unum_close 3476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see DecimalFormat 3486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 3496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE UNumberFormat* U_EXPORT2 3516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_open( UNumberFormatStyle style, 3526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar* pattern, 3536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t patternLength, 3546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* locale, 3556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UParseError* parseErr, 3566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 3576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 3606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Close a UNumberFormat. 3616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Once closed, a UNumberFormat may no longer be used. 3626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to close. 3636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.0 3646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 3656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 3666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_close(UNumberFormat* fmt); 3676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if U_SHOW_CPLUSPLUS_API 3696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_BEGIN 3716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 3736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \class LocalUNumberFormatPointer 3746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * "Smart pointer" class, closes a UNumberFormat via unum_close(). 3756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For most methods see the LocalPointerBase base class. 3766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 3776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see LocalPointerBase 3786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see LocalPointer 3796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.4 3806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_DEFINE_LOCAL_OPEN_POINTER(LocalUNumberFormatPointer, UNumberFormat, unum_close); 3826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_END 3846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 3866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 3886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Open a copy of a UNumberFormat. 3896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This function performs a deep copy. 3906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fmt The format to copy 3916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an UErrorCode to receive any errors. 3926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return A pointer to a UNumberFormat identical to fmt. 3936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 3946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE UNumberFormat* U_EXPORT2 3966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_clone(const UNumberFormat *fmt, 3976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 3986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 4006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Format an integer using a UNumberFormat. 4016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* The integer will be formatted according to the UNumberFormat's locale. 4026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to use. 4036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param number The number to format. 4046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param result A pointer to a buffer to receive the NULL-terminated formatted number. If 4056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* the formatted number fits into dest but cannot be NULL-terminated (length == resultLength) 4066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* then the error code is set to U_STRING_NOT_TERMINATED_WARNING. If the formatted number 4076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* doesn't fit into result then the error code is set to U_BUFFER_OVERFLOW_ERROR. 4086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param resultLength The maximum size of result. 4096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param pos A pointer to a UFieldPosition. On input, position->field 4106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* is read. On output, position->beginIndex and position->endIndex indicate 4116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* the beginning and ending indices of field number position->field, if such 4126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* a field exists. This parameter may be NULL, in which case no field 4136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param status A pointer to an UErrorCode to receive any errors 4146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @return The total buffer size needed; if greater than resultLength, the output was truncated. 4156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_formatInt64 4166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_formatDouble 4176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parse 4186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parseInt64 4196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parseDouble 4206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see UFieldPosition 4216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.0 4226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 4236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 4246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_format( const UNumberFormat* fmt, 4256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t number, 4266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar* result, 4276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLength, 4286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UFieldPosition *pos, 4296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 4306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 4326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Format an int64 using a UNumberFormat. 4336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* The int64 will be formatted according to the UNumberFormat's locale. 4346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to use. 4356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param number The number to format. 4366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param result A pointer to a buffer to receive the NULL-terminated formatted number. If 4376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* the formatted number fits into dest but cannot be NULL-terminated (length == resultLength) 4386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* then the error code is set to U_STRING_NOT_TERMINATED_WARNING. If the formatted number 4396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* doesn't fit into result then the error code is set to U_BUFFER_OVERFLOW_ERROR. 4406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param resultLength The maximum size of result. 4416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param pos A pointer to a UFieldPosition. On input, position->field 4426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* is read. On output, position->beginIndex and position->endIndex indicate 4436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* the beginning and ending indices of field number position->field, if such 4446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* a field exists. This parameter may be NULL, in which case no field 4456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param status A pointer to an UErrorCode to receive any errors 4466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @return The total buffer size needed; if greater than resultLength, the output was truncated. 4476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_format 4486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_formatDouble 4496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parse 4506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parseInt64 4516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parseDouble 4526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see UFieldPosition 4536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.0 4546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 4556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 4566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_formatInt64(const UNumberFormat *fmt, 4576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int64_t number, 4586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar* result, 4596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLength, 4606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UFieldPosition *pos, 4616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 4626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 4646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Format a double using a UNumberFormat. 4656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* The double will be formatted according to the UNumberFormat's locale. 4666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to use. 4676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param number The number to format. 4686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param result A pointer to a buffer to receive the NULL-terminated formatted number. If 4696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* the formatted number fits into dest but cannot be NULL-terminated (length == resultLength) 4706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* then the error code is set to U_STRING_NOT_TERMINATED_WARNING. If the formatted number 4716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* doesn't fit into result then the error code is set to U_BUFFER_OVERFLOW_ERROR. 4726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param resultLength The maximum size of result. 4736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param pos A pointer to a UFieldPosition. On input, position->field 4746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* is read. On output, position->beginIndex and position->endIndex indicate 4756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* the beginning and ending indices of field number position->field, if such 4766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* a field exists. This parameter may be NULL, in which case no field 4776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param status A pointer to an UErrorCode to receive any errors 4786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @return The total buffer size needed; if greater than resultLength, the output was truncated. 4796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_format 4806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_formatInt64 4816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parse 4826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parseInt64 4836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parseDouble 4846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see UFieldPosition 4856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.0 4866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 4876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 4886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_formatDouble( const UNumberFormat* fmt, 4896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org double number, 4906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar* result, 4916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLength, 4926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UFieldPosition *pos, /* 0 if ignore */ 4936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 4946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 4966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Format a decimal number using a UNumberFormat. 4976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* The number will be formatted according to the UNumberFormat's locale. 4986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* The syntax of the input number is a "numeric string" 4996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* as defined in the Decimal Arithmetic Specification, available at 5006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* http://speleotrove.com/decimal 5016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to use. 5026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param number The number to format. 5036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param length The length of the input number, or -1 if the input is nul-terminated. 5046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param result A pointer to a buffer to receive the NULL-terminated formatted number. If 5056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* the formatted number fits into dest but cannot be NULL-terminated (length == resultLength) 5066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* then the error code is set to U_STRING_NOT_TERMINATED_WARNING. If the formatted number 5076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* doesn't fit into result then the error code is set to U_BUFFER_OVERFLOW_ERROR. 5086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param resultLength The maximum size of result. 5096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param pos A pointer to a UFieldPosition. On input, position->field 5106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* is read. On output, position->beginIndex and position->endIndex indicate 5116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* the beginning and ending indices of field number position->field, if such 5126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* a field exists. This parameter may be NULL, in which case it is ignored. 5136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param status A pointer to an UErrorCode to receive any errors 5146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @return The total buffer size needed; if greater than resultLength, the output was truncated. 5156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_format 5166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_formatInt64 5176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parse 5186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parseInt64 5196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parseDouble 5206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see UFieldPosition 5216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 4.4 5226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 5236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 5246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_formatDecimal( const UNumberFormat* fmt, 5256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char * number, 5266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t length, 5276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar* result, 5286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLength, 5296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UFieldPosition *pos, /* 0 if ignore */ 5306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 5316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 5336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Format a double currency amount using a UNumberFormat. 5346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The double will be formatted according to the UNumberFormat's locale. 5356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fmt the formatter to use 5366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param number the number to format 5376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param currency the 3-letter null-terminated ISO 4217 currency code 5386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param result A pointer to a buffer to receive the NULL-terminated formatted number. If 5396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the formatted number fits into dest but cannot be NULL-terminated (length == resultLength) 5406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * then the error code is set to U_STRING_NOT_TERMINATED_WARNING. If the formatted number 5416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * doesn't fit into result then the error code is set to U_BUFFER_OVERFLOW_ERROR. 5426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param resultLength the maximum number of UChars to write to result 5436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pos a pointer to a UFieldPosition. On input, 5446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * position->field is read. On output, position->beginIndex and 5456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * position->endIndex indicate the beginning and ending indices of 5466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * field number position->field, if such a field exists. This 5476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * parameter may be NULL, in which case it is ignored. 5486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status a pointer to an input-output UErrorCode 5496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return the total buffer size needed; if greater than resultLength, 5506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the output was truncated. 5516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see unum_formatDouble 5526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see unum_parseDoubleCurrency 5536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see UFieldPosition 5546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.0 5556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 5566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 5576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_formatDoubleCurrency(const UNumberFormat* fmt, 5586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org double number, 5596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar* currency, 5606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar* result, 5616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLength, 5626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UFieldPosition* pos, 5636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 5646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef U_HIDE_DRAFT_API 5666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 5676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Format a UFormattable into a string. 5686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fmt the formatter to use 5696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param number the number to format, as a UFormattable 5706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param result A pointer to a buffer to receive the NULL-terminated formatted number. If 5716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the formatted number fits into dest but cannot be NULL-terminated (length == resultLength) 5726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * then the error code is set to U_STRING_NOT_TERMINATED_WARNING. If the formatted number 5736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * doesn't fit into result then the error code is set to U_BUFFER_OVERFLOW_ERROR. 5746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param resultLength the maximum number of UChars to write to result 5756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pos a pointer to a UFieldPosition. On input, 5766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * position->field is read. On output, position->beginIndex and 5776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * position->endIndex indicate the beginning and ending indices of 5786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * field number position->field, if such a field exists. This 5796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * parameter may be NULL, in which case it is ignored. 5806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status a pointer to an input-output UErrorCode 5816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return the total buffer size needed; if greater than resultLength, 5826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the output was truncated. Will return 0 on error. 5836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see unum_parseToUFormattable 5846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @draft ICU 52 5856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 5866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_DRAFT int32_t U_EXPORT2 5876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_formatUFormattable(const UNumberFormat* fmt, 5886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UFormattable *number, 5896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar *result, 5906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLength, 5916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UFieldPosition *pos, 5926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 5936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* U_HIDE_DRAFT_API */ 5946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 5966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Parse a string into an integer using a UNumberFormat. 5976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* The string will be parsed according to the UNumberFormat's locale. 5986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to use. 5996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param text The text to parse. 6006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param textLength The length of text, or -1 if null-terminated. 6016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param parsePos If not NULL, on input a pointer to an integer specifying the offset at which 6026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* to begin parsing. If not NULL, on output the offset at which parsing ended. 6036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param status A pointer to an UErrorCode to receive any errors 6046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @return The value of the parsed integer 6056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parseInt64 6066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parseDouble 6076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_format 6086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_formatInt64 6096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_formatDouble 6106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.0 6116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 6126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 6136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_parse( const UNumberFormat* fmt, 6146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar* text, 6156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t textLength, 6166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t *parsePos /* 0 = start */, 6176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 6186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 6206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Parse a string into an int64 using a UNumberFormat. 6216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* The string will be parsed according to the UNumberFormat's locale. 6226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to use. 6236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param text The text to parse. 6246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param textLength The length of text, or -1 if null-terminated. 6256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param parsePos If not NULL, on input a pointer to an integer specifying the offset at which 6266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* to begin parsing. If not NULL, on output the offset at which parsing ended. 6276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param status A pointer to an UErrorCode to receive any errors 6286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @return The value of the parsed integer 6296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parse 6306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parseDouble 6316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_format 6326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_formatInt64 6336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_formatDouble 6346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.8 6356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 6366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int64_t U_EXPORT2 6376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_parseInt64(const UNumberFormat* fmt, 6386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar* text, 6396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t textLength, 6406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t *parsePos /* 0 = start */, 6416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 6426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 6446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Parse a string into a double using a UNumberFormat. 6456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* The string will be parsed according to the UNumberFormat's locale. 6466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to use. 6476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param text The text to parse. 6486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param textLength The length of text, or -1 if null-terminated. 6496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param parsePos If not NULL, on input a pointer to an integer specifying the offset at which 6506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* to begin parsing. If not NULL, on output the offset at which parsing ended. 6516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param status A pointer to an UErrorCode to receive any errors 6526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @return The value of the parsed double 6536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parse 6546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parseInt64 6556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_format 6566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_formatInt64 6576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_formatDouble 6586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.0 6596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 6606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE double U_EXPORT2 6616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_parseDouble( const UNumberFormat* fmt, 6626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar* text, 6636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t textLength, 6646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t *parsePos /* 0 = start */, 6656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 6666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 6696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Parse a number from a string into an unformatted numeric string using a UNumberFormat. 6706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* The input string will be parsed according to the UNumberFormat's locale. 6716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* The syntax of the output is a "numeric string" 6726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* as defined in the Decimal Arithmetic Specification, available at 6736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* http://speleotrove.com/decimal 6746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to use. 6756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param text The text to parse. 6766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param textLength The length of text, or -1 if null-terminated. 6776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param parsePos If not NULL, on input a pointer to an integer specifying the offset at which 6786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* to begin parsing. If not NULL, on output the offset at which parsing ended. 6796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param outBuf A (char *) buffer to receive the parsed number as a string. The output string 6806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* will be nul-terminated if there is sufficient space. 6816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param outBufLength The size of the output buffer. May be zero, in which case 6826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* the outBuf pointer may be NULL, and the function will return the 6836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* size of the output string. 6846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param status A pointer to an UErrorCode to receive any errors 6856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @return the length of the output string, not including any terminating nul. 6866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parse 6876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_parseInt64 6886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_format 6896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_formatInt64 6906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_formatDouble 6916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 4.4 6926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 6936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 6946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_parseDecimal(const UNumberFormat* fmt, 6956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar* text, 6966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t textLength, 6976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t *parsePos /* 0 = start */, 6986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org char *outBuf, 6996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t outBufLength, 7006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 7016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 7026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 7036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Parse a string into a double and a currency using a UNumberFormat. 7046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The string will be parsed according to the UNumberFormat's locale. 7056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fmt the formatter to use 7066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param text the text to parse 7076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param textLength the length of text, or -1 if null-terminated 7086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param parsePos a pointer to an offset index into text at which to 7096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * begin parsing. On output, *parsePos will point after the last 7106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * parsed character. This parameter may be NULL, in which case parsing 7116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * begins at offset 0. 7126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param currency a pointer to the buffer to receive the parsed null- 7136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * terminated currency. This buffer must have a capacity of at least 7146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 4 UChars. 7156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status a pointer to an input-output UErrorCode 7166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return the parsed double 7176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see unum_parseDouble 7186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see unum_formatDoubleCurrency 7196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.0 7206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 7216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE double U_EXPORT2 7226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_parseDoubleCurrency(const UNumberFormat* fmt, 7236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar* text, 7246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t textLength, 7256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t* parsePos, /* 0 = start */ 7266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar* currency, 7276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 7286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 7296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef U_HIDE_DRAFT_API 7306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 7316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Parse a UChar string into a UFormattable. 7326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Example code: 7336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \snippet test/cintltst/cnumtst.c unum_parseToUFormattable 7346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fmt the formatter to use 7356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param result the UFormattable to hold the result. If NULL, a new UFormattable will be allocated (which the caller must close with ufmt_close). 7366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param text the text to parse 7376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param textLength the length of text, or -1 if null-terminated 7386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param parsePos a pointer to an offset index into text at which to 7396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * begin parsing. On output, *parsePos will point after the last 7406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * parsed character. This parameter may be NULL in which case parsing 7416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * begins at offset 0. 7426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status a pointer to an input-output UErrorCode 7436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return the UFormattable. Will be ==result unless NULL was passed in for result, in which case it will be the newly opened UFormattable. 7446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see ufmt_getType 7456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see ufmt_close 7466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @draft ICU 52 7476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 7486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_DRAFT UFormattable* U_EXPORT2 7496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_parseToUFormattable(const UNumberFormat* fmt, 7506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UFormattable *result, 7516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar* text, 7526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t textLength, 7536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t* parsePos, /* 0 = start */ 7546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 7556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* U_HIDE_DRAFT_API */ 7566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 7576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 7586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Set the pattern used by a UNumberFormat. This can only be used 7596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * on a DecimalFormat, other formats return U_UNSUPPORTED_ERROR 7606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * in the status. 7616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param format The formatter to set. 7626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param localized TRUE if the pattern is localized, FALSE otherwise. 7636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param pattern The new pattern 7646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param patternLength The length of pattern, or -1 if null-terminated. 7656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param parseError A pointer to UParseError to recieve information 7666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * about errors occurred during parsing, or NULL if no parse error 7676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * information is desired. 7686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an input-output UErrorCode. 7696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see unum_toPattern 7706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see DecimalFormat 7716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 7726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 7736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 7746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_applyPattern( UNumberFormat *format, 7756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool localized, 7766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *pattern, 7776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t patternLength, 7786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UParseError *parseError, 7796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status 7806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ); 7816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 7826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 7836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Get a locale for which decimal formatting patterns are available. 7846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* A UNumberFormat in a locale returned by this function will perform the correct 7856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* formatting and parsing for the locale. The results of this call are not 7866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* valid for rule-based number formats. 7876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param localeIndex The index of the desired locale. 7886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @return A locale for which number formatting patterns are available, or 0 if none. 7896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_countAvailable 7906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.0 7916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 7926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE const char* U_EXPORT2 7936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_getAvailable(int32_t localeIndex); 7946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 7956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 7966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Determine how many locales have decimal formatting patterns available. The 7976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* results of this call are not valid for rule-based number formats. 7986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* This function is useful for determining the loop ending condition for 7996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* calls to {@link #unum_getAvailable }. 8006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @return The number of locales for which decimal formatting patterns are available. 8016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_getAvailable 8026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.0 8036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 8046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 8056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_countAvailable(void); 8066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if UCONFIG_HAVE_PARSEALLINPUT 8086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 8096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 8106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 8116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef enum UNumberFormatAttributeValue { 8126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @internal */ 8136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_NO = 0, 8146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @internal */ 8156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_YES = 1, 8166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @internal */ 8176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_MAYBE = 2 8186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} UNumberFormatAttributeValue; 8196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 8206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** The possible UNumberFormat numeric attributes @stable ICU 2.0 */ 8226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef enum UNumberFormatAttribute { 8236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Parse integers only */ 8246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PARSE_INT_ONLY, 8256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Use grouping separator */ 8266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_GROUPING_USED, 8276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Always show decimal point */ 8286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_DECIMAL_ALWAYS_SHOWN, 8296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Maximum integer digits */ 8306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_MAX_INTEGER_DIGITS, 8316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Minimum integer digits */ 8326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_MIN_INTEGER_DIGITS, 8336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Integer digits */ 8346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_INTEGER_DIGITS, 8356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Maximum fraction digits */ 8366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_MAX_FRACTION_DIGITS, 8376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Minimum fraction digits */ 8386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_MIN_FRACTION_DIGITS, 8396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Fraction digits */ 8406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_FRACTION_DIGITS, 8416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Multiplier */ 8426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_MULTIPLIER, 8436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Grouping size */ 8446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_GROUPING_SIZE, 8456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Rounding Mode */ 8466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_ROUNDING_MODE, 8476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Rounding increment */ 8486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_ROUNDING_INCREMENT, 8496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** The width to which the output of <code>format()</code> is padded. */ 8506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_FORMAT_WIDTH, 8516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** The position at which padding will take place. */ 8526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PADDING_POSITION, 8536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Secondary grouping size */ 8546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_SECONDARY_GROUPING_SIZE, 8556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Use significant digits 8566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.0 */ 8576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_SIGNIFICANT_DIGITS_USED, 8586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Minimum significant digits 8596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.0 */ 8606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_MIN_SIGNIFICANT_DIGITS, 8616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Maximum significant digits 8626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.0 */ 8636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_MAX_SIGNIFICANT_DIGITS, 8646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Lenient parse mode used by rule-based formats. 8656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.0 8666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 8676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_LENIENT_PARSE, 8686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if UCONFIG_HAVE_PARSEALLINPUT 8696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Consume all input. (may use fastpath). Set to UNUM_YES (require fastpath), UNUM_NO (skip fastpath), or UNUM_MAYBE (heuristic). 8706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This is an internal ICU API. Do not use. 8716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 8726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 8736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PARSE_ALL_INPUT = UNUM_LENIENT_PARSE + 1, 8746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 8756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef U_HIDE_DRAFT_API 8766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 8776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Scale, which adjusts the position of the 8786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * decimal point when formatting. Amounts will be multiplied by 10 ^ (scale) 8796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * before they are formatted. The default value for the scale is 0 ( no adjustment ). 8806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 8816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p>Example: setting the scale to 3, 123 formats as "123,000" 8826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p>Example: setting the scale to -4, 123 formats as "0.0123" 8836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 8846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @draft ICU 51 */ 8856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_SCALE = UNUM_LENIENT_PARSE + 2, 8866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* U_HIDE_DRAFT_API */ 8876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef U_HIDE_INTERNAL_API 8896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Count of "regular" numeric attributes. 8906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal */ 8916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_NUMERIC_ATTRIBUTE_COUNT = UNUM_LENIENT_PARSE + 3, 8926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** One below the first bitfield-boolean item. 8946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * All items after this one are stored in boolean form. 8956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal */ 8966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_MAX_NONBOOLEAN_ATTRIBUTE = 0x0FFF, 8976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* U_HIDE_INTERNAL_API */ 8986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** If 1, specifies that if setting the "max integer digits" attribute would truncate a value, set an error status rather than silently truncating. 9006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For example, formatting the value 1234 with 4 max int digits would succeed, but formatting 12345 would fail. There is no effect on parsing. 9016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Default: 0 (not set) 9026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 50 9036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 9046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_FORMAT_FAIL_IF_MORE_THAN_MAX_DIGITS = 0x1000, 9056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 9066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * if this attribute is set to 1, specifies that, if the pattern doesn't contain an exponent, the exponent will not be parsed. If the pattern does contain an exponent, this attribute has no effect. 9076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Has no effect on formatting. 9086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Default: 0 (unset) 9096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 50 9106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 9116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PARSE_NO_EXPONENT, 9126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef U_HIDE_INTERNAL_API 9146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Limit of boolean attributes. 9156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal */ 9166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_LIMIT_BOOLEAN_ATTRIBUTE 9176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* U_HIDE_INTERNAL_API */ 9186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} UNumberFormatAttribute; 9196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 9216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Get a numeric attribute associated with a UNumberFormat. 9226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* An example of a numeric attribute is the number of integer digits a formatter will produce. 9236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to query. 9246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param attr The attribute to query; one of UNUM_PARSE_INT_ONLY, UNUM_GROUPING_USED, 9256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* UNUM_DECIMAL_ALWAYS_SHOWN, UNUM_MAX_INTEGER_DIGITS, UNUM_MIN_INTEGER_DIGITS, UNUM_INTEGER_DIGITS, 9266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* UNUM_MAX_FRACTION_DIGITS, UNUM_MIN_FRACTION_DIGITS, UNUM_FRACTION_DIGITS, UNUM_MULTIPLIER, 9276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* UNUM_GROUPING_SIZE, UNUM_ROUNDING_MODE, UNUM_FORMAT_WIDTH, UNUM_PADDING_POSITION, UNUM_SECONDARY_GROUPING_SIZE, 9286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* UNUM_SCALE. 9296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @return The value of attr. 9306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_setAttribute 9316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_getDoubleAttribute 9326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_setDoubleAttribute 9336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_getTextAttribute 9346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_setTextAttribute 9356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.0 9366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 9376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 9386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_getAttribute(const UNumberFormat* fmt, 9396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNumberFormatAttribute attr); 9406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 9426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Set a numeric attribute associated with a UNumberFormat. 9436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* An example of a numeric attribute is the number of integer digits a formatter will produce. If the 9446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* formatter does not understand the attribute, the call is ignored. Rule-based formatters only understand 9456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* the lenient-parse attribute. 9466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to set. 9476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param attr The attribute to set; one of UNUM_PARSE_INT_ONLY, UNUM_GROUPING_USED, 9486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* UNUM_DECIMAL_ALWAYS_SHOWN, UNUM_MAX_INTEGER_DIGITS, UNUM_MIN_INTEGER_DIGITS, UNUM_INTEGER_DIGITS, 9496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* UNUM_MAX_FRACTION_DIGITS, UNUM_MIN_FRACTION_DIGITS, UNUM_FRACTION_DIGITS, UNUM_MULTIPLIER, 9506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* UNUM_GROUPING_SIZE, UNUM_ROUNDING_MODE, UNUM_FORMAT_WIDTH, UNUM_PADDING_POSITION, UNUM_SECONDARY_GROUPING_SIZE, 9516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* UNUM_LENIENT_PARSE, or UNUM_SCALE. 9526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param newValue The new value of attr. 9536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_getAttribute 9546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_getDoubleAttribute 9556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_setDoubleAttribute 9566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_getTextAttribute 9576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_setTextAttribute 9586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.0 9596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 9606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 9616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_setAttribute( UNumberFormat* fmt, 9626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNumberFormatAttribute attr, 9636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t newValue); 9646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 9676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Get a numeric attribute associated with a UNumberFormat. 9686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* An example of a numeric attribute is the number of integer digits a formatter will produce. 9696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* If the formatter does not understand the attribute, -1 is returned. 9706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to query. 9716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param attr The attribute to query; e.g. UNUM_ROUNDING_INCREMENT. 9726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @return The value of attr. 9736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_getAttribute 9746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_setAttribute 9756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_setDoubleAttribute 9766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_getTextAttribute 9776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_setTextAttribute 9786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.0 9796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 9806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE double U_EXPORT2 9816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_getDoubleAttribute(const UNumberFormat* fmt, 9826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNumberFormatAttribute attr); 9836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 9856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Set a numeric attribute associated with a UNumberFormat. 9866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* An example of a numeric attribute is the number of integer digits a formatter will produce. 9876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* If the formatter does not understand the attribute, this call is ignored. 9886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to set. 9896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param attr The attribute to set; e.g. UNUM_ROUNDING_INCREMENT. 9906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param newValue The new value of attr. 9916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_getAttribute 9926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_setAttribute 9936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_getDoubleAttribute 9946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_getTextAttribute 9956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_setTextAttribute 9966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.0 9976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 9986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 9996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_setDoubleAttribute( UNumberFormat* fmt, 10006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNumberFormatAttribute attr, 10016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org double newValue); 10026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 10036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** The possible UNumberFormat text attributes @stable ICU 2.0*/ 10046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef enum UNumberFormatTextAttribute { 10056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Positive prefix */ 10066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_POSITIVE_PREFIX, 10076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Positive suffix */ 10086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_POSITIVE_SUFFIX, 10096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Negative prefix */ 10106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_NEGATIVE_PREFIX, 10116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Negative suffix */ 10126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_NEGATIVE_SUFFIX, 10136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** The character used to pad to the format width. */ 10146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PADDING_CHARACTER, 10156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** The ISO currency code */ 10166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_CURRENCY_CODE, 10176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 10186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The default rule set. This is only available with rule-based formatters. 10196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.0 10206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 10216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_DEFAULT_RULESET, 10226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 10236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The public rule sets. This is only available with rule-based formatters. 10246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This is a read-only attribute. The public rulesets are returned as a 10256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * single string, with each ruleset name delimited by ';' (semicolon). 10266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.0 10276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 10286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PUBLIC_RULESETS 10296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} UNumberFormatTextAttribute; 10306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 10316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 10326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Get a text attribute associated with a UNumberFormat. 10336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* An example of a text attribute is the suffix for positive numbers. If the formatter 10346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* does not understand the attribute, U_UNSUPPORTED_ERROR is returned as the status. 10356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Rule-based formatters only understand UNUM_DEFAULT_RULESET and UNUM_PUBLIC_RULESETS. 10366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to query. 10376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param tag The attribute to query; one of UNUM_POSITIVE_PREFIX, UNUM_POSITIVE_SUFFIX, 10386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* UNUM_NEGATIVE_PREFIX, UNUM_NEGATIVE_SUFFIX, UNUM_PADDING_CHARACTER, UNUM_CURRENCY_CODE, 10396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* UNUM_DEFAULT_RULESET, or UNUM_PUBLIC_RULESETS. 10406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param result A pointer to a buffer to receive the attribute. 10416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param resultLength The maximum size of result. 10426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param status A pointer to an UErrorCode to receive any errors 10436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @return The total buffer size needed; if greater than resultLength, the output was truncated. 10446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_setTextAttribute 10456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_getAttribute 10466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_setAttribute 10476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.0 10486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 10496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 10506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_getTextAttribute( const UNumberFormat* fmt, 10516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNumberFormatTextAttribute tag, 10526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar* result, 10536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLength, 10546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 10556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 10566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 10576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Set a text attribute associated with a UNumberFormat. 10586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* An example of a text attribute is the suffix for positive numbers. Rule-based formatters 10596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* only understand UNUM_DEFAULT_RULESET. 10606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to set. 10616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param tag The attribute to set; one of UNUM_POSITIVE_PREFIX, UNUM_POSITIVE_SUFFIX, 10626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* UNUM_NEGATIVE_PREFIX, UNUM_NEGATIVE_SUFFIX, UNUM_PADDING_CHARACTER, UNUM_CURRENCY_CODE, 10636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* or UNUM_DEFAULT_RULESET. 10646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param newValue The new value of attr. 10656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param newValueLength The length of newValue, or -1 if null-terminated. 10666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param status A pointer to an UErrorCode to receive any errors 10676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_getTextAttribute 10686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_getAttribute 10696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_setAttribute 10706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.0 10716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 10726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 10736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_setTextAttribute( UNumberFormat* fmt, 10746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNumberFormatTextAttribute tag, 10756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar* newValue, 10766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t newValueLength, 10776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 10786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 10796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 10806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Extract the pattern from a UNumberFormat. The pattern will follow 10816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the DecimalFormat pattern syntax. 10826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fmt The formatter to query. 10836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param isPatternLocalized TRUE if the pattern should be localized, 10846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * FALSE otherwise. This is ignored if the formatter is a rule-based 10856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * formatter. 10866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param result A pointer to a buffer to receive the pattern. 10876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param resultLength The maximum size of result. 10886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status A pointer to an input-output UErrorCode. 10896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The total buffer size needed; if greater than resultLength, 10906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the output was truncated. 10916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see unum_applyPattern 10926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see DecimalFormat 10936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 10946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 10956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 10966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_toPattern( const UNumberFormat* fmt, 10976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool isPatternLocalized, 10986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar* result, 10996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLength, 11006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 11016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 11026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 11036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 11046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constants for specifying a number format symbol. 11056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 11066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 11076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef enum UNumberFormatSymbol { 11086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** The decimal separator */ 11096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_DECIMAL_SEPARATOR_SYMBOL = 0, 11106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** The grouping separator */ 11116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_GROUPING_SEPARATOR_SYMBOL = 1, 11126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** The pattern separator */ 11136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PATTERN_SEPARATOR_SYMBOL = 2, 11146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** The percent sign */ 11156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PERCENT_SYMBOL = 3, 11166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Zero*/ 11176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_ZERO_DIGIT_SYMBOL = 4, 11186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Character representing a digit in the pattern */ 11196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_DIGIT_SYMBOL = 5, 11206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** The minus sign */ 11216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_MINUS_SIGN_SYMBOL = 6, 11226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** The plus sign */ 11236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PLUS_SIGN_SYMBOL = 7, 11246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** The currency symbol */ 11256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_CURRENCY_SYMBOL = 8, 11266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** The international currency symbol */ 11276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_INTL_CURRENCY_SYMBOL = 9, 11286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** The monetary separator */ 11296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_MONETARY_SEPARATOR_SYMBOL = 10, 11306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** The exponential symbol */ 11316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_EXPONENTIAL_SYMBOL = 11, 11326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Per mill symbol */ 11336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PERMILL_SYMBOL = 12, 11346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Escape padding character */ 11356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_PAD_ESCAPE_SYMBOL = 13, 11366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Infinity symbol */ 11376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_INFINITY_SYMBOL = 14, 11386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Nan symbol */ 11396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_NAN_SYMBOL = 15, 11406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Significant digit symbol 11416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.0 */ 11426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_SIGNIFICANT_DIGIT_SYMBOL = 16, 11436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** The monetary grouping separator 11446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.6 11456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 11466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_MONETARY_GROUPING_SEPARATOR_SYMBOL = 17, 11476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** One 11486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.6 11496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 11506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_ONE_DIGIT_SYMBOL = 18, 11516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Two 11526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.6 11536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 11546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_TWO_DIGIT_SYMBOL = 19, 11556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Three 11566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.6 11576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 11586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_THREE_DIGIT_SYMBOL = 20, 11596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Four 11606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.6 11616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 11626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_FOUR_DIGIT_SYMBOL = 21, 11636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Five 11646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.6 11656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 11666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_FIVE_DIGIT_SYMBOL = 22, 11676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Six 11686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.6 11696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 11706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_SIX_DIGIT_SYMBOL = 23, 11716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Seven 11726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.6 11736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 11746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_SEVEN_DIGIT_SYMBOL = 24, 11756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Eight 11766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.6 11776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 11786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_EIGHT_DIGIT_SYMBOL = 25, 11796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Nine 11806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.6 11816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 11826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_NINE_DIGIT_SYMBOL = 26, 11836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** count symbol constants */ 11846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNUM_FORMAT_SYMBOL_COUNT = 27 11856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} UNumberFormatSymbol; 11866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 11876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 11886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Get a symbol associated with a UNumberFormat. 11896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* A UNumberFormat uses symbols to represent the special locale-dependent 11906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* characters in a number, for example the percent sign. This API is not 11916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* supported for rule-based formatters. 11926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to query. 11936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param symbol The UNumberFormatSymbol constant for the symbol to get 11946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param buffer The string buffer that will receive the symbol string; 11956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* if it is NULL, then only the length of the symbol is returned 11966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param size The size of the string buffer 11976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param status A pointer to an UErrorCode to receive any errors 11986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @return The length of the symbol; the buffer is not modified if 11996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* <code>length>=size</code> 12006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_setSymbol 12016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.0 12026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 12036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 12046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_getSymbol(const UNumberFormat *fmt, 12056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNumberFormatSymbol symbol, 12066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar *buffer, 12076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t size, 12086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 12096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 12106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 12116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Set a symbol associated with a UNumberFormat. 12126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* A UNumberFormat uses symbols to represent the special locale-dependent 12136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* characters in a number, for example the percent sign. This API is not 12146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* supported for rule-based formatters. 12156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param fmt The formatter to set. 12166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param symbol The UNumberFormatSymbol constant for the symbol to set 12176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param value The string to set the symbol to 12186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param length The length of the string, or -1 for a zero-terminated string 12196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @param status A pointer to an UErrorCode to receive any errors. 12206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @see unum_getSymbol 12216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* @stable ICU 2.0 12226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 12236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 12246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_setSymbol(UNumberFormat *fmt, 12256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UNumberFormatSymbol symbol, 12266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *value, 12276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t length, 12286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 12296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 12306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 12316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 12326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Get the locale for this number format object. 12336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * You can choose between valid and actual locale. 12346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fmt The formatter to get the locale from 12356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param type type of the locale we're looking for (valid or actual) 12366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status error code for the operation 12376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return the locale name 12386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.8 12396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 12406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE const char* U_EXPORT2 12416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgunum_getLocaleByType(const UNumberFormat *fmt, 12426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ULocDataLocaleType type, 12436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 12446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 12456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* #if !UCONFIG_NO_FORMATTING */ 12466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 12476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 1248