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******************************************************************************** 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* File NUMFMT.H 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Modification History: 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Date Name Description 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 02/19/97 aliu Converted from java. 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 03/18/97 clhuang Updated per C++ implementation. 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 04/17/97 aliu Changed DigitCount to int per code review. 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 07/20/98 stephen JDK 1.2 sync up. Added scientific support. 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Changed naming conventions to match C++ guidelines 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Derecated Java style constants (eg, INTEGER_FIELD) 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************** 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef NUMFMT_H 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define NUMFMT_H 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h" 26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 2850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * \file 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \brief C++ API: Abstract base class for all number formats. 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 3150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/unistr.h" 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/format.h" 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/unum.h" // UNumberFormatStyle 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/locid.h" 3850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/stringpiece.h" 39103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#include "unicode/curramt.h" 40fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#include "unicode/udisplaycontext.h" 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 42b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehoclass NumberFormatTest; 43b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_BEGIN 45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 46fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusclass SharedNumberFormat; 47fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_SERVICE 49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass NumberFormatFactory; 50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass StringEnumeration; 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Abstract base class for all number formats. Provides interface for 56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * formatting and parsing a number. Also provides methods for 57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * determining which locales have number formats, and what their names 58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * are. 59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * NumberFormat helps you to format and parse numbers for any locale. 61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Your code can be completely independent of the locale conventions 62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * for decimal points, thousands-separators, or even the particular 63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * decimal digits used, or whether the number format is even decimal. 64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * To format a number for the current Locale, use one of the static 66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * factory methods: 67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \code 69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * double myNumber = 7.0; 70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UnicodeString myString; 71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UErrorCode success = U_ZERO_ERROR; 72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * NumberFormat* nf = NumberFormat::createInstance(success) 73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * nf->format(myNumber, myString); 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * cout << " Example 1: " << myString << endl; 75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \endcode 76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Note that there are additional factory methods within subclasses of 788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * NumberFormat. 798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * <P> 80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If you are formatting multiple numbers, it is more efficient to get 81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the format and use it multiple times so that the system doesn't 82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * have to fetch the information about the local language and country 83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * conventions multiple times. 84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \code 86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UnicodeString myString; 87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UErrorCode success = U_ZERO_ERROR; 88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * nf = NumberFormat::createInstance( success ); 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * int32_t a[] = { 123, 3333, -1234567 }; 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * const int32_t a_len = sizeof(a) / sizeof(a[0]); 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * myString.remove(); 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * for (int32_t i = 0; i < a_len; i++) { 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * nf->format(a[i], myString); 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * myString += " ; "; 95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * } 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * cout << " Example 2: " << myString << endl; 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \endcode 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * To format a number for a different Locale, specify it in the 100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * call to createInstance(). 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \code 103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * nf = NumberFormat::createInstance( Locale::FRENCH, success ); 104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \endcode 105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * You can use a NumberFormat to parse also. 107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \code 109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UErrorCode success; 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Formattable result(-999); // initialized with error code 111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * nf->parse(myString, result, success); 112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \endcode 113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Use createInstance to get the normal number format for that country. 115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * There are other static factory methods available. Use getCurrency 116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * to get the currency number format for that country. Use getPercent 117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * to get a format for displaying percentages. With this format, a 118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * fraction from 0.53 is displayed as 53%. 119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 120b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Starting from ICU 4.2, you can use createInstance() by passing in a 'style' 12150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * as parameter to get the correct instance. 12250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * For example, 123b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * use createInstance(...kNumberStyle...) to get the normal number format, 12450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * createInstance(...kPercentStyle...) to get a format for displaying 125b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * percentage, 12650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * createInstance(...kScientificStyle...) to get a format for displaying 127b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * scientific number, 12850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * createInstance(...kCurrencyStyle...) to get the currency number format, 129b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * in which the currency is represented by its symbol, for example, "$3.00". 13050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * createInstance(...kIsoCurrencyStyle...) to get the currency number format, 131b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * in which the currency is represented by its ISO code, for example "USD3.00". 132b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * createInstance(...kPluralCurrencyStyle...) to get the currency number format, 133b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * in which the currency is represented by its full name in plural format, 134b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * for example, "3.00 US dollars" or "1.00 US dollar". 135b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * <P> 136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * You can also control the display of numbers with such methods as 137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * getMinimumFractionDigits. If you want even more control over the 138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * format or parsing, or want to give your users more control, you can 139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * try casting the NumberFormat you get from the factory methods to a 140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * DecimalNumberFormat. This will work for the vast majority of 141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * countries; just remember to put it in a try block in case you 142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * encounter an unusual one. 143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * You can also use forms of the parse and format methods with 145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * ParsePosition and FieldPosition to allow you to: 146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <ul type=round> 147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <li>(a) progressively parse through pieces of a string. 148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <li>(b) align the decimal point and other areas. 149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </ul> 150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * For example, you can align numbers in two ways. 151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If you are using a monospaced font with spacing for alignment, you 153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * can pass the FieldPosition in your format call, with field = 154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * INTEGER_FIELD. On output, getEndIndex will be set to the offset 155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * between the last character of the integer and the decimal. Add 156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * (desiredSpaceCount - getEndIndex) spaces at the front of the 157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * string. 158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If you are using proportional fonts, instead of padding with 160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * spaces, measure the width of the string in pixels from the start to 161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * getEndIndex. Then move the pen by (desiredPixelWidth - 162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * widthToAlignmentPoint) before drawing the text. It also works 163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * where there is no decimal, but possibly additional characters at 164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the end, e.g. with parentheses in negative numbers: "(12)" for -12. 165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <em>User subclasses are not supported.</em> While clients may write 167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * subclasses, such code will not necessarily work and will not be 168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * guaranteed to work stably from release to release. 169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass U_I18N_API NumberFormat : public Format { 173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic: 174b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Alignment Field constants used to construct a FieldPosition object. 176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Signifies that the position of the integer part or fraction part of 177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * a formatted number should be returned. 178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 17950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Note: as of ICU 4.4, the values in this enum have been extended to 18050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * support identification of all number format fields, not just those 18150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * pertaining to alignment. 18250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 183103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * These constants are provided for backwards compatibility only. 184103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Please use the C style constants defined in the header file unum.h. 185103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * 186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see FieldPosition 187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru enum EAlignmentFields { 190103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 2.0 */ 191103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius kIntegerField = UNUM_INTEGER_FIELD, 192103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 2.0 */ 193103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius kFractionField = UNUM_FRACTION_FIELD, 194103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 2.0 */ 195103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius kDecimalSeparatorField = UNUM_DECIMAL_SEPARATOR_FIELD, 196103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 2.0 */ 197103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius kExponentSymbolField = UNUM_EXPONENT_SYMBOL_FIELD, 198103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 2.0 */ 199103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius kExponentSignField = UNUM_EXPONENT_SIGN_FIELD, 200103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 2.0 */ 201103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius kExponentField = UNUM_EXPONENT_FIELD, 202103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 2.0 */ 203103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius kGroupingSeparatorField = UNUM_GROUPING_SEPARATOR_FIELD, 204103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 2.0 */ 205103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius kCurrencyField = UNUM_CURRENCY_FIELD, 206103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 2.0 */ 207103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius kPercentField = UNUM_PERCENT_FIELD, 208103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 2.0 */ 209103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius kPermillField = UNUM_PERMILL_FIELD, 210103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 2.0 */ 211103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius kSignField = UNUM_SIGN_FIELD, 212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * These constants are provided for backwards compatibility only. 215103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Please use the constants defined in the header file unum.h. 216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 217103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 2.0 */ 218103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius INTEGER_FIELD = UNUM_INTEGER_FIELD, 219103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius /** @stable ICU 2.0 */ 220103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius FRACTION_FIELD = UNUM_FRACTION_FIELD 221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Destructor. 225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual ~NumberFormat(); 228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return true if the given Format objects are semantically equal. 231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Objects of different subclasses are considered unequal. 232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return true if the given Format objects are semantically equal. 233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual UBool operator==(const Format& other) const; 236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 23750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 23850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho using Format::format; 23950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format an object to produce a string. This method handles 242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Formattable objects with numeric types. If the Formattable 243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * object type is not a numeric type, then it returns a failing 244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UErrorCode. 245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param obj The object to format. 247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param appendTo Output parameter to receive result. 248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Result is appended to existing contents. 249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pos On input: an alignment field, if desired. 250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * On output: the offsets of the alignment field. 251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Output param filled with success/failure status. 252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return Reference to 'appendTo' parameter. 253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual UnicodeString& format(const Formattable& obj, 256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& appendTo, 257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition& pos, 258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& status) const; 259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 26150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Format an object to produce a string. This method handles 26250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Formattable objects with numeric types. If the Formattable 26350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * object type is not a numeric type, then it returns a failing 26450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * UErrorCode. 26550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 26650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param obj The object to format. 26750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param appendTo Output parameter to receive result. 26850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Result is appended to existing contents. 26950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param posIter On return, can be used to iterate over positions 27050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * of fields generated by this format call. Can be 27150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * NULL. 27250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param status Output param filled with success/failure status. 27350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return Reference to 'appendTo' parameter. 27427f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable 4.4 27550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 27650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& format(const Formattable& obj, 27750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString& appendTo, 27850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPositionIterator* posIter, 27950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode& status) const; 28050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 28150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Parse a string to produce an object. This methods handles 283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * parsing of numeric strings into Formattable objects with numeric 284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * types. 285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Before calling, set parse_pos.index to the offset you want to 287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * start parsing at in the source. After calling, parse_pos.index 288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * indicates the position after the successfully parsed text. If 289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * an error occurs, parse_pos.index is unchanged. 290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * When parsing, leading whitespace is discarded (with successful 292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * parse), while trailing whitespace is left as is. 293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * See Format::parseObject() for more. 295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param source The string to be parsed into an object. 297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param result Formattable to be set to the parse result. 298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If parse fails, return contents are undefined. 299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param parse_pos The position to start parsing at. Upon return 300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * this param is set to the position after the 301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * last character successfully parsed. If the 302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * source is not parsed successfully, this param 303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * will remain unchanged. 304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A newly created Formattable* object, or NULL 305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * on failure. The caller owns this and should 306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * delete it when done. 307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void parseObject(const UnicodeString& source, 310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Formattable& result, 311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition& parse_pos) const; 312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format a double number. These methods call the NumberFormat 315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * pure virtual format() methods with the default FieldPosition. 316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param number The value to be formatted. 318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param appendTo Output parameter to receive result. 319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Result is appended to existing contents. 320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return Reference to 'appendTo' parameter. 321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& format( double number, 324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& appendTo) const; 325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format a long number. These methods call the NumberFormat 328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * pure virtual format() methods with the default FieldPosition. 329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param number The value to be formatted. 331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param appendTo Output parameter to receive result. 332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Result is appended to existing contents. 333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return Reference to 'appendTo' parameter. 334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& format( int32_t number, 337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& appendTo) const; 338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format an int64 number. These methods call the NumberFormat 341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * pure virtual format() methods with the default FieldPosition. 342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param number The value to be formatted. 344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param appendTo Output parameter to receive result. 345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Result is appended to existing contents. 346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return Reference to 'appendTo' parameter. 347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.8 348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& format( int64_t number, 350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& appendTo) const; 351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format a double number. Concrete subclasses must implement 354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * these pure virtual methods. 355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param number The value to be formatted. 357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param appendTo Output parameter to receive result. 358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Result is appended to existing contents. 359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pos On input: an alignment field, if desired. 360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * On output: the offsets of the alignment field. 361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return Reference to 'appendTo' parameter. 362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual UnicodeString& format(double number, 365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& appendTo, 366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition& pos) const = 0; 367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 36854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Format a double number. By default, the parent function simply 36954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * calls the base class and does not return an error status. 37054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Therefore, the status may be ignored in some subclasses. 37154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * 37254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param number The value to be formatted. 37354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param appendTo Output parameter to receive result. 37454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Result is appended to existing contents. 37554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param pos On input: an alignment field, if desired. 37654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * On output: the offsets of the alignment field. 37754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param status error status 37854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @return Reference to 'appendTo' parameter. 37954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @internal 38054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */ 38154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius virtual UnicodeString& format(double number, 38254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString& appendTo, 38354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius FieldPosition& pos, 38454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UErrorCode &status) const; 38554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius /** 38650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Format a double number. Subclasses must implement 38750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * this method. 38850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 38950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param number The value to be formatted. 39050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param appendTo Output parameter to receive result. 39150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Result is appended to existing contents. 39250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param posIter On return, can be used to iterate over positions 39350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * of fields generated by this format call. 39450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Can be NULL. 39550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param status Output param filled with success/failure status. 39650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return Reference to 'appendTo' parameter. 39727f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable 4.4 39850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 39950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& format(double number, 40050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString& appendTo, 40150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPositionIterator* posIter, 40250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode& status) const; 40350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format a long number. Concrete subclasses must implement 405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * these pure virtual methods. 406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param number The value to be formatted. 408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param appendTo Output parameter to receive result. 409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Result is appended to existing contents. 410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pos On input: an alignment field, if desired. 411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * On output: the offsets of the alignment field. 412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return Reference to 'appendTo' parameter. 413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual UnicodeString& format(int32_t number, 416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& appendTo, 417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition& pos) const = 0; 418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 42054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Format a long number. Concrete subclasses may override 42154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * this function to provide status return. 42254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * 42354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param number The value to be formatted. 42454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param appendTo Output parameter to receive result. 42554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Result is appended to existing contents. 42654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param pos On input: an alignment field, if desired. 42754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * On output: the offsets of the alignment field. 42854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param status the output status. 42954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @return Reference to 'appendTo' parameter. 43054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @internal 43154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */ 43254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius virtual UnicodeString& format(int32_t number, 43354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString& appendTo, 43454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius FieldPosition& pos, 43554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UErrorCode &status) const; 43654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 43754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius /** 43850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Format an int32 number. Subclasses must implement 43950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * this method. 44050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 44150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param number The value to be formatted. 44250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param appendTo Output parameter to receive result. 44350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Result is appended to existing contents. 44450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param posIter On return, can be used to iterate over positions 44550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * of fields generated by this format call. 44650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Can be NULL. 44750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param status Output param filled with success/failure status. 44850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return Reference to 'appendTo' parameter. 44927f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable 4.4 45050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 45150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& format(int32_t number, 45250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString& appendTo, 45350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPositionIterator* posIter, 45450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode& status) const; 45550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format an int64 number. (Not abstract to retain compatibility 457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * with earlier releases, however subclasses should override this 458b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * method as it just delegates to format(int32_t number...); 459b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 460b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param number The value to be formatted. 461b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param appendTo Output parameter to receive result. 462b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Result is appended to existing contents. 463b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pos On input: an alignment field, if desired. 464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * On output: the offsets of the alignment field. 465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return Reference to 'appendTo' parameter. 466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.8 467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual UnicodeString& format(int64_t number, 469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& appendTo, 470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition& pos) const; 47154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 47254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius /** 47354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Format an int64 number. (Not abstract to retain compatibility 47454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * with earlier releases, however subclasses should override this 47554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * method as it just delegates to format(int32_t number...); 47654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * 47754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param number The value to be formatted. 47854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param appendTo Output parameter to receive result. 47954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Result is appended to existing contents. 48054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param pos On input: an alignment field, if desired. 48154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * On output: the offsets of the alignment field. 48254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @return Reference to 'appendTo' parameter. 48354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @internal 48454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */ 48554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius virtual UnicodeString& format(int64_t number, 48654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString& appendTo, 48754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius FieldPosition& pos, 48854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UErrorCode& status) const; 489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 49050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Format an int64 number. Subclasses must implement 49150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * this method. 49250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 49350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param number The value to be formatted. 49450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param appendTo Output parameter to receive result. 49550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Result is appended to existing contents. 49650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param posIter On return, can be used to iterate over positions 49750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * of fields generated by this format call. 49850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Can be NULL. 49950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param status Output param filled with success/failure status. 50050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return Reference to 'appendTo' parameter. 50127f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable 4.4 50250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 50350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& format(int64_t number, 50450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString& appendTo, 50550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPositionIterator* posIter, 50650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode& status) const; 50750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 50850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 50950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Format a decimal number. Subclasses must implement 51050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * this method. The syntax of the unformatted number is a "numeric string" 51150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * as defined in the Decimal Arithmetic Specification, available at 51250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * http://speleotrove.com/decimal 51350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 51450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param number The unformatted number, as a string, to be formatted. 51550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param appendTo Output parameter to receive result. 51650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Result is appended to existing contents. 51750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param posIter On return, can be used to iterate over positions 51850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * of fields generated by this format call. 51950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Can be NULL. 52050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param status Output param filled with success/failure status. 52150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return Reference to 'appendTo' parameter. 52227f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable 4.4 52350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 52450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& format(const StringPiece &number, 52550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString& appendTo, 52650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPositionIterator* posIter, 52750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode& status) const; 52850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehopublic: 52950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 53050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Format a decimal number. 53150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * The number is a DigitList wrapper onto a floating point decimal number. 53250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * The default implementation in NumberFormat converts the decimal number 53350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * to a double and formats that. Subclasses of NumberFormat that want 53450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * to specifically handle big decimal numbers must override this method. 53550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * class DecimalFormat does so. 53650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 53750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param number The number, a DigitList format Decimal Floating Point. 53850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param appendTo Output parameter to receive result. 53950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Result is appended to existing contents. 54050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param posIter On return, can be used to iterate over positions 54150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * of fields generated by this format call. 54250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param status Output param filled with success/failure status. 54350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return Reference to 'appendTo' parameter. 54450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @internal 54550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 54650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& format(const DigitList &number, 54750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString& appendTo, 54850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPositionIterator* posIter, 54950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode& status) const; 55050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 55150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 55250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Format a decimal number. 55350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * The number is a DigitList wrapper onto a floating point decimal number. 55450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * The default implementation in NumberFormat converts the decimal number 55550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * to a double and formats that. Subclasses of NumberFormat that want 55650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * to specifically handle big decimal numbers must override this method. 55750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * class DecimalFormat does so. 55850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 55950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param number The number, a DigitList format Decimal Floating Point. 56050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param appendTo Output parameter to receive result. 56150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Result is appended to existing contents. 56250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param pos On input: an alignment field, if desired. 56350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * On output: the offsets of the alignment field. 56450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param status Output param filled with success/failure status. 56550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return Reference to 'appendTo' parameter. 56650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @internal 56750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 56850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& format(const DigitList &number, 56950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString& appendTo, 57050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPosition& pos, 57150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode& status) const; 57250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 57350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehopublic: 57450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 576b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return a long if possible (e.g. within range LONG_MAX, 577b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * LONG_MAX], and with no decimals), otherwise a double. If 578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * IntegerOnly is set, will stop at a decimal point (or equivalent; 579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * e.g. for rational numbers "1 2/3", will stop after the 1). 580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 581b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If no object can be parsed, index is unchanged, and NULL is 582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * returned. 583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is a pure virtual which concrete subclasses must implement. 585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param text The text to be parsed. 587b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param result Formattable to be set to the parse result. 588b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If parse fails, return contents are undefined. 589b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param parsePosition The position to start parsing at on input. 590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * On output, moved to after the last successfully 591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * parse character. On parse failure, does not change. 592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void parse(const UnicodeString& text, 595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Formattable& result, 596b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition& parsePosition) const = 0; 597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Parse a string as a numeric value, and return a Formattable 600b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * numeric object. This method parses integers only if IntegerOnly 601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * is set. 602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param text The text to be parsed. 604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param result Formattable to be set to the parse result. 605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If parse fails, return contents are undefined. 606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Output parameter set to a failure error code 607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * when a failure occurs. 608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see NumberFormat::isParseIntegerOnly 609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 61154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius virtual void parse(const UnicodeString& text, 61254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius Formattable& result, 61354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UErrorCode& status) const; 614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Parses text from the given string as a currency amount. Unlike 617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the parse() method, this method will attempt to parse a generic 618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * currency name, searching for a match of this object's locale's 619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * currency display names, or for a 3-letter ISO currency code. 620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This method will fail if this format is not a currency format, 621b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * that is, if it does not contain the currency pattern symbol 622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * (U+00A4) in its prefix or suffix. 623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param text the string to parse 625103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param pos input-output position; on input, the position within text 626103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * to match; must have 0 <= pos.getIndex() < text.length(); 627103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * on output, the position after the last matched character. 628103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * If the parse fails, the position in unchanged upon output. 629103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @return if parse succeeds, a pointer to a newly-created CurrencyAmount 630103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * object (owned by the caller) containing information about 631103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * the parsed currency; if parse fails, this is NULL. 6328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @stable ICU 49 633b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 634103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius virtual CurrencyAmount* parseCurrency(const UnicodeString& text, 635103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ParsePosition& pos) const; 636b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return true if this format will parse numbers as integers 639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * only. For example in the English locale, with ParseIntegerOnly 640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * true, the string "1234." would be parsed as the integer value 641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1234 and parsing would stop at the "." character. Of course, 642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the exact format accepted by the parse operation is locale 643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * dependant and determined by sub-classes of NumberFormat. 644b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return true if this format will parse numbers as integers 645b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * only. 646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool isParseIntegerOnly(void) const; 649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 651b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Sets whether or not numbers should be parsed as integers only. 652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param value set True, this format will parse numbers as integers 653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * only. 654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see isParseIntegerOnly 655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void setParseIntegerOnly(UBool value); 658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 660b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Sets whether lenient parsing should be enabled (it is off by default). 661b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * 662b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param enable <code>TRUE</code> if lenient parsing should be used, 663b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * <code>FALSE</code> otherwise. 664103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.8 665b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 666b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho virtual void setLenient(UBool enable); 667b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 668b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 669b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Returns whether lenient parsing is enabled (it is off by default). 670b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * 671b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @return <code>TRUE</code> if lenient parsing is enabled, 672b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * <code>FALSE</code> otherwise. 673b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @see #setLenient 674103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.8 675b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 676b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho virtual UBool isLenient(void) const; 677b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 678b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns the default number format for the current default 680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * locale. The default format is one of the styles provided by 681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the other factory methods: getNumberInstance, 682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * getCurrencyInstance or getPercentInstance. Exactly which one 683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * is locale dependant. 684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static NumberFormat* U_EXPORT2 createInstance(UErrorCode&); 687b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 689b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns the default number format for the specified locale. 690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The default format is one of the styles provided by the other 691b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * factory methods: getNumberInstance, getCurrencyInstance or 692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * getPercentInstance. Exactly which one is locale dependant. 693b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param inLocale the given locale. 694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 695b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 696b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static NumberFormat* U_EXPORT2 createInstance(const Locale& inLocale, 697b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode&); 698b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 700b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Creates the specified decimal format style of the desired locale. 701b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param desiredLocale the given locale. 702b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param style the given style. 703b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param errorCode Output param filled with success/failure status. 704b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @return A new NumberFormat instance. 705103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @stable ICU 4.8 706b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 707b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho static NumberFormat* U_EXPORT2 createInstance(const Locale& desiredLocale, 708b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UNumberFormatStyle style, 709b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UErrorCode& errorCode); 710b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 711fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#ifndef U_HIDE_INTERNAL_API 712fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 713fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius /** 714fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * ICU use only. 715fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * Creates NumberFormat instance without using the cache. 716fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @internal 717fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius */ 718fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius static NumberFormat* internalCreateInstance( 719fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius const Locale& desiredLocale, 720fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UNumberFormatStyle style, 721fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UErrorCode& errorCode); 722fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 723fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius /** 724fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * ICU use only. 725fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * Returns handle to the shared, cached NumberFormat instance for given 726fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * locale. On success, caller must call removeRef() on returned value 727fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * once it is done with the shared instance. 728fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @internal 729fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius */ 730fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius static const SharedNumberFormat* U_EXPORT2 createSharedInstance( 731fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius const Locale& inLocale, UNumberFormatStyle style, UErrorCode& status); 732fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 733f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius#endif /* U_HIDE_INTERNAL_API */ 734fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 735b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 736b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns a currency format for the current default locale. 737b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 739b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static NumberFormat* U_EXPORT2 createCurrencyInstance(UErrorCode&); 740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 741b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 742b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns a currency format for the specified locale. 743b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param inLocale the given locale. 744b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 745b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 746b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static NumberFormat* U_EXPORT2 createCurrencyInstance(const Locale& inLocale, 747b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode&); 748b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 749b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 750b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns a percentage format for the current default locale. 751b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 752b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 753b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static NumberFormat* U_EXPORT2 createPercentInstance(UErrorCode&); 754b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 755b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 756b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns a percentage format for the specified locale. 757b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param inLocale the given locale. 758b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 759b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 760b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static NumberFormat* U_EXPORT2 createPercentInstance(const Locale& inLocale, 761b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode&); 762b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 763b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 764b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns a scientific format for the current default locale. 765b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 766b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 767b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static NumberFormat* U_EXPORT2 createScientificInstance(UErrorCode&); 768b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 769b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 770b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns a scientific format for the specified locale. 771b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param inLocale the given locale. 772b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 773b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 774b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static NumberFormat* U_EXPORT2 createScientificInstance(const Locale& inLocale, 775b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode&); 776b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 777b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Get the set of Locales for which NumberFormats are installed. 779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param count Output param to receive the size of the locales 780b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 781b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 782b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale* U_EXPORT2 getAvailableLocales(int32_t& count); 783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 784b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_SERVICE 785b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 786b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Register a new NumberFormatFactory. The factory will be adopted. 787fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * Because ICU may choose to cache NumberFormat objects internally, 788fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * this must be called at application startup, prior to any calls to 789fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * NumberFormat::createInstance to avoid undefined behavior. 790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param toAdopt the NumberFormatFactory instance to be adopted 791b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status the in/out status code, no special meanings are assigned 792b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return a registry key that can be used to unregister this factory 793b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.6 794b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static URegistryKey U_EXPORT2 registerFactory(NumberFormatFactory* toAdopt, UErrorCode& status); 796b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 797b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Unregister a previously-registered NumberFormatFactory using the key returned from the 799b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * register call. Key becomes invalid after a successful call and should not be used again. 800b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The NumberFormatFactory corresponding to the key will be deleted. 801fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * Because ICU may choose to cache NumberFormat objects internally, 802fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * this should be called during application shutdown, after all calls to 803fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * NumberFormat::createInstance to avoid undefined behavior. 804b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param key the registry key returned by a previous call to registerFactory 805b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status the in/out status code, no special meanings are assigned 806b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return TRUE if the factory for the key was successfully unregistered 807b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.6 808b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 809b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static UBool U_EXPORT2 unregister(URegistryKey key, UErrorCode& status); 810b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 811b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 812b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return a StringEnumeration over the locales available at the time of the call, 813b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * including registered locales. 814b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return a StringEnumeration over the locales available at the time of the call 815b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.6 816b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 817b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static StringEnumeration* U_EXPORT2 getAvailableLocales(void); 818b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* UCONFIG_NO_SERVICE */ 819b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 820b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 821b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns true if grouping is used in this format. For example, 822b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * in the English locale, with grouping on, the number 1234567 823b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * might be formatted as "1,234,567". The grouping separator as 824b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * well as the size of each group is locale dependant and is 825b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * determined by sub-classes of NumberFormat. 826b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see setGroupingUsed 827b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 828b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 829b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool isGroupingUsed(void) const; 830b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 831b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 832b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Set whether or not grouping will be used in this format. 833b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param newValue True, grouping will be used in this format. 834b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see getGroupingUsed 835b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 836b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 837b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void setGroupingUsed(UBool newValue); 838b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 839b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 840b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns the maximum number of digits allowed in the integer portion of a 841b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * number. 842b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return the maximum number of digits allowed in the integer portion of a 843b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * number. 844b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see setMaximumIntegerDigits 845b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 846b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 847b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t getMaximumIntegerDigits(void) const; 848b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 849b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 850b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Sets the maximum number of digits allowed in the integer portion of a 851b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * number. maximumIntegerDigits must be >= minimumIntegerDigits. If the 852b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * new value for maximumIntegerDigits is less than the current value 853b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * of minimumIntegerDigits, then minimumIntegerDigits will also be set to 854b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the new value. 855b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 856b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param newValue the new value for the maximum number of digits 857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * allowed in the integer portion of a number. 858b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see getMaximumIntegerDigits 859b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 860b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 861b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void setMaximumIntegerDigits(int32_t newValue); 862b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 863b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 864b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns the minimum number of digits allowed in the integer portion of a 865b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * number. 866b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return the minimum number of digits allowed in the integer portion of a 867b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * number. 868b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see setMinimumIntegerDigits 869b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 870b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 871b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t getMinimumIntegerDigits(void) const; 872b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 873b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 874b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Sets the minimum number of digits allowed in the integer portion of a 875b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * number. minimumIntegerDigits must be <= maximumIntegerDigits. If the 876b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * new value for minimumIntegerDigits exceeds the current value 877b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * of maximumIntegerDigits, then maximumIntegerDigits will also be set to 878b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the new value. 879b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param newValue the new value to be set. 880b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see getMinimumIntegerDigits 881b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 882b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 883b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void setMinimumIntegerDigits(int32_t newValue); 884b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 885b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 886b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns the maximum number of digits allowed in the fraction portion of a 887b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * number. 888b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return the maximum number of digits allowed in the fraction portion of a 889b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * number. 890b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see setMaximumFractionDigits 891b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 892b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 893b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t getMaximumFractionDigits(void) const; 894b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 895b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 896b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Sets the maximum number of digits allowed in the fraction portion of a 897b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * number. maximumFractionDigits must be >= minimumFractionDigits. If the 898b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * new value for maximumFractionDigits is less than the current value 899b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * of minimumFractionDigits, then minimumFractionDigits will also be set to 900b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the new value. 901b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param newValue the new value to be set. 902b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see getMaximumFractionDigits 903b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 904b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 905b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void setMaximumFractionDigits(int32_t newValue); 906b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 907b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 908b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns the minimum number of digits allowed in the fraction portion of a 909b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * number. 910b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return the minimum number of digits allowed in the fraction portion of a 911b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * number. 912b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see setMinimumFractionDigits 913b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 914b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 915b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t getMinimumFractionDigits(void) const; 916b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 917b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 918b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Sets the minimum number of digits allowed in the fraction portion of a 919b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * number. minimumFractionDigits must be <= maximumFractionDigits. If the 920b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * new value for minimumFractionDigits exceeds the current value 921b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * of maximumFractionDigits, then maximumIntegerDigits will also be set to 922b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the new value 923b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param newValue the new value to be set. 924b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see getMinimumFractionDigits 925b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 926b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 927b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void setMinimumFractionDigits(int32_t newValue); 928b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 929b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 930b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Sets the currency used to display currency 931b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * amounts. This takes effect immediately, if this format is a 932b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * currency format. If this format is not a currency format, then 933b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the currency is used if and when this object becomes a 934b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * currency format. 935b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param theCurrency a 3-letter ISO code indicating new currency 936b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * to use. It need not be null-terminated. May be the empty 937b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * string or NULL to indicate no currency. 938b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param ec input-output error code 939b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 940b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 941b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void setCurrency(const UChar* theCurrency, UErrorCode& ec); 942b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 943b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 944b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Gets the currency used to display currency 945b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * amounts. This may be an empty string for some subclasses. 946b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return a 3-letter null-terminated ISO code indicating 947b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the currency in use, or a pointer to the empty string. 948b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.6 949b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 950b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar* getCurrency() const; 951f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius 952fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius /** 953fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * Set a particular UDisplayContext value in the formatter, such as 954fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * UDISPCTX_CAPITALIZATION_FOR_STANDALONE. 955fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @param value The UDisplayContext value to set. 956fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @param status Input/output status. If at entry this indicates a failure 957fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * status, the function will do nothing; otherwise this will be 958fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * updated with any new status from the function. 9591b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * @stable ICU 53 960fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius */ 961fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius virtual void setContext(UDisplayContext value, UErrorCode& status); 962fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 963fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius /** 964fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * Get the formatter's UDisplayContext value for the specified UDisplayContextType, 965fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * such as UDISPCTX_TYPE_CAPITALIZATION. 966fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @param type The UDisplayContextType whose value to return 967fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @param status Input/output status. If at entry this indicates a failure 968fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * status, the function will do nothing; otherwise this will be 969fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * updated with any new status from the function. 970fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @return The UDisplayContextValue for the specified type. 9711b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * @stable ICU 53 972fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius */ 973fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius virtual UDisplayContext getContext(UDisplayContextType type, UErrorCode& status) const; 974fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 975b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic: 976b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 977b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 978b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return the class ID for this class. This is useful for 979b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * comparing to a return value from getDynamicClassID(). Note that, 980b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * because NumberFormat is an abstract base class, no fully constructed object 981b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * will have the class ID returned by NumberFormat::getStaticClassID(). 982b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The class ID for all objects of this class. 983b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 984b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 985b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static UClassID U_EXPORT2 getStaticClassID(void); 986b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 987b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 988b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. 989b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This method is to implement a simple version of RTTI, since not all 990b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * C++ compilers support genuine RTTI. Polymorphic operator==() and 991b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * clone() methods call this method. 992b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 993b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The class ID for this object. All objects of a 994b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * given class have the same class ID. Objects of 995b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * other classes have different class IDs. 996b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 997b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 998b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual UClassID getDynamicClassID(void) const = 0; 999b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1000b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprotected: 1001b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1002b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1003b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Default constructor for subclass use only. 1004b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 1005b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1006b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NumberFormat(); 1007b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1008b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1009b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Copy constructor. 1010b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 1011b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1012b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NumberFormat(const NumberFormat&); 1013b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1014b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1015b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Assignment operator. 1016b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 1017b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1018b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NumberFormat& operator=(const NumberFormat&); 1019b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1020b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1021b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns the currency in effect for this formatter. Subclasses 1022b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * should override this method as needed. Unlike getCurrency(), 1023b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * this method should never return "". 1024b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @result output parameter for null-terminated result, which must 1025b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * have a capacity of at least 4 1026b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @internal 1027b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1028b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void getEffectiveCurrency(UChar* result, UErrorCode& ec) const; 1029b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 10308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#ifndef U_HIDE_INTERNAL_API 10318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /** 10328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Creates the specified number format style of the desired locale. 10338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * If mustBeDecimalFormat is TRUE, then the returned pointer is 10348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * either a DecimalFormat or it is NULL. 10358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @internal 10368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 10378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius static NumberFormat* makeInstance(const Locale& desiredLocale, 10388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UNumberFormatStyle style, 10398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UBool mustBeDecimalFormat, 10408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UErrorCode& errorCode); 10418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#endif /* U_HIDE_INTERNAL_API */ 10428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 1043b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprivate: 1044b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1045b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho static UBool isStyleSupported(UNumberFormatStyle style); 1046b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1047b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1048b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Creates the specified decimal format style of the desired locale. 1049b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param desiredLocale the given locale. 1050b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param style the given style. 1051b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param errorCode Output param filled with success/failure status. 1052b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A new NumberFormat instance. 1053b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1054b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho static NumberFormat* makeInstance(const Locale& desiredLocale, 1055b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UNumberFormatStyle style, 1056b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UErrorCode& errorCode); 1057b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1058fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UBool fGroupingUsed; 1059b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t fMaxIntegerDigits; 1060b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t fMinIntegerDigits; 1061b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t fMaxFractionDigits; 1062b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t fMinFractionDigits; 106359d709d503bab6e2b61931737e662dd293b40578ccornelius 106459d709d503bab6e2b61931737e662dd293b40578ccornelius protected: 106559d709d503bab6e2b61931737e662dd293b40578ccornelius static const int32_t gDefaultMaxIntegerDigits; 106659d709d503bab6e2b61931737e662dd293b40578ccornelius static const int32_t gDefaultMinIntegerDigits; 106759d709d503bab6e2b61931737e662dd293b40578ccornelius 106859d709d503bab6e2b61931737e662dd293b40578ccornelius private: 1069b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool fParseIntegerOnly; 1070b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UBool fLenient; // TRUE => lenient parse is enabled 1071b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1072b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ISO currency code 1073b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar fCurrency[4]; 1074b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1075fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius UDisplayContext fCapitalizationContext; 1076fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 1077b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho friend class ICUNumberFormatFactory; // access to makeInstance 1078b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru friend class ICUNumberFormatService; 1079b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho friend class ::NumberFormatTest; // access to isStyleSupported() 1080b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 1081b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1082b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_SERVICE 1083b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1084b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A NumberFormatFactory is used to register new number formats. The factory 1085b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * should be able to create any of the predefined formats for each locale it 1086b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * supports. When registered, the locales it supports extend or override the 1087b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * locale already supported by ICU. 1088b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1089b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.6 1090b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1091b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass U_I18N_API NumberFormatFactory : public UObject { 1092b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic: 1093b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1094b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1095b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Destructor 1096b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 1097b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1098b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual ~NumberFormatFactory(); 1099b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return true if this factory will be visible. Default is true. 1102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If not visible, the locales supported by this factory will not 1103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * be listed by getAvailableLocales. 1104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.6 1105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual UBool visible(void) const = 0; 1107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return the locale names directly supported by this factory. The number of names 1110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * is returned in count; 1111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.6 1112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual const UnicodeString * getSupportedIDs(int32_t &count, UErrorCode& status) const = 0; 1114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return a number format of the appropriate type. If the locale 1117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * is not supported, return null. If the locale is supported, but 1118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the type is not provided by this service, return null. Otherwise 1119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * return an appropriate instance of NumberFormat. 1120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.6 1121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual NumberFormat* createFormat(const Locale& loc, UNumberFormatStyle formatType) = 0; 1123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 1124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A NumberFormatFactory that supports a single locale. It can be visible or invisible. 1127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.6 1128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass U_I18N_API SimpleNumberFormatFactory : public NumberFormatFactory { 1130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprotected: 1131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * True if the locale supported by this factory is visible. 1133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.6 1134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UBool _visible; 1136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The locale supported by this factory, as a UnicodeString. 1139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.6 1140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString _id; 1142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic: 1144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.6 1146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleNumberFormatFactory(const Locale& locale, UBool visible = TRUE); 1148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 1151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual ~SimpleNumberFormatFactory(); 1153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.6 1156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual UBool visible(void) const; 1158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.6 1161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual const UnicodeString * getSupportedIDs(int32_t &count, UErrorCode& status) const; 1163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 1164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_SERVICE */ 1165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 1167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruinline UBool 1169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruNumberFormat::isParseIntegerOnly() const 1170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fParseIntegerOnly; 1172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1174b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehoinline UBool 1175b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehoNumberFormat::isLenient() const 1176b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho{ 1177103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return fLenient; 1178b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho} 1179b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_END 1181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */ 1183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif // _NUMFMT 1185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//eof 1186