1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************* 31b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* Copyright (C) 1997-2015, International Business Machines Corporation and others. 4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* All Rights Reserved. 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Modification History: 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Date Name Description 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 06/24/99 helena Integrated Alan's NF enhancements and Java2 bug fixes 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************* 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef _UNUM 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define _UNUM 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h" 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/localpointer.h" 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/uloc.h" 21f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius#include "unicode/ucurr.h" 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/umisc.h" 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/parseerr.h" 2459d709d503bab6e2b61931737e662dd293b40578ccornelius#include "unicode/uformattable.h" 25fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#include "unicode/udisplaycontext.h" 2659d709d503bab6e2b61931737e662dd293b40578ccornelius 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \file 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \brief C API: NumberFormat 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <h2> Number Format C API </h2> 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Number Format C API Provides functions for 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * formatting and parsing a number. Also provides methods for 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * determining which locales have number formats, and what their names 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * are. 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UNumberFormat helps you to format and parse numbers for any locale. 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Your code can be completely independent of the locale conventions 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * for decimal points, thousands-separators, or even the particular 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * decimal digits used, or whether the number format is even decimal. 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * There are different number format styles like decimal, currency, 43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * percent and spellout. 44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * To format a number for the current Locale, use one of the static 46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * factory methods: 47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \code 49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UChar myString[20]; 50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * double myNumber = 7.0; 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UErrorCode status = U_ZERO_ERROR; 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UNumberFormat* nf = unum_open(UNUM_DEFAULT, NULL, -1, NULL, NULL, &status); 53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * unum_formatDouble(nf, myNumber, myString, 20, NULL, &status); 54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * printf(" Example 1: %s\n", austrdup(myString) ); //austrdup( a function used to convert UChar* to char*) 55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \endcode 56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If you are formatting multiple numbers, it is more efficient to get 58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the format and use it multiple times so that the system doesn't 59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * have to fetch the information about the local language and country 60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * conventions multiple times. 61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \code 63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * uint32_t i, resultlength, reslenneeded; 64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UErrorCode status = U_ZERO_ERROR; 65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UFieldPosition pos; 66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * uint32_t a[] = { 123, 3333, -1234567 }; 67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * const uint32_t a_len = sizeof(a) / sizeof(a[0]); 68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UNumberFormat* nf; 69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UChar* result = NULL; 70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * nf = unum_open(UNUM_DEFAULT, NULL, -1, NULL, NULL, &status); 72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * for (i = 0; i < a_len; i++) { 73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * resultlength=0; 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * reslenneeded=unum_format(nf, a[i], NULL, resultlength, &pos, &status); 75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * result = NULL; 76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if(status==U_BUFFER_OVERFLOW_ERROR){ 77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * status=U_ZERO_ERROR; 78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * resultlength=reslenneeded+1; 79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * result=(UChar*)malloc(sizeof(UChar) * resultlength); 80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * unum_format(nf, a[i], result, resultlength, &pos, &status); 81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * } 82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * printf( " Example 2: %s\n", austrdup(result)); 83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * free(result); 84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * } 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \endcode 86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * To format a number for a different Locale, specify it in the 88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * call to unum_open(). 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \code 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UNumberFormat* nf = unum_open(UNUM_DEFAULT, NULL, -1, "fr_FR", NULL, &success) 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \endcode 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * You can use a NumberFormat API unum_parse() to parse. 95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \code 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UErrorCode status = U_ZERO_ERROR; 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * int32_t pos=0; 99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * int32_t num; 100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * num = unum_parse(nf, str, u_strlen(str), &pos, &status); 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \endcode 102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 103c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Use UNUM_DECIMAL to get the normal number format for that country. 104c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * There are other static options available. Use UNUM_CURRENCY 105c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * to get the currency number format for that country. Use UNUM_PERCENT 106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * to get a format for displaying percentages. With this format, a 107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * fraction from 0.53 is displayed as 53%. 108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Use a pattern to create either a DecimalFormat or a RuleBasedNumberFormat 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * formatter. The pattern must conform to the syntax defined for those 111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * formatters. 112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * You can also control the display of numbers with such function as 11454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * unum_getAttributes() and unum_setAttributes(), which let you set the 115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * miminum fraction digits, grouping, etc. 116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see UNumberFormatAttributes for more details 117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * You can also use forms of the parse and format methods with 119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * ParsePosition and UFieldPosition to allow you to: 120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <ul type=round> 121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <li>(a) progressively parse through pieces of a string. 122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <li>(b) align the decimal point and other areas. 123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </ul> 124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * It is also possible to change or set the symbols used for a particular 126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * locale like the currency symbol, the grouping seperator , monetary seperator 127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * etc by making use of functions unum_setSymbols() and unum_getSymbols(). 128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** A number formatter. 131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * For usage in C programs. 132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef void* UNumberFormat; 135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** The possible number format styles. 137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef enum UNumberFormatStyle { 140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 141b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Decimal format defined by a pattern string. 142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_PATTERN_DECIMAL=0, 145b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 146b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Decimal format ("normal" style). 147b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @stable ICU 2.0 148b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_DECIMAL=1, 150b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 151b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Currency format with a currency symbol, e.g., "$1.00". 152b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @stable ICU 2.0 153b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 154f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_CURRENCY=2, 155b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 156b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Percent format 157b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @stable ICU 2.0 158b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 159f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_PERCENT=3, 160b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 161b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Scientific format 162b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @stable ICU 2.1 163b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 164f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_SCIENTIFIC=4, 165b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 166f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * Spellout rule-based format. The default ruleset can be specified/changed using 167f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * unum_setTextAttribute with UNUM_DEFAULT_RULESET; the available public rulesets 168f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * can be listed using unum_getTextAttribute with UNUM_PUBLIC_RULESETS. 169b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @stable ICU 2.0 170b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 171f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_SPELLOUT=5, 172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 173f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * Ordinal rule-based format . The default ruleset can be specified/changed using 174f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * unum_setTextAttribute with UNUM_DEFAULT_RULESET; the available public rulesets 175f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * can be listed using unum_getTextAttribute with UNUM_PUBLIC_RULESETS. 176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 178f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_ORDINAL=6, 179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Duration rule-based format 181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 183f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_DURATION=7, 184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 185b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Numbering system rule-based format 18627f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.2 187b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 188f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_NUMBERING_SYSTEM=8, 189b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 190b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Rule-based format defined by a pattern string. 191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 193f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_PATTERN_RULEBASED=9, 194b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 195b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Currency format with an ISO currency code, e.g., "USD1.00". 196103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.8 197b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 198f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_CURRENCY_ISO=10, 199b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 200b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Currency format with a pluralized currency name, 201b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * e.g., "1.00 US dollar" and "3.00 US dollars". 202103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.8 203b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 204f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_CURRENCY_PLURAL=11, 205fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius /** 206fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * Currency format for accounting, e.g., "($3.00)" for 207fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * negative currency amount instead of "-$3.00" ({@link #UNUM_CURRENCY}). 2081b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * @stable ICU 53 209fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius */ 210f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_CURRENCY_ACCOUNTING=12, 2111b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert#ifndef U_HIDE_DRAFT_API 212f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius /** 213f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * Currency format with a currency symbol given CASH usage, e.g., 214f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * "NT$3" instead of "NT$3.23". 215f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * @draft ICU 54 216f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius */ 217f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_CASH_CURRENCY=13, 218fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#endif /* U_HIDE_DRAFT_API */ 219f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius 220b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 221b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * One more than the highest number format style constant. 222103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.8 223b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 224f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_FORMAT_STYLE_COUNT=14, 225f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius 226b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 227b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Default format 228b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @stable ICU 2.0 229b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_DEFAULT = UNUM_DECIMAL, 231b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 232b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Alias for UNUM_PATTERN_DECIMAL 233b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @stable ICU 3.0 234b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_IGNORE = UNUM_PATTERN_DECIMAL 236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} UNumberFormatStyle; 237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** The possible number format rounding modes. 239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef enum UNumberFormatRoundingMode { 242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_ROUND_CEILING, 243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_ROUND_FLOOR, 244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_ROUND_DOWN, 245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_ROUND_UP, 246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 247103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Half-even rounding 248103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable, ICU 3.8 249103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 250103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_ROUND_HALFEVEN, 251103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#ifndef U_HIDE_DEPRECATED_API 252103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** 253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Half-even rounding, misspelled name 254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @deprecated, ICU 3.8 255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 256103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_FOUND_HALFEVEN = UNUM_ROUND_HALFEVEN, 257103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif /* U_HIDE_DEPRECATED_API */ 25859d709d503bab6e2b61931737e662dd293b40578ccornelius UNUM_ROUND_HALFDOWN = UNUM_ROUND_HALFEVEN + 1, 259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_ROUND_HALFUP, 260b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 261b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * ROUND_UNNECESSARY reports an error if formatted result is not exact. 262103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.8 263b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 264103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_ROUND_UNNECESSARY 265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} UNumberFormatRoundingMode; 266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** The possible number format pad positions. 268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef enum UNumberFormatPadPosition { 271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_PAD_BEFORE_PREFIX, 272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_PAD_AFTER_PREFIX, 273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_PAD_BEFORE_SUFFIX, 274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_PAD_AFTER_SUFFIX 275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} UNumberFormatPadPosition; 276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius/** 2788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Constants for specifying short or long format. 279fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 2808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 2818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliustypedef enum UNumberCompactStyle { 282fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius /** @stable ICU 51 */ 2838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UNUM_SHORT, 284fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius /** @stable ICU 51 */ 2858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UNUM_LONG 286fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius /** @stable ICU 51 */ 2878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} UNumberCompactStyle; 2888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 290b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Constants for specifying currency spacing 291103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.8 292b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 293b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehoenum UCurrencySpacing { 294103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 4.8 */ 295b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UNUM_CURRENCY_MATCH, 296103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 4.8 */ 297b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UNUM_CURRENCY_SURROUNDING_MATCH, 298103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 4.8 */ 299b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UNUM_CURRENCY_INSERT, 300103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 4.8 */ 301b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UNUM_CURRENCY_SPACING_COUNT 302b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho}; 303103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliustypedef enum UCurrencySpacing UCurrencySpacing; /**< @stable ICU 4.8 */ 304103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 305103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 306103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/** 307103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * FieldPosition and UFieldPosition selectors for format fields 308103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * defined by NumberFormat and UNumberFormat. 309103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 49 310103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 311103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliustypedef enum UNumberFormatFields { 312103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 49 */ 313103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_INTEGER_FIELD, 314103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 49 */ 315103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_FRACTION_FIELD, 316103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 49 */ 317103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_DECIMAL_SEPARATOR_FIELD, 318103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 49 */ 319103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_EXPONENT_SYMBOL_FIELD, 320103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 49 */ 321103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_EXPONENT_SIGN_FIELD, 322103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 49 */ 323103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_EXPONENT_FIELD, 324103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 49 */ 325103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_GROUPING_SEPARATOR_FIELD, 326103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 49 */ 327103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_CURRENCY_FIELD, 328103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 49 */ 329103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_PERCENT_FIELD, 330103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 49 */ 331103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_PERMILL_FIELD, 332103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 49 */ 333103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_SIGN_FIELD, 334103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 49 */ 335103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_FIELD_COUNT 336103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} UNumberFormatFields; 337103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 338b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 339b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho/** 340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Create and return a new UNumberFormat for formatting and parsing 341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * numbers. A UNumberFormat may be used to format numbers by calling 342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * {@link #unum_format }, and to parse numbers by calling {@link #unum_parse }. 343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The caller must call {@link #unum_close } when done to release resources 344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * used by this object. 345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param style The type of number format to open: one of 346fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * UNUM_DECIMAL, UNUM_CURRENCY, UNUM_PERCENT, UNUM_SCIENTIFIC, 347fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * UNUM_CURRENCY_ISO, UNUM_CURRENCY_PLURAL, UNUM_SPELLOUT, 348fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * UNUM_ORDINAL, UNUM_DURATION, UNUM_NUMBERING_SYSTEM, 349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UNUM_PATTERN_DECIMAL, UNUM_PATTERN_RULEBASED, or UNUM_DEFAULT. 350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If UNUM_PATTERN_DECIMAL or UNUM_PATTERN_RULEBASED is passed then the 351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * number format is opened using the given pattern, which must conform 352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * to the syntax described in DecimalFormat or RuleBasedNumberFormat, 353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * respectively. 354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pattern A pattern specifying the format to use. 355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This parameter is ignored unless the style is 356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UNUM_PATTERN_DECIMAL or UNUM_PATTERN_RULEBASED. 357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternLength The number of characters in the pattern, or -1 358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if null-terminated. This parameter is ignored unless the style is 359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UNUM_PATTERN. 360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param locale A locale identifier to use to determine formatting 361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * and parsing conventions, or NULL to use the default locale. 362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param parseErr A pointer to a UParseError struct to receive the 363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * details of any parsing errors, or NULL if no parsing error details 364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * are desired. 365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status A pointer to an input-output UErrorCode. 366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A pointer to a newly created UNumberFormat, or NULL if an 367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * error occurred. 368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see unum_close 369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see DecimalFormat 370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE UNumberFormat* U_EXPORT2 373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_open( UNumberFormatStyle style, 374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar* pattern, 375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t patternLength, 376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* locale, 377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UParseError* parseErr, 378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode* status); 379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Close a UNumberFormat. 383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Once closed, a UNumberFormat may no longer be used. 384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to close. 385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE void U_EXPORT2 388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_close(UNumberFormat* fmt); 389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 39050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if U_SHOW_CPLUSPLUS_API 39150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 39250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_NAMESPACE_BEGIN 39350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 39450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/** 39550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * \class LocalUNumberFormatPointer 39650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * "Smart pointer" class, closes a UNumberFormat via unum_close(). 39750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * For most methods see the LocalPointerBase base class. 39850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 39950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @see LocalPointerBase 40050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @see LocalPointer 40127f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 40250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 40350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_DEFINE_LOCAL_OPEN_POINTER(LocalUNumberFormatPointer, UNumberFormat, unum_close); 40450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 40550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_NAMESPACE_END 40650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 40750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif 40850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Open a copy of a UNumberFormat. 411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This function performs a deep copy. 412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param fmt The format to copy 413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status A pointer to an UErrorCode to receive any errors. 414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A pointer to a UNumberFormat identical to fmt. 415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE UNumberFormat* U_EXPORT2 418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_clone(const UNumberFormat *fmt, 419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *status); 420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Format an integer using a UNumberFormat. 423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* The integer will be formatted according to the UNumberFormat's locale. 424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to use. 425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param number The number to format. 42659d709d503bab6e2b61931737e662dd293b40578ccornelius* @param result A pointer to a buffer to receive the NULL-terminated formatted number. If 42759d709d503bab6e2b61931737e662dd293b40578ccornelius* the formatted number fits into dest but cannot be NULL-terminated (length == resultLength) 42859d709d503bab6e2b61931737e662dd293b40578ccornelius* then the error code is set to U_STRING_NOT_TERMINATED_WARNING. If the formatted number 42959d709d503bab6e2b61931737e662dd293b40578ccornelius* doesn't fit into result then the error code is set to U_BUFFER_OVERFLOW_ERROR. 430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param resultLength The maximum size of result. 431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param pos A pointer to a UFieldPosition. On input, position->field 432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* is read. On output, position->beginIndex and position->endIndex indicate 433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* the beginning and ending indices of field number position->field, if such 434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* a field exists. This parameter may be NULL, in which case no field 435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors 436b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The total buffer size needed; if greater than resultLength, the output was truncated. 437b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_formatInt64 438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_formatDouble 439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_parse 440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_parseInt64 441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_parseDouble 442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see UFieldPosition 443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 444b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 445b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_format( const UNumberFormat* fmt, 447b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t number, 448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar* result, 449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t resultLength, 450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UFieldPosition *pos, 451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode* status); 452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 453b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 454b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Format an int64 using a UNumberFormat. 455b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* The int64 will be formatted according to the UNumberFormat's locale. 456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to use. 457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param number The number to format. 45859d709d503bab6e2b61931737e662dd293b40578ccornelius* @param result A pointer to a buffer to receive the NULL-terminated formatted number. If 45959d709d503bab6e2b61931737e662dd293b40578ccornelius* the formatted number fits into dest but cannot be NULL-terminated (length == resultLength) 46059d709d503bab6e2b61931737e662dd293b40578ccornelius* then the error code is set to U_STRING_NOT_TERMINATED_WARNING. If the formatted number 46159d709d503bab6e2b61931737e662dd293b40578ccornelius* doesn't fit into result then the error code is set to U_BUFFER_OVERFLOW_ERROR. 462b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param resultLength The maximum size of result. 463b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param pos A pointer to a UFieldPosition. On input, position->field 464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* is read. On output, position->beginIndex and position->endIndex indicate 465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* the beginning and ending indices of field number position->field, if such 466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* a field exists. This parameter may be NULL, in which case no field 467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors 468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The total buffer size needed; if greater than resultLength, the output was truncated. 469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_format 470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_formatDouble 471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_parse 472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_parseInt64 473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_parseDouble 474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see UFieldPosition 475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_formatInt64(const UNumberFormat *fmt, 479b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int64_t number, 480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar* result, 481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t resultLength, 482b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UFieldPosition *pos, 483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode* status); 484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Format a double using a UNumberFormat. 487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* The double will be formatted according to the UNumberFormat's locale. 488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to use. 489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param number The number to format. 49059d709d503bab6e2b61931737e662dd293b40578ccornelius* @param result A pointer to a buffer to receive the NULL-terminated formatted number. If 49159d709d503bab6e2b61931737e662dd293b40578ccornelius* the formatted number fits into dest but cannot be NULL-terminated (length == resultLength) 49259d709d503bab6e2b61931737e662dd293b40578ccornelius* then the error code is set to U_STRING_NOT_TERMINATED_WARNING. If the formatted number 49359d709d503bab6e2b61931737e662dd293b40578ccornelius* doesn't fit into result then the error code is set to U_BUFFER_OVERFLOW_ERROR. 494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param resultLength The maximum size of result. 495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param pos A pointer to a UFieldPosition. On input, position->field 496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* is read. On output, position->beginIndex and position->endIndex indicate 497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* the beginning and ending indices of field number position->field, if such 498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* a field exists. This parameter may be NULL, in which case no field 499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors 500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The total buffer size needed; if greater than resultLength, the output was truncated. 501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_format 502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_formatInt64 503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_parse 504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_parseInt64 505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_parseDouble 506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see UFieldPosition 507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_formatDouble( const UNumberFormat* fmt, 511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru double number, 512b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar* result, 513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t resultLength, 514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UFieldPosition *pos, /* 0 if ignore */ 515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode* status); 516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 51850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* Format a decimal number using a UNumberFormat. 51950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* The number will be formatted according to the UNumberFormat's locale. 52050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* The syntax of the input number is a "numeric string" 52150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* as defined in the Decimal Arithmetic Specification, available at 52250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* http://speleotrove.com/decimal 52350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @param fmt The formatter to use. 52450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @param number The number to format. 52550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @param length The length of the input number, or -1 if the input is nul-terminated. 52659d709d503bab6e2b61931737e662dd293b40578ccornelius* @param result A pointer to a buffer to receive the NULL-terminated formatted number. If 52759d709d503bab6e2b61931737e662dd293b40578ccornelius* the formatted number fits into dest but cannot be NULL-terminated (length == resultLength) 52859d709d503bab6e2b61931737e662dd293b40578ccornelius* then the error code is set to U_STRING_NOT_TERMINATED_WARNING. If the formatted number 52959d709d503bab6e2b61931737e662dd293b40578ccornelius* doesn't fit into result then the error code is set to U_BUFFER_OVERFLOW_ERROR. 53050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @param resultLength The maximum size of result. 53150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @param pos A pointer to a UFieldPosition. On input, position->field 53250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* is read. On output, position->beginIndex and position->endIndex indicate 53350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* the beginning and ending indices of field number position->field, if such 53450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* a field exists. This parameter may be NULL, in which case it is ignored. 53550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @param status A pointer to an UErrorCode to receive any errors 53650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @return The total buffer size needed; if greater than resultLength, the output was truncated. 53750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @see unum_format 53850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @see unum_formatInt64 53950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @see unum_parse 54050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @see unum_parseInt64 54150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @see unum_parseDouble 54250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @see UFieldPosition 54327f654740f2a26ad62a5c155af9199af9e69b889claireho* @stable ICU 4.4 54450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho*/ 54527f654740f2a26ad62a5c155af9199af9e69b889clairehoU_STABLE int32_t U_EXPORT2 54650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehounum_formatDecimal( const UNumberFormat* fmt, 54750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const char * number, 54850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t length, 54950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UChar* result, 55050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t resultLength, 55150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UFieldPosition *pos, /* 0 if ignore */ 55250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode* status); 55350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 55450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/** 555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format a double currency amount using a UNumberFormat. 556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The double will be formatted according to the UNumberFormat's locale. 557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param fmt the formatter to use 558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param number the number to format 559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param currency the 3-letter null-terminated ISO 4217 currency code 56059d709d503bab6e2b61931737e662dd293b40578ccornelius * @param result A pointer to a buffer to receive the NULL-terminated formatted number. If 56159d709d503bab6e2b61931737e662dd293b40578ccornelius * the formatted number fits into dest but cannot be NULL-terminated (length == resultLength) 56259d709d503bab6e2b61931737e662dd293b40578ccornelius * then the error code is set to U_STRING_NOT_TERMINATED_WARNING. If the formatted number 56359d709d503bab6e2b61931737e662dd293b40578ccornelius * doesn't fit into result then the error code is set to U_BUFFER_OVERFLOW_ERROR. 564b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param resultLength the maximum number of UChars to write to result 565b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pos a pointer to a UFieldPosition. On input, 566b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * position->field is read. On output, position->beginIndex and 567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * position->endIndex indicate the beginning and ending indices of 568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * field number position->field, if such a field exists. This 569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * parameter may be NULL, in which case it is ignored. 570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status a pointer to an input-output UErrorCode 571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return the total buffer size needed; if greater than resultLength, 572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the output was truncated. 573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see unum_formatDouble 574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see unum_parseDoubleCurrency 575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see UFieldPosition 576b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 577b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 57859d709d503bab6e2b61931737e662dd293b40578ccorneliusU_STABLE int32_t U_EXPORT2 579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_formatDoubleCurrency(const UNumberFormat* fmt, 580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru double number, 581b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar* currency, 582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar* result, 583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t resultLength, 58459d709d503bab6e2b61931737e662dd293b40578ccornelius UFieldPosition* pos, 585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode* status); 586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 58759d709d503bab6e2b61931737e662dd293b40578ccornelius/** 58859d709d503bab6e2b61931737e662dd293b40578ccornelius * Format a UFormattable into a string. 58959d709d503bab6e2b61931737e662dd293b40578ccornelius * @param fmt the formatter to use 59059d709d503bab6e2b61931737e662dd293b40578ccornelius * @param number the number to format, as a UFormattable 59159d709d503bab6e2b61931737e662dd293b40578ccornelius * @param result A pointer to a buffer to receive the NULL-terminated formatted number. If 59259d709d503bab6e2b61931737e662dd293b40578ccornelius * the formatted number fits into dest but cannot be NULL-terminated (length == resultLength) 59359d709d503bab6e2b61931737e662dd293b40578ccornelius * then the error code is set to U_STRING_NOT_TERMINATED_WARNING. If the formatted number 59459d709d503bab6e2b61931737e662dd293b40578ccornelius * doesn't fit into result then the error code is set to U_BUFFER_OVERFLOW_ERROR. 59559d709d503bab6e2b61931737e662dd293b40578ccornelius * @param resultLength the maximum number of UChars to write to result 59659d709d503bab6e2b61931737e662dd293b40578ccornelius * @param pos a pointer to a UFieldPosition. On input, 59759d709d503bab6e2b61931737e662dd293b40578ccornelius * position->field is read. On output, position->beginIndex and 59859d709d503bab6e2b61931737e662dd293b40578ccornelius * position->endIndex indicate the beginning and ending indices of 59959d709d503bab6e2b61931737e662dd293b40578ccornelius * field number position->field, if such a field exists. This 60059d709d503bab6e2b61931737e662dd293b40578ccornelius * parameter may be NULL, in which case it is ignored. 60159d709d503bab6e2b61931737e662dd293b40578ccornelius * @param status a pointer to an input-output UErrorCode 60259d709d503bab6e2b61931737e662dd293b40578ccornelius * @return the total buffer size needed; if greater than resultLength, 60359d709d503bab6e2b61931737e662dd293b40578ccornelius * the output was truncated. Will return 0 on error. 60459d709d503bab6e2b61931737e662dd293b40578ccornelius * @see unum_parseToUFormattable 605f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * @stable ICU 52 60659d709d503bab6e2b61931737e662dd293b40578ccornelius */ 607f9878a236aa0d9662d8e40cafdaf2e04cd615835ccorneliusU_STABLE int32_t U_EXPORT2 60859d709d503bab6e2b61931737e662dd293b40578ccorneliusunum_formatUFormattable(const UNumberFormat* fmt, 60959d709d503bab6e2b61931737e662dd293b40578ccornelius const UFormattable *number, 61059d709d503bab6e2b61931737e662dd293b40578ccornelius UChar *result, 61159d709d503bab6e2b61931737e662dd293b40578ccornelius int32_t resultLength, 61259d709d503bab6e2b61931737e662dd293b40578ccornelius UFieldPosition *pos, 61359d709d503bab6e2b61931737e662dd293b40578ccornelius UErrorCode *status); 61459d709d503bab6e2b61931737e662dd293b40578ccornelius 615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Parse a string into an integer using a UNumberFormat. 617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* The string will be parsed according to the UNumberFormat's locale. 618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to use. 619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param text The text to parse. 620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param textLength The length of text, or -1 if null-terminated. 62159d709d503bab6e2b61931737e662dd293b40578ccornelius* @param parsePos If not NULL, on input a pointer to an integer specifying the offset at which 62259d709d503bab6e2b61931737e662dd293b40578ccornelius* to begin parsing. If not NULL, on output the offset at which parsing ended. 623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors 624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The value of the parsed integer 625b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_parseInt64 626b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_parseDouble 627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_format 628b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_formatInt64 629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_formatDouble 630b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 631b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 632b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 633b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_parse( const UNumberFormat* fmt, 634b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar* text, 635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t textLength, 636b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t *parsePos /* 0 = start */, 637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *status); 638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Parse a string into an int64 using a UNumberFormat. 641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* The string will be parsed according to the UNumberFormat's locale. 642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to use. 643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param text The text to parse. 644b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param textLength The length of text, or -1 if null-terminated. 64559d709d503bab6e2b61931737e662dd293b40578ccornelius* @param parsePos If not NULL, on input a pointer to an integer specifying the offset at which 64659d709d503bab6e2b61931737e662dd293b40578ccornelius* to begin parsing. If not NULL, on output the offset at which parsing ended. 647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors 648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The value of the parsed integer 649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_parse 650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_parseDouble 651b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_format 652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_formatInt64 653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_formatDouble 654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.8 655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int64_t U_EXPORT2 657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_parseInt64(const UNumberFormat* fmt, 658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar* text, 659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t textLength, 660b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t *parsePos /* 0 = start */, 661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *status); 662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Parse a string into a double using a UNumberFormat. 665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* The string will be parsed according to the UNumberFormat's locale. 666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to use. 667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param text The text to parse. 668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param textLength The length of text, or -1 if null-terminated. 66959d709d503bab6e2b61931737e662dd293b40578ccornelius* @param parsePos If not NULL, on input a pointer to an integer specifying the offset at which 67059d709d503bab6e2b61931737e662dd293b40578ccornelius* to begin parsing. If not NULL, on output the offset at which parsing ended. 671b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors 672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The value of the parsed double 673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_parse 674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_parseInt64 675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_format 676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_formatInt64 677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_formatDouble 678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE double U_EXPORT2 681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_parseDouble( const UNumberFormat* fmt, 682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar* text, 683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t textLength, 684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t *parsePos /* 0 = start */, 685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *status); 686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 68750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 68850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/** 68950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* Parse a number from a string into an unformatted numeric string using a UNumberFormat. 69050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* The input string will be parsed according to the UNumberFormat's locale. 69150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* The syntax of the output is a "numeric string" 69250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* as defined in the Decimal Arithmetic Specification, available at 69350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* http://speleotrove.com/decimal 69450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @param fmt The formatter to use. 69550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @param text The text to parse. 69650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @param textLength The length of text, or -1 if null-terminated. 69759d709d503bab6e2b61931737e662dd293b40578ccornelius* @param parsePos If not NULL, on input a pointer to an integer specifying the offset at which 69859d709d503bab6e2b61931737e662dd293b40578ccornelius* to begin parsing. If not NULL, on output the offset at which parsing ended. 69950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @param outBuf A (char *) buffer to receive the parsed number as a string. The output string 70050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* will be nul-terminated if there is sufficient space. 70150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @param outBufLength The size of the output buffer. May be zero, in which case 70250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* the outBuf pointer may be NULL, and the function will return the 70350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* size of the output string. 70450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @param status A pointer to an UErrorCode to receive any errors 70550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @return the length of the output string, not including any terminating nul. 70650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @see unum_parse 70750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @see unum_parseInt64 70850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @see unum_format 70950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @see unum_formatInt64 71050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* @see unum_formatDouble 71127f654740f2a26ad62a5c155af9199af9e69b889claireho* @stable ICU 4.4 71250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho*/ 71327f654740f2a26ad62a5c155af9199af9e69b889clairehoU_STABLE int32_t U_EXPORT2 71450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehounum_parseDecimal(const UNumberFormat* fmt, 71550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const UChar* text, 71650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t textLength, 71750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t *parsePos /* 0 = start */, 71850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho char *outBuf, 71950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t outBufLength, 72050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode *status); 72150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 722b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Parse a string into a double and a currency using a UNumberFormat. 724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The string will be parsed according to the UNumberFormat's locale. 725b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param fmt the formatter to use 726b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param text the text to parse 727b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param textLength the length of text, or -1 if null-terminated 728b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param parsePos a pointer to an offset index into text at which to 729b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * begin parsing. On output, *parsePos will point after the last 73059d709d503bab6e2b61931737e662dd293b40578ccornelius * parsed character. This parameter may be NULL, in which case parsing 731b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * begins at offset 0. 732b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param currency a pointer to the buffer to receive the parsed null- 733b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * terminated currency. This buffer must have a capacity of at least 734b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 4 UChars. 735b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status a pointer to an input-output UErrorCode 736b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return the parsed double 737b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see unum_parseDouble 738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see unum_formatDoubleCurrency 739b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 741b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE double U_EXPORT2 742b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_parseDoubleCurrency(const UNumberFormat* fmt, 743b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar* text, 744b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t textLength, 745b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t* parsePos, /* 0 = start */ 746b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar* currency, 747b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode* status); 748b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 74959d709d503bab6e2b61931737e662dd293b40578ccornelius/** 75059d709d503bab6e2b61931737e662dd293b40578ccornelius * Parse a UChar string into a UFormattable. 75159d709d503bab6e2b61931737e662dd293b40578ccornelius * Example code: 75259d709d503bab6e2b61931737e662dd293b40578ccornelius * \snippet test/cintltst/cnumtst.c unum_parseToUFormattable 75359d709d503bab6e2b61931737e662dd293b40578ccornelius * @param fmt the formatter to use 75459d709d503bab6e2b61931737e662dd293b40578ccornelius * @param result the UFormattable to hold the result. If NULL, a new UFormattable will be allocated (which the caller must close with ufmt_close). 75559d709d503bab6e2b61931737e662dd293b40578ccornelius * @param text the text to parse 75659d709d503bab6e2b61931737e662dd293b40578ccornelius * @param textLength the length of text, or -1 if null-terminated 75759d709d503bab6e2b61931737e662dd293b40578ccornelius * @param parsePos a pointer to an offset index into text at which to 75859d709d503bab6e2b61931737e662dd293b40578ccornelius * begin parsing. On output, *parsePos will point after the last 75959d709d503bab6e2b61931737e662dd293b40578ccornelius * parsed character. This parameter may be NULL in which case parsing 76059d709d503bab6e2b61931737e662dd293b40578ccornelius * begins at offset 0. 76159d709d503bab6e2b61931737e662dd293b40578ccornelius * @param status a pointer to an input-output UErrorCode 76259d709d503bab6e2b61931737e662dd293b40578ccornelius * @return the UFormattable. Will be ==result unless NULL was passed in for result, in which case it will be the newly opened UFormattable. 76359d709d503bab6e2b61931737e662dd293b40578ccornelius * @see ufmt_getType 76459d709d503bab6e2b61931737e662dd293b40578ccornelius * @see ufmt_close 765f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * @stable ICU 52 76659d709d503bab6e2b61931737e662dd293b40578ccornelius */ 767f9878a236aa0d9662d8e40cafdaf2e04cd615835ccorneliusU_STABLE UFormattable* U_EXPORT2 76859d709d503bab6e2b61931737e662dd293b40578ccorneliusunum_parseToUFormattable(const UNumberFormat* fmt, 76959d709d503bab6e2b61931737e662dd293b40578ccornelius UFormattable *result, 77059d709d503bab6e2b61931737e662dd293b40578ccornelius const UChar* text, 77159d709d503bab6e2b61931737e662dd293b40578ccornelius int32_t textLength, 77259d709d503bab6e2b61931737e662dd293b40578ccornelius int32_t* parsePos, /* 0 = start */ 77359d709d503bab6e2b61931737e662dd293b40578ccornelius UErrorCode* status); 77459d709d503bab6e2b61931737e662dd293b40578ccornelius 775b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 776b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Set the pattern used by a UNumberFormat. This can only be used 77754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * on a DecimalFormat, other formats return U_UNSUPPORTED_ERROR 778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * in the status. 779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param format The formatter to set. 780b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param localized TRUE if the pattern is localized, FALSE otherwise. 781b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pattern The new pattern 782b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternLength The length of pattern, or -1 if null-terminated. 783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param parseError A pointer to UParseError to recieve information 784b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * about errors occurred during parsing, or NULL if no parse error 785b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * information is desired. 786b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status A pointer to an input-output UErrorCode. 787b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see unum_toPattern 788b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see DecimalFormat 789b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 791b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE void U_EXPORT2 792b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_applyPattern( UNumberFormat *format, 793b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool localized, 794b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *pattern, 795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t patternLength, 796b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UParseError *parseError, 797b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *status 798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ); 799b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 800b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 801b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Get a locale for which decimal formatting patterns are available. 802b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* A UNumberFormat in a locale returned by this function will perform the correct 803b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* formatting and parsing for the locale. The results of this call are not 804b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* valid for rule-based number formats. 805b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param localeIndex The index of the desired locale. 806b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return A locale for which number formatting patterns are available, or 0 if none. 807b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_countAvailable 808b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 809b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 810b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE const char* U_EXPORT2 811b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruunum_getAvailable(int32_t localeIndex); 812b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 813b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 814b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Determine how many locales have decimal formatting patterns available. The 815b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* results of this call are not valid for rule-based number formats. 816b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* This function is useful for determining the loop ending condition for 817b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* calls to {@link #unum_getAvailable }. 818b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The number of locales for which decimal formatting patterns are available. 819b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_getAvailable 820b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 821b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 822b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 823b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_countAvailable(void); 824b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 825103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#if UCONFIG_HAVE_PARSEALLINPUT 826fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius/* The UNumberFormatAttributeValue type cannot be #ifndef U_HIDE_INTERNAL_API, needed for .h variable declaration */ 827103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/** 828103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @internal 829103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 830103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliustypedef enum UNumberFormatAttributeValue { 831fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#ifndef U_HIDE_INTERNAL_API 832103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @internal */ 833103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_NO = 0, 834103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @internal */ 835103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_YES = 1, 836103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @internal */ 837103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_MAYBE = 2 838fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#endif /* U_HIDE_INTERNAL_API */ 839103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} UNumberFormatAttributeValue; 840103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif 841103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 842b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** The possible UNumberFormat numeric attributes @stable ICU 2.0 */ 843b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef enum UNumberFormatAttribute { 844b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Parse integers only */ 845b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_PARSE_INT_ONLY, 846b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Use grouping separator */ 847b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_GROUPING_USED, 848b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Always show decimal point */ 849b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_DECIMAL_ALWAYS_SHOWN, 850b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Maximum integer digits */ 851b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_MAX_INTEGER_DIGITS, 852b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Minimum integer digits */ 853b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_MIN_INTEGER_DIGITS, 854b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Integer digits */ 855b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_INTEGER_DIGITS, 856b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Maximum fraction digits */ 857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_MAX_FRACTION_DIGITS, 858b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Minimum fraction digits */ 859b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_MIN_FRACTION_DIGITS, 860b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Fraction digits */ 861b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_FRACTION_DIGITS, 862b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Multiplier */ 863b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_MULTIPLIER, 864b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Grouping size */ 865b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_GROUPING_SIZE, 866b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Rounding Mode */ 867b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_ROUNDING_MODE, 868b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Rounding increment */ 869b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_ROUNDING_INCREMENT, 870b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** The width to which the output of <code>format()</code> is padded. */ 871b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_FORMAT_WIDTH, 872b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** The position at which padding will take place. */ 873b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_PADDING_POSITION, 874b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Secondary grouping size */ 875b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_SECONDARY_GROUPING_SIZE, 876b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Use significant digits 877b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 */ 878b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_SIGNIFICANT_DIGITS_USED, 879b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Minimum significant digits 880b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 */ 881b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_MIN_SIGNIFICANT_DIGITS, 882b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Maximum significant digits 883b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 */ 884b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_MAX_SIGNIFICANT_DIGITS, 885b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Lenient parse mode used by rule-based formats. 886b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 887b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 88854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UNUM_LENIENT_PARSE, 889103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#if UCONFIG_HAVE_PARSEALLINPUT 890103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** Consume all input. (may use fastpath). Set to UNUM_YES (require fastpath), UNUM_NO (skip fastpath), or UNUM_MAYBE (heuristic). 89154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * This is an internal ICU API. Do not use. 892103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @internal 893103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 89459d709d503bab6e2b61931737e662dd293b40578ccornelius UNUM_PARSE_ALL_INPUT = UNUM_LENIENT_PARSE + 1, 895103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif 8968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 8978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Scale, which adjusts the position of the 8988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * decimal point when formatting. Amounts will be multiplied by 10 ^ (scale) 8998393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * before they are formatted. The default value for the scale is 0 ( no adjustment ). 9008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * 9018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * <p>Example: setting the scale to 3, 123 formats as "123,000" 9028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * <p>Example: setting the scale to -4, 123 formats as "0.0123" 9038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * 904fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51 */ 9058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UNUM_SCALE = UNUM_LENIENT_PARSE + 2, 90659d709d503bab6e2b61931737e662dd293b40578ccornelius 9078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#ifndef U_HIDE_INTERNAL_API 90854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius /** Count of "regular" numeric attributes. 90954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @internal */ 91059d709d503bab6e2b61931737e662dd293b40578ccornelius UNUM_NUMERIC_ATTRIBUTE_COUNT = UNUM_LENIENT_PARSE + 3, 911fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#endif /* U_HIDE_INTERNAL_API */ 91254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 913f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius#ifndef U_HIDE_DRAFT_API 914f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius /** 915f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * if this attribute is set to 0, it is set to UNUM_CURRENCY_STANDARD purpose, 916f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * otherwise it is UNUM_CURRENCY_CASH purpose 917f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * Default: 0 (UNUM_CURRENCY_STANDARD purpose) 918f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * @draft ICU 54 919f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius */ 920f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_CURRENCY_USAGE = UNUM_LENIENT_PARSE + 4, 921f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius#endif /* U_HIDE_DRAFT_API */ 922f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius 923fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius /* The following cannot be #ifndef U_HIDE_INTERNAL_API, needed in .h file variable declararions */ 92454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius /** One below the first bitfield-boolean item. 92554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * All items after this one are stored in boolean form. 92654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @internal */ 92754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UNUM_MAX_NONBOOLEAN_ATTRIBUTE = 0x0FFF, 92854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 92954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius /** If 1, specifies that if setting the "max integer digits" attribute would truncate a value, set an error status rather than silently truncating. 93054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * For example, formatting the value 1234 with 4 max int digits would succeed, but formatting 12345 would fail. There is no effect on parsing. 93154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Default: 0 (not set) 93259d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 93354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */ 9348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UNUM_FORMAT_FAIL_IF_MORE_THAN_MAX_DIGITS = 0x1000, 93554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius /** 93654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * 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. 93754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Has no effect on formatting. 93854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Default: 0 (unset) 93959d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50 94054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */ 94154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UNUM_PARSE_NO_EXPONENT, 94254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 943f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius#ifndef U_HIDE_DRAFT_API 944f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius /** 945f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * if this attribute is set to 1, specifies that, if the pattern contains a 946f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * decimal mark the input is required to have one. If this attribute is set to 0, 947f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * specifies that input does not have to contain a decimal mark. 948f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * Has no effect on formatting. 949f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * Default: 0 (unset) 950f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * @draft ICU 54 951f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius */ 952f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_PARSE_DECIMAL_MARK_REQUIRED = UNUM_PARSE_NO_EXPONENT+1, 953f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius#endif /* U_HIDE_DRAFT_API */ 954f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius 955fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius /* The following cannot be #ifndef U_HIDE_INTERNAL_API, needed in .h file variable declararions */ 95654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius /** Limit of boolean attributes. 95754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @internal */ 958f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_LIMIT_BOOLEAN_ATTRIBUTE = UNUM_PARSE_NO_EXPONENT+2 959b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} UNumberFormatAttribute; 960b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 961b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 962b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Get a numeric attribute associated with a UNumberFormat. 963b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* An example of a numeric attribute is the number of integer digits a formatter will produce. 964b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to query. 965b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param attr The attribute to query; one of UNUM_PARSE_INT_ONLY, UNUM_GROUPING_USED, 966b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* UNUM_DECIMAL_ALWAYS_SHOWN, UNUM_MAX_INTEGER_DIGITS, UNUM_MIN_INTEGER_DIGITS, UNUM_INTEGER_DIGITS, 967b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* UNUM_MAX_FRACTION_DIGITS, UNUM_MIN_FRACTION_DIGITS, UNUM_FRACTION_DIGITS, UNUM_MULTIPLIER, 9688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius* UNUM_GROUPING_SIZE, UNUM_ROUNDING_MODE, UNUM_FORMAT_WIDTH, UNUM_PADDING_POSITION, UNUM_SECONDARY_GROUPING_SIZE, 9698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius* UNUM_SCALE. 970b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The value of attr. 971b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_setAttribute 972b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_getDoubleAttribute 973b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_setDoubleAttribute 974b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_getTextAttribute 975b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_setTextAttribute 976b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 977b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 978b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 979b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_getAttribute(const UNumberFormat* fmt, 980b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNumberFormatAttribute attr); 981b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 982b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 983b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Set a numeric attribute associated with a UNumberFormat. 984b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* An example of a numeric attribute is the number of integer digits a formatter will produce. If the 985b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* formatter does not understand the attribute, the call is ignored. Rule-based formatters only understand 986b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* the lenient-parse attribute. 987b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to set. 988b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param attr The attribute to set; one of UNUM_PARSE_INT_ONLY, UNUM_GROUPING_USED, 989b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* UNUM_DECIMAL_ALWAYS_SHOWN, UNUM_MAX_INTEGER_DIGITS, UNUM_MIN_INTEGER_DIGITS, UNUM_INTEGER_DIGITS, 990b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* UNUM_MAX_FRACTION_DIGITS, UNUM_MIN_FRACTION_DIGITS, UNUM_FRACTION_DIGITS, UNUM_MULTIPLIER, 991b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* UNUM_GROUPING_SIZE, UNUM_ROUNDING_MODE, UNUM_FORMAT_WIDTH, UNUM_PADDING_POSITION, UNUM_SECONDARY_GROUPING_SIZE, 9928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius* UNUM_LENIENT_PARSE, or UNUM_SCALE. 993b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param newValue The new value of attr. 994b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_getAttribute 995b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_getDoubleAttribute 996b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_setDoubleAttribute 997b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_getTextAttribute 998b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_setTextAttribute 999b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 1000b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 1001b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE void U_EXPORT2 1002b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_setAttribute( UNumberFormat* fmt, 1003b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNumberFormatAttribute attr, 1004b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t newValue); 1005b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1006b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1007b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1008b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Get a numeric attribute associated with a UNumberFormat. 1009b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* An example of a numeric attribute is the number of integer digits a formatter will produce. 1010b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* If the formatter does not understand the attribute, -1 is returned. 1011b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to query. 1012b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param attr The attribute to query; e.g. UNUM_ROUNDING_INCREMENT. 1013b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The value of attr. 1014b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_getAttribute 1015b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_setAttribute 1016b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_setDoubleAttribute 1017b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_getTextAttribute 1018b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_setTextAttribute 1019b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 1020b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 1021b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE double U_EXPORT2 1022b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_getDoubleAttribute(const UNumberFormat* fmt, 1023b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNumberFormatAttribute attr); 1024b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1025b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1026b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Set a numeric attribute associated with a UNumberFormat. 1027b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* An example of a numeric attribute is the number of integer digits a formatter will produce. 1028b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* If the formatter does not understand the attribute, this call is ignored. 1029b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to set. 1030b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param attr The attribute to set; e.g. UNUM_ROUNDING_INCREMENT. 1031b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param newValue The new value of attr. 1032b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_getAttribute 1033b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_setAttribute 1034b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_getDoubleAttribute 1035b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_getTextAttribute 1036b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_setTextAttribute 1037b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 1038b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 1039b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE void U_EXPORT2 1040b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_setDoubleAttribute( UNumberFormat* fmt, 1041b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNumberFormatAttribute attr, 1042b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru double newValue); 1043b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1044b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** The possible UNumberFormat text attributes @stable ICU 2.0*/ 1045b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef enum UNumberFormatTextAttribute { 1046b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Positive prefix */ 1047b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_POSITIVE_PREFIX, 1048b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Positive suffix */ 1049b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_POSITIVE_SUFFIX, 1050b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Negative prefix */ 1051b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_NEGATIVE_PREFIX, 1052b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Negative suffix */ 1053b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_NEGATIVE_SUFFIX, 1054b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** The character used to pad to the format width. */ 1055b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_PADDING_CHARACTER, 1056b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** The ISO currency code */ 1057b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_CURRENCY_CODE, 1058b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1059f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * The default rule set, such as "%spellout-numbering-year:", "%spellout-cardinal:", 1060f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * "%spellout-ordinal-masculine-plural:", "%spellout-ordinal-feminine:", or 1061f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * "%spellout-ordinal-neuter:". The available public rulesets can be listed using 1062f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * unum_getTextAttribute with UNUM_PUBLIC_RULESETS. This is only available with 1063f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * rule-based formatters. 1064b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 1065b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1066b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_DEFAULT_RULESET, 1067b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1068b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The public rule sets. This is only available with rule-based formatters. 1069b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is a read-only attribute. The public rulesets are returned as a 1070f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * single string, with each ruleset name delimited by ';' (semicolon). See the 1071f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * CLDR LDML spec for more information about RBNF rulesets: 1072f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * http://www.unicode.org/reports/tr35/tr35-numbers.html#Rule-Based_Number_Formatting 1073b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 1074b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1075b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_PUBLIC_RULESETS 1076b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} UNumberFormatTextAttribute; 1077b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1078b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1079b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Get a text attribute associated with a UNumberFormat. 1080b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* An example of a text attribute is the suffix for positive numbers. If the formatter 108154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius* does not understand the attribute, U_UNSUPPORTED_ERROR is returned as the status. 1082b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Rule-based formatters only understand UNUM_DEFAULT_RULESET and UNUM_PUBLIC_RULESETS. 1083b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to query. 1084b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param tag The attribute to query; one of UNUM_POSITIVE_PREFIX, UNUM_POSITIVE_SUFFIX, 1085b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* UNUM_NEGATIVE_PREFIX, UNUM_NEGATIVE_SUFFIX, UNUM_PADDING_CHARACTER, UNUM_CURRENCY_CODE, 1086b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* UNUM_DEFAULT_RULESET, or UNUM_PUBLIC_RULESETS. 1087b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param result A pointer to a buffer to receive the attribute. 1088b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param resultLength The maximum size of result. 1089b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors 1090b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The total buffer size needed; if greater than resultLength, the output was truncated. 1091b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_setTextAttribute 1092b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_getAttribute 1093b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_setAttribute 1094b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 1095b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 1096b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 1097b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_getTextAttribute( const UNumberFormat* fmt, 1098b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNumberFormatTextAttribute tag, 1099b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar* result, 1100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t resultLength, 1101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode* status); 1102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Set a text attribute associated with a UNumberFormat. 1105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* An example of a text attribute is the suffix for positive numbers. Rule-based formatters 1106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* only understand UNUM_DEFAULT_RULESET. 1107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to set. 1108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param tag The attribute to set; one of UNUM_POSITIVE_PREFIX, UNUM_POSITIVE_SUFFIX, 1109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* UNUM_NEGATIVE_PREFIX, UNUM_NEGATIVE_SUFFIX, UNUM_PADDING_CHARACTER, UNUM_CURRENCY_CODE, 1110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* or UNUM_DEFAULT_RULESET. 1111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param newValue The new value of attr. 1112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param newValueLength The length of newValue, or -1 if null-terminated. 1113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors 1114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_getTextAttribute 1115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_getAttribute 1116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_setAttribute 1117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 1118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 1119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE void U_EXPORT2 1120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_setTextAttribute( UNumberFormat* fmt, 1121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNumberFormatTextAttribute tag, 1122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar* newValue, 1123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t newValueLength, 1124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *status); 1125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Extract the pattern from a UNumberFormat. The pattern will follow 1128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the DecimalFormat pattern syntax. 1129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param fmt The formatter to query. 1130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param isPatternLocalized TRUE if the pattern should be localized, 1131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * FALSE otherwise. This is ignored if the formatter is a rule-based 1132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * formatter. 1133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param result A pointer to a buffer to receive the pattern. 1134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param resultLength The maximum size of result. 1135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status A pointer to an input-output UErrorCode. 1136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The total buffer size needed; if greater than resultLength, 1137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the output was truncated. 1138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see unum_applyPattern 1139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see DecimalFormat 1140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 1141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 1143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_toPattern( const UNumberFormat* fmt, 1144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool isPatternLocalized, 1145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar* result, 1146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t resultLength, 1147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode* status); 1148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Constants for specifying a number format symbol. 1152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 1153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef enum UNumberFormatSymbol { 1155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** The decimal separator */ 1156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_DECIMAL_SEPARATOR_SYMBOL = 0, 1157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** The grouping separator */ 1158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_GROUPING_SEPARATOR_SYMBOL = 1, 1159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** The pattern separator */ 1160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_PATTERN_SEPARATOR_SYMBOL = 2, 1161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** The percent sign */ 1162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_PERCENT_SYMBOL = 3, 1163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Zero*/ 1164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_ZERO_DIGIT_SYMBOL = 4, 1165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Character representing a digit in the pattern */ 1166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_DIGIT_SYMBOL = 5, 1167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** The minus sign */ 1168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_MINUS_SIGN_SYMBOL = 6, 1169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** The plus sign */ 1170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_PLUS_SIGN_SYMBOL = 7, 1171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** The currency symbol */ 1172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_CURRENCY_SYMBOL = 8, 1173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** The international currency symbol */ 1174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_INTL_CURRENCY_SYMBOL = 9, 1175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** The monetary separator */ 1176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_MONETARY_SEPARATOR_SYMBOL = 10, 1177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** The exponential symbol */ 1178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_EXPONENTIAL_SYMBOL = 11, 1179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Per mill symbol */ 1180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_PERMILL_SYMBOL = 12, 1181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Escape padding character */ 1182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_PAD_ESCAPE_SYMBOL = 13, 1183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Infinity symbol */ 1184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_INFINITY_SYMBOL = 14, 1185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Nan symbol */ 1186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_NAN_SYMBOL = 15, 1187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Significant digit symbol 1188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 */ 1189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNUM_SIGNIFICANT_DIGIT_SYMBOL = 16, 1190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** The monetary grouping separator 1191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.6 1192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1193103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UNUM_MONETARY_GROUPING_SEPARATOR_SYMBOL = 17, 119427f654740f2a26ad62a5c155af9199af9e69b889claireho /** One 1195103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.6 119627f654740f2a26ad62a5c155af9199af9e69b889claireho */ 119727f654740f2a26ad62a5c155af9199af9e69b889claireho UNUM_ONE_DIGIT_SYMBOL = 18, 119827f654740f2a26ad62a5c155af9199af9e69b889claireho /** Two 1199103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.6 120027f654740f2a26ad62a5c155af9199af9e69b889claireho */ 120127f654740f2a26ad62a5c155af9199af9e69b889claireho UNUM_TWO_DIGIT_SYMBOL = 19, 120227f654740f2a26ad62a5c155af9199af9e69b889claireho /** Three 1203103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.6 120427f654740f2a26ad62a5c155af9199af9e69b889claireho */ 120527f654740f2a26ad62a5c155af9199af9e69b889claireho UNUM_THREE_DIGIT_SYMBOL = 20, 120627f654740f2a26ad62a5c155af9199af9e69b889claireho /** Four 1207103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.6 120827f654740f2a26ad62a5c155af9199af9e69b889claireho */ 120927f654740f2a26ad62a5c155af9199af9e69b889claireho UNUM_FOUR_DIGIT_SYMBOL = 21, 121027f654740f2a26ad62a5c155af9199af9e69b889claireho /** Five 1211103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.6 121227f654740f2a26ad62a5c155af9199af9e69b889claireho */ 121327f654740f2a26ad62a5c155af9199af9e69b889claireho UNUM_FIVE_DIGIT_SYMBOL = 22, 121427f654740f2a26ad62a5c155af9199af9e69b889claireho /** Six 1215103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.6 121627f654740f2a26ad62a5c155af9199af9e69b889claireho */ 121727f654740f2a26ad62a5c155af9199af9e69b889claireho UNUM_SIX_DIGIT_SYMBOL = 23, 121827f654740f2a26ad62a5c155af9199af9e69b889claireho /** Seven 1219103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.6 122027f654740f2a26ad62a5c155af9199af9e69b889claireho */ 122127f654740f2a26ad62a5c155af9199af9e69b889claireho UNUM_SEVEN_DIGIT_SYMBOL = 24, 122227f654740f2a26ad62a5c155af9199af9e69b889claireho /** Eight 1223103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.6 122427f654740f2a26ad62a5c155af9199af9e69b889claireho */ 122527f654740f2a26ad62a5c155af9199af9e69b889claireho UNUM_EIGHT_DIGIT_SYMBOL = 25, 122627f654740f2a26ad62a5c155af9199af9e69b889claireho /** Nine 1227103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.6 122827f654740f2a26ad62a5c155af9199af9e69b889claireho */ 122927f654740f2a26ad62a5c155af9199af9e69b889claireho UNUM_NINE_DIGIT_SYMBOL = 26, 1230f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius 1231f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius#ifndef U_HIDE_DRAFT_API 1232f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius /** Multiplication sign 1233f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * @draft ICU 54 1234f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius */ 1235f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_EXPONENT_MULTIPLICATION_SYMBOL = 27, 1236f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius#endif /* U_HIDE_DRAFT_API */ 1237f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius 1238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** count symbol constants */ 1239f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius UNUM_FORMAT_SYMBOL_COUNT = 28 1240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} UNumberFormatSymbol; 1241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Get a symbol associated with a UNumberFormat. 1244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* A UNumberFormat uses symbols to represent the special locale-dependent 1245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* characters in a number, for example the percent sign. This API is not 1246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* supported for rule-based formatters. 1247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to query. 1248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param symbol The UNumberFormatSymbol constant for the symbol to get 1249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param buffer The string buffer that will receive the symbol string; 1250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* if it is NULL, then only the length of the symbol is returned 1251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param size The size of the string buffer 1252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors 1253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The length of the symbol; the buffer is not modified if 1254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* <code>length>=size</code> 1255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_setSymbol 1256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 1257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 1258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 1259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_getSymbol(const UNumberFormat *fmt, 1260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNumberFormatSymbol symbol, 1261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar *buffer, 1262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t size, 1263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *status); 1264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Set a symbol associated with a UNumberFormat. 1267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* A UNumberFormat uses symbols to represent the special locale-dependent 1268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* characters in a number, for example the percent sign. This API is not 1269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* supported for rule-based formatters. 1270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to set. 1271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param symbol The UNumberFormatSymbol constant for the symbol to set 1272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param value The string to set the symbol to 1273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param length The length of the string, or -1 for a zero-terminated string 1274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors. 1275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see unum_getSymbol 1276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 1277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 1278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE void U_EXPORT2 1279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_setSymbol(UNumberFormat *fmt, 1280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UNumberFormatSymbol symbol, 1281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *value, 1282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t length, 1283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *status); 1284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Get the locale for this number format object. 1288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * You can choose between valid and actual locale. 1289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param fmt The formatter to get the locale from 1290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param type type of the locale we're looking for (valid or actual) 1291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status error code for the operation 1292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return the locale name 1293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.8 1294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE const char* U_EXPORT2 1296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunum_getLocaleByType(const UNumberFormat *fmt, 1297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ULocDataLocaleType type, 1298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode* status); 1299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1300fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius/** 1301fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * Set a particular UDisplayContext value in the formatter, such as 1302fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * UDISPCTX_CAPITALIZATION_FOR_STANDALONE. 1303fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @param fmt The formatter for which to set a UDisplayContext value. 1304fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @param value The UDisplayContext value to set. 1305fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @param status A pointer to an UErrorCode to receive any errors 13061b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * @stable ICU 53 1307fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius */ 13081b7d32f919554dda9c193b32188251337bc756f1Fredrik RoubertU_STABLE void U_EXPORT2 1309fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusunum_setContext(UNumberFormat* fmt, UDisplayContext value, UErrorCode* status); 1310fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 1311fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius/** 1312fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * Get the formatter's UDisplayContext value for the specified UDisplayContextType, 1313fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * such as UDISPCTX_TYPE_CAPITALIZATION. 1314fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @param fmt The formatter to query. 1315fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @param type The UDisplayContextType whose value to return 1316fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @param status A pointer to an UErrorCode to receive any errors 1317fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @return The UDisplayContextValue for the specified type. 13181b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * @stable ICU 53 1319fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius */ 13201b7d32f919554dda9c193b32188251337bc756f1Fredrik RoubertU_STABLE UDisplayContext U_EXPORT2 1321fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusunum_getContext(const UNumberFormat *fmt, UDisplayContextType type, UErrorCode* status); 1322fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 1323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */ 1324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 1326