mirror of
				https://github.com/SoPat712/YTLitePlus.git
				synced 2025-10-30 20:34:03 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			1002 lines
		
	
	
		
			36 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1002 lines
		
	
	
		
			36 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
| *******************************************************************************
 | |
| * Copyright (C) 1997-2010, International Business Machines Corporation and others.
 | |
| * All Rights Reserved.
 | |
| * Modification History:
 | |
| *
 | |
| *   Date        Name        Description
 | |
| *   06/24/99    helena      Integrated Alan's NF enhancements and Java2 bug fixes
 | |
| *******************************************************************************
 | |
| */
 | |
| 
 | |
| #ifndef _UNUM
 | |
| #define _UNUM
 | |
| 
 | |
| #include "unicode/utypes.h"
 | |
| 
 | |
| #if !UCONFIG_NO_FORMATTING
 | |
| 
 | |
| #include "unicode/localpointer.h"
 | |
| #include "uloc.h"
 | |
| #include "umisc.h"
 | |
| #include "unicode/parseerr.h"
 | |
| /**
 | |
|  * \file
 | |
|  * \brief C API: NumberFormat
 | |
|  *
 | |
|  * <h2> Number Format C API </h2>
 | |
|  *
 | |
|  * Number Format C API  Provides functions for
 | |
|  * formatting and parsing a number.  Also provides methods for
 | |
|  * determining which locales have number formats, and what their names
 | |
|  * are.
 | |
|  * <P>
 | |
|  * UNumberFormat helps you to format and parse numbers for any locale.
 | |
|  * Your code can be completely independent of the locale conventions
 | |
|  * for decimal points, thousands-separators, or even the particular
 | |
|  * decimal digits used, or whether the number format is even decimal.
 | |
|  * There are different number format styles like decimal, currency,
 | |
|  * percent and spellout.
 | |
|  * <P>
 | |
|  * To format a number for the current Locale, use one of the static
 | |
|  * factory methods:
 | |
|  * <pre>
 | |
|  * \code
 | |
|  *    UChar myString[20];
 | |
|  *    double myNumber = 7.0;
 | |
|  *    UErrorCode status = U_ZERO_ERROR;
 | |
|  *    UNumberFormat* nf = unum_open(UNUM_DEFAULT, NULL, -1, NULL, NULL, &status);
 | |
|  *    unum_formatDouble(nf, myNumber, myString, 20, NULL, &status);
 | |
|  *    printf(" Example 1: %s\n", austrdup(myString) ); //austrdup( a function used to convert UChar* to char*)
 | |
|  * \endcode
 | |
|  * </pre>
 | |
|  * If you are formatting multiple numbers, it is more efficient to get
 | |
|  * the format and use it multiple times so that the system doesn't
 | |
|  * have to fetch the information about the local language and country
 | |
|  * conventions multiple times.
 | |
|  * <pre>
 | |
|  * \code
 | |
|  * uint32_t i, resultlength, reslenneeded;
 | |
|  * UErrorCode status = U_ZERO_ERROR;
 | |
|  * UFieldPosition pos;
 | |
|  * uint32_t a[] = { 123, 3333, -1234567 };
 | |
|  * const uint32_t a_len = sizeof(a) / sizeof(a[0]);
 | |
|  * UNumberFormat* nf;
 | |
|  * UChar* result = NULL;
 | |
|  *
 | |
|  * nf = unum_open(UNUM_DEFAULT, NULL, -1, NULL, NULL, &status);
 | |
|  * for (i = 0; i < a_len; i++) {
 | |
|  *    resultlength=0;
 | |
|  *    reslenneeded=unum_format(nf, a[i], NULL, resultlength, &pos, &status);
 | |
|  *    result = NULL;
 | |
|  *    if(status==U_BUFFER_OVERFLOW_ERROR){
 | |
|  *       status=U_ZERO_ERROR;
 | |
|  *       resultlength=reslenneeded+1;
 | |
|  *       result=(UChar*)malloc(sizeof(UChar) * resultlength);
 | |
|  *       unum_format(nf, a[i], result, resultlength, &pos, &status);
 | |
|  *    }
 | |
|  *    printf( " Example 2: %s\n", austrdup(result));
 | |
|  *    free(result);
 | |
|  * }
 | |
|  * \endcode
 | |
|  * </pre>
 | |
|  * To format a number for a different Locale, specify it in the
 | |
|  * call to unum_open().
 | |
|  * <pre>
 | |
|  * \code
 | |
|  *     UNumberFormat* nf = unum_open(UNUM_DEFAULT, NULL, -1, "fr_FR", NULL, &success)
 | |
|  * \endcode
 | |
|  * </pre>
 | |
|  * You can use a NumberFormat API unum_parse() to parse.
 | |
|  * <pre>
 | |
|  * \code
 | |
|  *    UErrorCode status = U_ZERO_ERROR;
 | |
|  *    int32_t pos=0;
 | |
|  *    int32_t num;
 | |
|  *    num = unum_parse(nf, str, u_strlen(str), &pos, &status);
 | |
|  * \endcode
 | |
|  * </pre>
 | |
|  * Use UNUM_DECIMAL to get the normal number format for that country.
 | |
|  * There are other static options available.  Use UNUM_CURRENCY
 | |
|  * to get the currency number format for that country.  Use UNUM_PERCENT
 | |
|  * to get a format for displaying percentages. With this format, a
 | |
|  * fraction from 0.53 is displayed as 53%.
 | |
|  * <P>
 | |
|  * Use a pattern to create either a DecimalFormat or a RuleBasedNumberFormat
 | |
|  * formatter.  The pattern must conform to the syntax defined for those
 | |
|  * formatters.
 | |
|  * <P>
 | |
|  * You can also control the display of numbers with such function as
 | |
|  * unum_getAttribues() and unum_setAtributes(), which let you set the
 | |
|  * miminum fraction digits, grouping, etc.
 | |
|  * @see UNumberFormatAttributes for more details
 | |
|  * <P>
 | |
|  * You can also use forms of the parse and format methods with
 | |
|  * ParsePosition and UFieldPosition to allow you to:
 | |
|  * <ul type=round>
 | |
|  *   <li>(a) progressively parse through pieces of a string.
 | |
|  *   <li>(b) align the decimal point and other areas.
 | |
|  * </ul>
 | |
|  * <p>
 | |
|  * It is also possible to change or set the symbols used for a particular
 | |
|  * locale like the currency symbol, the grouping seperator , monetary seperator
 | |
|  * etc by making use of functions unum_setSymbols() and unum_getSymbols().
 | |
|  */
 | |
| 
 | |
| /** A number formatter.
 | |
|  *  For usage in C programs.
 | |
|  *  @stable ICU 2.0
 | |
|  */
 | |
| typedef void* UNumberFormat;
 | |
| 
 | |
| /** The possible number format styles. 
 | |
|  *  @stable ICU 2.0
 | |
|  */
 | |
| typedef enum UNumberFormatStyle {
 | |
|     /**
 | |
|      * Decimal format defined by pattern 
 | |
|      * @stable ICU 3.0
 | |
|      */
 | |
|     UNUM_PATTERN_DECIMAL=0,
 | |
|     /** Decimal format */
 | |
|     UNUM_DECIMAL=1,
 | |
|     /** Currency format */
 | |
|     UNUM_CURRENCY,
 | |
|     /** Percent format */
 | |
|     UNUM_PERCENT,
 | |
|     /** Scientific format */
 | |
|     UNUM_SCIENTIFIC,
 | |
|     /** Spellout rule-based format */
 | |
|     UNUM_SPELLOUT,
 | |
|     /** 
 | |
|      * Ordinal rule-based format 
 | |
|      * @stable ICU 3.0
 | |
|      */
 | |
|     UNUM_ORDINAL,
 | |
|     /** 
 | |
|      * Duration rule-based format 
 | |
|      * @stable ICU 3.0
 | |
|      */
 | |
|     UNUM_DURATION,
 | |
|     /** 
 | |
|      * Numbering system rule-based format 
 | |
|      * @stable ICU 4.2
 | |
|      */
 | |
|     UNUM_NUMBERING_SYSTEM,
 | |
|     /** 
 | |
|      * Rule-based format defined by pattern 
 | |
|      * @stable ICU 3.0
 | |
|      */
 | |
|     UNUM_PATTERN_RULEBASED,
 | |
|     /** Default format */
 | |
|     UNUM_DEFAULT = UNUM_DECIMAL,
 | |
|     /** (Alias for UNUM_PATTERN_DECIMAL) */
 | |
|     UNUM_IGNORE = UNUM_PATTERN_DECIMAL,
 | |
| 
 | |
|     UNUM_DECIMAL_COMPACT_SHORT = 14,
 | |
|     UNUM_DECIMAL_COMPACT_LONG = 15,
 | |
| } UNumberFormatStyle;
 | |
| 
 | |
| /** The possible number format rounding modes. 
 | |
|  *  @stable ICU 2.0
 | |
|  */
 | |
| typedef enum UNumberFormatRoundingMode {
 | |
|     UNUM_ROUND_CEILING,
 | |
|     UNUM_ROUND_FLOOR,
 | |
|     UNUM_ROUND_DOWN,
 | |
|     UNUM_ROUND_UP,
 | |
|     /**
 | |
|      * Half-even rounding, misspelled name
 | |
|      * @deprecated, ICU 3.8
 | |
|      */
 | |
|     UNUM_FOUND_HALFEVEN,
 | |
|     UNUM_ROUND_HALFDOWN,
 | |
|     UNUM_ROUND_HALFUP,
 | |
|     /**
 | |
|      * Half-even rounding
 | |
|      * @stable, ICU 3.8
 | |
|      */
 | |
|     UNUM_ROUND_HALFEVEN = UNUM_FOUND_HALFEVEN
 | |
| } UNumberFormatRoundingMode;
 | |
| 
 | |
| /** The possible number format pad positions. 
 | |
|  *  @stable ICU 2.0
 | |
|  */
 | |
| typedef enum UNumberFormatPadPosition {
 | |
|     UNUM_PAD_BEFORE_PREFIX,
 | |
|     UNUM_PAD_AFTER_PREFIX,
 | |
|     UNUM_PAD_BEFORE_SUFFIX,
 | |
|     UNUM_PAD_AFTER_SUFFIX
 | |
| } UNumberFormatPadPosition;
 | |
| 
 | |
| /**
 | |
|  * Create and return a new UNumberFormat for formatting and parsing
 | |
|  * numbers.  A UNumberFormat may be used to format numbers by calling
 | |
|  * {@link #unum_format }, and to parse numbers by calling {@link #unum_parse }.
 | |
|  * The caller must call {@link #unum_close } when done to release resources
 | |
|  * used by this object.
 | |
|  * @param style The type of number format to open: one of
 | |
|  * UNUM_DECIMAL, UNUM_CURRENCY, UNUM_PERCENT, UNUM_SCIENTIFIC, UNUM_SPELLOUT,
 | |
|  * UNUM_PATTERN_DECIMAL, UNUM_PATTERN_RULEBASED, or UNUM_DEFAULT.
 | |
|  * If UNUM_PATTERN_DECIMAL or UNUM_PATTERN_RULEBASED is passed then the
 | |
|  * number format is opened using the given pattern, which must conform
 | |
|  * to the syntax described in DecimalFormat or RuleBasedNumberFormat,
 | |
|  * respectively.
 | |
|  * @param pattern A pattern specifying the format to use. 
 | |
|  * This parameter is ignored unless the style is
 | |
|  * UNUM_PATTERN_DECIMAL or UNUM_PATTERN_RULEBASED.
 | |
|  * @param patternLength The number of characters in the pattern, or -1
 | |
|  * if null-terminated. This parameter is ignored unless the style is
 | |
|  * UNUM_PATTERN.
 | |
|  * @param locale A locale identifier to use to determine formatting
 | |
|  * and parsing conventions, or NULL to use the default locale.
 | |
|  * @param parseErr A pointer to a UParseError struct to receive the
 | |
|  * details of any parsing errors, or NULL if no parsing error details
 | |
|  * are desired.
 | |
|  * @param status A pointer to an input-output UErrorCode.
 | |
|  * @return A pointer to a newly created UNumberFormat, or NULL if an
 | |
|  * error occurred.
 | |
|  * @see unum_close
 | |
|  * @see DecimalFormat
 | |
|  * @stable ICU 2.0
 | |
|  */
 | |
| U_STABLE UNumberFormat* U_EXPORT2 
 | |
| unum_open(  UNumberFormatStyle    style,
 | |
|             const    UChar*    pattern,
 | |
|             int32_t            patternLength,
 | |
|             const    char*     locale,
 | |
|             UParseError*       parseErr,
 | |
|             UErrorCode*        status);
 | |
| 
 | |
| 
 | |
| /**
 | |
| * Close a UNumberFormat.
 | |
| * Once closed, a UNumberFormat may no longer be used.
 | |
| * @param fmt The formatter to close.
 | |
| * @stable ICU 2.0
 | |
| */
 | |
| U_STABLE void U_EXPORT2 
 | |
| unum_close(UNumberFormat* fmt);
 | |
| 
 | |
| #if U_SHOW_CPLUSPLUS_API
 | |
| 
 | |
| U_NAMESPACE_BEGIN
 | |
| 
 | |
| /**
 | |
|  * \class LocalUNumberFormatPointer
 | |
|  * "Smart pointer" class, closes a UNumberFormat via unum_close().
 | |
|  * For most methods see the LocalPointerBase base class.
 | |
|  *
 | |
|  * @see LocalPointerBase
 | |
|  * @see LocalPointer
 | |
|  * @stable ICU 4.4
 | |
|  */
 | |
| U_DEFINE_LOCAL_OPEN_POINTER(LocalUNumberFormatPointer, UNumberFormat, unum_close);
 | |
| 
 | |
| U_NAMESPACE_END
 | |
| 
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * Open a copy of a UNumberFormat.
 | |
|  * This function performs a deep copy.
 | |
|  * @param fmt The format to copy
 | |
|  * @param status A pointer to an UErrorCode to receive any errors.
 | |
|  * @return A pointer to a UNumberFormat identical to fmt.
 | |
|  * @stable ICU 2.0
 | |
|  */
 | |
| U_STABLE UNumberFormat* U_EXPORT2 
 | |
| unum_clone(const UNumberFormat *fmt,
 | |
|        UErrorCode *status);
 | |
| 
 | |
| /**
 | |
| * Format an integer using a UNumberFormat.
 | |
| * The integer will be formatted according to the UNumberFormat's locale.
 | |
| * @param fmt The formatter to use.
 | |
| * @param number The number to format.
 | |
| * @param result A pointer to a buffer to receive the formatted number.
 | |
| * @param resultLength The maximum size of result.
 | |
| * @param pos    A pointer to a UFieldPosition.  On input, position->field
 | |
| * is read.  On output, position->beginIndex and position->endIndex indicate
 | |
| * the beginning and ending indices of field number position->field, if such
 | |
| * a field exists.  This parameter may be NULL, in which case no field
 | |
| * @param status A pointer to an UErrorCode to receive any errors
 | |
| * @return The total buffer size needed; if greater than resultLength, the output was truncated.
 | |
| * @see unum_formatInt64
 | |
| * @see unum_formatDouble
 | |
| * @see unum_parse
 | |
| * @see unum_parseInt64
 | |
| * @see unum_parseDouble
 | |
| * @see UFieldPosition
 | |
| * @stable ICU 2.0
 | |
| */
 | |
| U_STABLE int32_t U_EXPORT2 
 | |
| unum_format(    const    UNumberFormat*    fmt,
 | |
|         int32_t            number,
 | |
|         UChar*            result,
 | |
|         int32_t            resultLength,
 | |
|         UFieldPosition    *pos,
 | |
|         UErrorCode*        status);
 | |
| 
 | |
| /**
 | |
| * Format an int64 using a UNumberFormat.
 | |
| * The int64 will be formatted according to the UNumberFormat's locale.
 | |
| * @param fmt The formatter to use.
 | |
| * @param number The number to format.
 | |
| * @param result A pointer to a buffer to receive the formatted number.
 | |
| * @param resultLength The maximum size of result.
 | |
| * @param pos    A pointer to a UFieldPosition.  On input, position->field
 | |
| * is read.  On output, position->beginIndex and position->endIndex indicate
 | |
| * the beginning and ending indices of field number position->field, if such
 | |
| * a field exists.  This parameter may be NULL, in which case no field
 | |
| * @param status A pointer to an UErrorCode to receive any errors
 | |
| * @return The total buffer size needed; if greater than resultLength, the output was truncated.
 | |
| * @see unum_format
 | |
| * @see unum_formatDouble
 | |
| * @see unum_parse
 | |
| * @see unum_parseInt64
 | |
| * @see unum_parseDouble
 | |
| * @see UFieldPosition
 | |
| * @stable ICU 2.0
 | |
| */
 | |
| U_STABLE int32_t U_EXPORT2 
 | |
| unum_formatInt64(const UNumberFormat *fmt,
 | |
|         int64_t         number,
 | |
|         UChar*          result,
 | |
|         int32_t         resultLength,
 | |
|         UFieldPosition *pos,
 | |
|         UErrorCode*     status);
 | |
| 
 | |
| /**
 | |
| * Format a double using a UNumberFormat.
 | |
| * The double will be formatted according to the UNumberFormat's locale.
 | |
| * @param fmt The formatter to use.
 | |
| * @param number The number to format.
 | |
| * @param result A pointer to a buffer to receive the formatted number.
 | |
| * @param resultLength The maximum size of result.
 | |
| * @param pos    A pointer to a UFieldPosition.  On input, position->field
 | |
| * is read.  On output, position->beginIndex and position->endIndex indicate
 | |
| * the beginning and ending indices of field number position->field, if such
 | |
| * a field exists.  This parameter may be NULL, in which case no field
 | |
| * @param status A pointer to an UErrorCode to receive any errors
 | |
| * @return The total buffer size needed; if greater than resultLength, the output was truncated.
 | |
| * @see unum_format
 | |
| * @see unum_formatInt64
 | |
| * @see unum_parse
 | |
| * @see unum_parseInt64
 | |
| * @see unum_parseDouble
 | |
| * @see UFieldPosition
 | |
| * @stable ICU 2.0
 | |
| */
 | |
| U_STABLE int32_t U_EXPORT2 
 | |
| unum_formatDouble(    const    UNumberFormat*  fmt,
 | |
|             double          number,
 | |
|             UChar*          result,
 | |
|             int32_t         resultLength,
 | |
|             UFieldPosition  *pos, /* 0 if ignore */
 | |
|             UErrorCode*     status);
 | |
| 
 | |
| /**
 | |
| * Format a decimal number using a UNumberFormat.
 | |
| * The number will be formatted according to the UNumberFormat's locale.
 | |
| * The syntax of the input number is a "numeric string"
 | |
| * as defined in the Decimal Arithmetic Specification, available at
 | |
| * http://speleotrove.com/decimal
 | |
| * @param fmt The formatter to use.
 | |
| * @param number The number to format.
 | |
| * @param length The length of the input number, or -1 if the input is nul-terminated.
 | |
| * @param result A pointer to a buffer to receive the formatted number.
 | |
| * @param resultLength The maximum size of result.
 | |
| * @param pos    A pointer to a UFieldPosition.  On input, position->field
 | |
| *               is read.  On output, position->beginIndex and position->endIndex indicate
 | |
| *               the beginning and ending indices of field number position->field, if such
 | |
| *               a field exists.  This parameter may be NULL, in which case it is ignored.
 | |
| * @param status A pointer to an UErrorCode to receive any errors
 | |
| * @return The total buffer size needed; if greater than resultLength, the output was truncated.
 | |
| * @see unum_format
 | |
| * @see unum_formatInt64
 | |
| * @see unum_parse
 | |
| * @see unum_parseInt64
 | |
| * @see unum_parseDouble
 | |
| * @see UFieldPosition
 | |
| * @stable ICU 4.4 
 | |
| */
 | |
| U_STABLE int32_t U_EXPORT2 
 | |
| unum_formatDecimal(    const    UNumberFormat*  fmt,
 | |
|             const char *    number,
 | |
|             int32_t         length,
 | |
|             UChar*          result,
 | |
|             int32_t         resultLength,
 | |
|             UFieldPosition  *pos, /* 0 if ignore */
 | |
|             UErrorCode*     status);
 | |
| 
 | |
| /**
 | |
|  * Format a double currency amount using a UNumberFormat.
 | |
|  * The double will be formatted according to the UNumberFormat's locale.
 | |
|  * @param fmt the formatter to use
 | |
|  * @param number the number to format
 | |
|  * @param currency the 3-letter null-terminated ISO 4217 currency code
 | |
|  * @param result a pointer to the buffer to receive the formatted number
 | |
|  * @param resultLength the maximum number of UChars to write to result
 | |
|  * @param pos a pointer to a UFieldPosition.  On input,
 | |
|  * position->field is read.  On output, position->beginIndex and
 | |
|  * position->endIndex indicate the beginning and ending indices of
 | |
|  * field number position->field, if such a field exists.  This
 | |
|  * parameter may be NULL, in which case it is ignored.
 | |
|  * @param status a pointer to an input-output UErrorCode
 | |
|  * @return the total buffer size needed; if greater than resultLength,
 | |
|  * the output was truncated.
 | |
|  * @see unum_formatDouble
 | |
|  * @see unum_parseDoubleCurrency
 | |
|  * @see UFieldPosition
 | |
|  * @stable ICU 3.0
 | |
|  */
 | |
| U_STABLE int32_t U_EXPORT2 
 | |
| unum_formatDoubleCurrency(const UNumberFormat* fmt,
 | |
|                           double number,
 | |
|                           UChar* currency,
 | |
|                           UChar* result,
 | |
|                           int32_t resultLength,
 | |
|                           UFieldPosition* pos, /* ignored if 0 */
 | |
|                           UErrorCode* status);
 | |
| 
 | |
| /**
 | |
| * Parse a string into an integer using a UNumberFormat.
 | |
| * The string will be parsed according to the UNumberFormat's locale.
 | |
| * @param fmt The formatter to use.
 | |
| * @param text The text to parse.
 | |
| * @param textLength The length of text, or -1 if null-terminated.
 | |
| * @param parsePos If not 0, on input a pointer to an integer specifying the offset at which
 | |
| * to begin parsing.  If not 0, on output the offset at which parsing ended.
 | |
| * @param status A pointer to an UErrorCode to receive any errors
 | |
| * @return The value of the parsed integer
 | |
| * @see unum_parseInt64
 | |
| * @see unum_parseDouble
 | |
| * @see unum_format
 | |
| * @see unum_formatInt64
 | |
| * @see unum_formatDouble
 | |
| * @stable ICU 2.0
 | |
| */
 | |
| U_STABLE int32_t U_EXPORT2 
 | |
| unum_parse(    const   UNumberFormat*  fmt,
 | |
|         const   UChar*          text,
 | |
|         int32_t         textLength,
 | |
|         int32_t         *parsePos /* 0 = start */,
 | |
|         UErrorCode      *status);
 | |
| 
 | |
| /**
 | |
| * Parse a string into an int64 using a UNumberFormat.
 | |
| * The string will be parsed according to the UNumberFormat's locale.
 | |
| * @param fmt The formatter to use.
 | |
| * @param text The text to parse.
 | |
| * @param textLength The length of text, or -1 if null-terminated.
 | |
| * @param parsePos If not 0, on input a pointer to an integer specifying the offset at which
 | |
| * to begin parsing.  If not 0, on output the offset at which parsing ended.
 | |
| * @param status A pointer to an UErrorCode to receive any errors
 | |
| * @return The value of the parsed integer
 | |
| * @see unum_parse
 | |
| * @see unum_parseDouble
 | |
| * @see unum_format
 | |
| * @see unum_formatInt64
 | |
| * @see unum_formatDouble
 | |
| * @stable ICU 2.8
 | |
| */
 | |
| U_STABLE int64_t U_EXPORT2 
 | |
| unum_parseInt64(const UNumberFormat*  fmt,
 | |
|         const UChar*  text,
 | |
|         int32_t       textLength,
 | |
|         int32_t       *parsePos /* 0 = start */,
 | |
|         UErrorCode    *status);
 | |
| 
 | |
| /**
 | |
| * Parse a string into a double using a UNumberFormat.
 | |
| * The string will be parsed according to the UNumberFormat's locale.
 | |
| * @param fmt The formatter to use.
 | |
| * @param text The text to parse.
 | |
| * @param textLength The length of text, or -1 if null-terminated.
 | |
| * @param parsePos If not 0, on input a pointer to an integer specifying the offset at which
 | |
| * to begin parsing.  If not 0, on output the offset at which parsing ended.
 | |
| * @param status A pointer to an UErrorCode to receive any errors
 | |
| * @return The value of the parsed double
 | |
| * @see unum_parse
 | |
| * @see unum_parseInt64
 | |
| * @see unum_format
 | |
| * @see unum_formatInt64
 | |
| * @see unum_formatDouble
 | |
| * @stable ICU 2.0
 | |
| */
 | |
| U_STABLE double U_EXPORT2 
 | |
| unum_parseDouble(    const   UNumberFormat*  fmt,
 | |
|             const   UChar*          text,
 | |
|             int32_t         textLength,
 | |
|             int32_t         *parsePos /* 0 = start */,
 | |
|             UErrorCode      *status);
 | |
| 
 | |
| 
 | |
| /**
 | |
| * Parse a number from a string into an unformatted numeric string using a UNumberFormat.
 | |
| * The input string will be parsed according to the UNumberFormat's locale.
 | |
| * The syntax of the output is a "numeric string"
 | |
| * as defined in the Decimal Arithmetic Specification, available at
 | |
| * http://speleotrove.com/decimal
 | |
| * @param fmt The formatter to use.
 | |
| * @param text The text to parse.
 | |
| * @param textLength The length of text, or -1 if null-terminated.
 | |
| * @param parsePos If not 0, on input a pointer to an integer specifying the offset at which
 | |
| *                 to begin parsing.  If not 0, on output the offset at which parsing ended.
 | |
| * @param outBuf A (char *) buffer to receive the parsed number as a string.  The output string
 | |
| *               will be nul-terminated if there is sufficient space.
 | |
| * @param outBufLength The size of the output buffer.  May be zero, in which case
 | |
| *               the outBuf pointer may be NULL, and the function will return the
 | |
| *               size of the output string.
 | |
| * @param status A pointer to an UErrorCode to receive any errors
 | |
| * @return the length of the output string, not including any terminating nul.
 | |
| * @see unum_parse
 | |
| * @see unum_parseInt64
 | |
| * @see unum_format
 | |
| * @see unum_formatInt64
 | |
| * @see unum_formatDouble
 | |
| * @stable ICU 4.4
 | |
| */
 | |
| U_STABLE int32_t U_EXPORT2 
 | |
| unum_parseDecimal(const   UNumberFormat*  fmt,
 | |
|                  const   UChar*          text,
 | |
|                          int32_t         textLength,
 | |
|                          int32_t         *parsePos /* 0 = start */,
 | |
|                          char            *outBuf,
 | |
|                          int32_t         outBufLength,
 | |
|                          UErrorCode      *status);
 | |
| 
 | |
| /**
 | |
|  * Parse a string into a double and a currency using a UNumberFormat.
 | |
|  * The string will be parsed according to the UNumberFormat's locale.
 | |
|  * @param fmt the formatter to use
 | |
|  * @param text the text to parse
 | |
|  * @param textLength the length of text, or -1 if null-terminated
 | |
|  * @param parsePos a pointer to an offset index into text at which to
 | |
|  * begin parsing. On output, *parsePos will point after the last
 | |
|  * parsed character.  This parameter may be 0, in which case parsing
 | |
|  * begins at offset 0.
 | |
|  * @param currency a pointer to the buffer to receive the parsed null-
 | |
|  * terminated currency.  This buffer must have a capacity of at least
 | |
|  * 4 UChars.
 | |
|  * @param status a pointer to an input-output UErrorCode
 | |
|  * @return the parsed double
 | |
|  * @see unum_parseDouble
 | |
|  * @see unum_formatDoubleCurrency
 | |
|  * @stable ICU 3.0
 | |
|  */
 | |
| U_STABLE double U_EXPORT2
 | |
| unum_parseDoubleCurrency(const UNumberFormat* fmt,
 | |
|                          const UChar* text,
 | |
|                          int32_t textLength,
 | |
|                          int32_t* parsePos, /* 0 = start */
 | |
|                          UChar* currency,
 | |
|                          UErrorCode* status);
 | |
| 
 | |
| /**
 | |
|  * Set the pattern used by a UNumberFormat.  This can only be used
 | |
|  * on a DecimalFormat, other formats return U_ILLEGAL_ARGUMENT_ERROR
 | |
|  * in the status.
 | |
|  * @param format The formatter to set.
 | |
|  * @param localized TRUE if the pattern is localized, FALSE otherwise.
 | |
|  * @param pattern The new pattern
 | |
|  * @param patternLength The length of pattern, or -1 if null-terminated.
 | |
|  * @param parseError A pointer to UParseError to recieve information
 | |
|  * about errors occurred during parsing, or NULL if no parse error
 | |
|  * information is desired.
 | |
|  * @param status A pointer to an input-output UErrorCode.
 | |
|  * @see unum_toPattern
 | |
|  * @see DecimalFormat
 | |
|  * @stable ICU 2.0
 | |
|  */
 | |
| U_STABLE void U_EXPORT2 
 | |
| unum_applyPattern(          UNumberFormat  *format,
 | |
|                             UBool          localized,
 | |
|                     const   UChar          *pattern,
 | |
|                             int32_t         patternLength,
 | |
|                             UParseError    *parseError,
 | |
|                             UErrorCode     *status
 | |
|                                     );
 | |
| 
 | |
| /**
 | |
| * Get a locale for which decimal formatting patterns are available.
 | |
| * A UNumberFormat in a locale returned by this function will perform the correct
 | |
| * formatting and parsing for the locale.  The results of this call are not
 | |
| * valid for rule-based number formats.
 | |
| * @param localeIndex The index of the desired locale.
 | |
| * @return A locale for which number formatting patterns are available, or 0 if none.
 | |
| * @see unum_countAvailable
 | |
| * @stable ICU 2.0
 | |
| */
 | |
| U_STABLE const char* U_EXPORT2 
 | |
| unum_getAvailable(int32_t localeIndex);
 | |
| 
 | |
| /**
 | |
| * Determine how many locales have decimal formatting patterns available.  The
 | |
| * results of this call are not valid for rule-based number formats.
 | |
| * This function is useful for determining the loop ending condition for
 | |
| * calls to {@link #unum_getAvailable }.
 | |
| * @return The number of locales for which decimal formatting patterns are available.
 | |
| * @see unum_getAvailable
 | |
| * @stable ICU 2.0
 | |
| */
 | |
| U_STABLE int32_t U_EXPORT2 
 | |
| unum_countAvailable(void);
 | |
| 
 | |
| /** The possible UNumberFormat numeric attributes @stable ICU 2.0 */
 | |
| typedef enum UNumberFormatAttribute {
 | |
|   /** Parse integers only */
 | |
|   UNUM_PARSE_INT_ONLY,
 | |
|   /** Use grouping separator */
 | |
|   UNUM_GROUPING_USED,
 | |
|   /** Always show decimal point */
 | |
|   UNUM_DECIMAL_ALWAYS_SHOWN,
 | |
|   /** Maximum integer digits */
 | |
|   UNUM_MAX_INTEGER_DIGITS,
 | |
|   /** Minimum integer digits */
 | |
|   UNUM_MIN_INTEGER_DIGITS,
 | |
|   /** Integer digits */
 | |
|   UNUM_INTEGER_DIGITS,
 | |
|   /** Maximum fraction digits */
 | |
|   UNUM_MAX_FRACTION_DIGITS,
 | |
|   /** Minimum fraction digits */
 | |
|   UNUM_MIN_FRACTION_DIGITS,
 | |
|   /** Fraction digits */
 | |
|   UNUM_FRACTION_DIGITS,
 | |
|   /** Multiplier */
 | |
|   UNUM_MULTIPLIER,
 | |
|   /** Grouping size */
 | |
|   UNUM_GROUPING_SIZE,
 | |
|   /** Rounding Mode */
 | |
|   UNUM_ROUNDING_MODE,
 | |
|   /** Rounding increment */
 | |
|   UNUM_ROUNDING_INCREMENT,
 | |
|   /** The width to which the output of <code>format()</code> is padded. */
 | |
|   UNUM_FORMAT_WIDTH,
 | |
|   /** The position at which padding will take place. */
 | |
|   UNUM_PADDING_POSITION,
 | |
|   /** Secondary grouping size */
 | |
|   UNUM_SECONDARY_GROUPING_SIZE,
 | |
|   /** Use significant digits
 | |
|    * @stable ICU 3.0 */
 | |
|   UNUM_SIGNIFICANT_DIGITS_USED,
 | |
|   /** Minimum significant digits
 | |
|    * @stable ICU 3.0 */
 | |
|   UNUM_MIN_SIGNIFICANT_DIGITS,
 | |
|   /** Maximum significant digits
 | |
|    * @stable ICU 3.0 */
 | |
|   UNUM_MAX_SIGNIFICANT_DIGITS,
 | |
|   /** Lenient parse mode used by rule-based formats.
 | |
|    * @stable ICU 3.0
 | |
|    */
 | |
|   UNUM_LENIENT_PARSE
 | |
| } UNumberFormatAttribute;
 | |
| 
 | |
| /**
 | |
| * Get a numeric attribute associated with a UNumberFormat.
 | |
| * An example of a numeric attribute is the number of integer digits a formatter will produce.
 | |
| * @param fmt The formatter to query.
 | |
| * @param attr The attribute to query; one of UNUM_PARSE_INT_ONLY, UNUM_GROUPING_USED,
 | |
| * UNUM_DECIMAL_ALWAYS_SHOWN, UNUM_MAX_INTEGER_DIGITS, UNUM_MIN_INTEGER_DIGITS, UNUM_INTEGER_DIGITS,
 | |
| * UNUM_MAX_FRACTION_DIGITS, UNUM_MIN_FRACTION_DIGITS, UNUM_FRACTION_DIGITS, UNUM_MULTIPLIER,
 | |
| * UNUM_GROUPING_SIZE, UNUM_ROUNDING_MODE, UNUM_FORMAT_WIDTH, UNUM_PADDING_POSITION, UNUM_SECONDARY_GROUPING_SIZE.
 | |
| * @return The value of attr.
 | |
| * @see unum_setAttribute
 | |
| * @see unum_getDoubleAttribute
 | |
| * @see unum_setDoubleAttribute
 | |
| * @see unum_getTextAttribute
 | |
| * @see unum_setTextAttribute
 | |
| * @stable ICU 2.0
 | |
| */
 | |
| U_STABLE int32_t U_EXPORT2 
 | |
| unum_getAttribute(const UNumberFormat*          fmt,
 | |
|           UNumberFormatAttribute  attr);
 | |
| 
 | |
| /**
 | |
| * Set a numeric attribute associated with a UNumberFormat.
 | |
| * An example of a numeric attribute is the number of integer digits a formatter will produce.  If the
 | |
| * formatter does not understand the attribute, the call is ignored.  Rule-based formatters only understand
 | |
| * the lenient-parse attribute.
 | |
| * @param fmt The formatter to set.
 | |
| * @param attr The attribute to set; one of UNUM_PARSE_INT_ONLY, UNUM_GROUPING_USED,
 | |
| * UNUM_DECIMAL_ALWAYS_SHOWN, UNUM_MAX_INTEGER_DIGITS, UNUM_MIN_INTEGER_DIGITS, UNUM_INTEGER_DIGITS,
 | |
| * UNUM_MAX_FRACTION_DIGITS, UNUM_MIN_FRACTION_DIGITS, UNUM_FRACTION_DIGITS, UNUM_MULTIPLIER,
 | |
| * UNUM_GROUPING_SIZE, UNUM_ROUNDING_MODE, UNUM_FORMAT_WIDTH, UNUM_PADDING_POSITION, UNUM_SECONDARY_GROUPING_SIZE,
 | |
| * or UNUM_LENIENT_PARSE.
 | |
| * @param newValue The new value of attr.
 | |
| * @see unum_getAttribute
 | |
| * @see unum_getDoubleAttribute
 | |
| * @see unum_setDoubleAttribute
 | |
| * @see unum_getTextAttribute
 | |
| * @see unum_setTextAttribute
 | |
| * @stable ICU 2.0
 | |
| */
 | |
| U_STABLE void U_EXPORT2 
 | |
| unum_setAttribute(    UNumberFormat*          fmt,
 | |
|             UNumberFormatAttribute  attr,
 | |
|             int32_t                 newValue);
 | |
| 
 | |
| 
 | |
| /**
 | |
| * Get a numeric attribute associated with a UNumberFormat.
 | |
| * An example of a numeric attribute is the number of integer digits a formatter will produce.
 | |
| * If the formatter does not understand the attribute, -1 is returned.
 | |
| * @param fmt The formatter to query.
 | |
| * @param attr The attribute to query; e.g. UNUM_ROUNDING_INCREMENT.
 | |
| * @return The value of attr.
 | |
| * @see unum_getAttribute
 | |
| * @see unum_setAttribute
 | |
| * @see unum_setDoubleAttribute
 | |
| * @see unum_getTextAttribute
 | |
| * @see unum_setTextAttribute
 | |
| * @stable ICU 2.0
 | |
| */
 | |
| U_STABLE double U_EXPORT2 
 | |
| unum_getDoubleAttribute(const UNumberFormat*          fmt,
 | |
|           UNumberFormatAttribute  attr);
 | |
| 
 | |
| /**
 | |
| * Set a numeric attribute associated with a UNumberFormat.
 | |
| * An example of a numeric attribute is the number of integer digits a formatter will produce.
 | |
| * If the formatter does not understand the attribute, this call is ignored.
 | |
| * @param fmt The formatter to set.
 | |
| * @param attr The attribute to set; e.g. UNUM_ROUNDING_INCREMENT.
 | |
| * @param newValue The new value of attr.
 | |
| * @see unum_getAttribute
 | |
| * @see unum_setAttribute
 | |
| * @see unum_getDoubleAttribute
 | |
| * @see unum_getTextAttribute
 | |
| * @see unum_setTextAttribute
 | |
| * @stable ICU 2.0
 | |
| */
 | |
| U_STABLE void U_EXPORT2 
 | |
| unum_setDoubleAttribute(    UNumberFormat*          fmt,
 | |
|             UNumberFormatAttribute  attr,
 | |
|             double                 newValue);
 | |
| 
 | |
| /** The possible UNumberFormat text attributes @stable ICU 2.0*/
 | |
| typedef enum UNumberFormatTextAttribute {
 | |
|   /** Positive prefix */
 | |
|   UNUM_POSITIVE_PREFIX,
 | |
|   /** Positive suffix */
 | |
|   UNUM_POSITIVE_SUFFIX,
 | |
|   /** Negative prefix */
 | |
|   UNUM_NEGATIVE_PREFIX,
 | |
|   /** Negative suffix */
 | |
|   UNUM_NEGATIVE_SUFFIX,
 | |
|   /** The character used to pad to the format width. */
 | |
|   UNUM_PADDING_CHARACTER,
 | |
|   /** The ISO currency code */
 | |
|   UNUM_CURRENCY_CODE,
 | |
|   /**
 | |
|    * The default rule set.  This is only available with rule-based formatters.
 | |
|    * @stable ICU 3.0
 | |
|    */
 | |
|   UNUM_DEFAULT_RULESET,
 | |
|   /**
 | |
|    * The public rule sets.  This is only available with rule-based formatters.
 | |
|    * This is a read-only attribute.  The public rulesets are returned as a
 | |
|    * single string, with each ruleset name delimited by ';' (semicolon).
 | |
|    * @stable ICU 3.0
 | |
|    */
 | |
|   UNUM_PUBLIC_RULESETS
 | |
| } UNumberFormatTextAttribute;
 | |
| 
 | |
| /**
 | |
| * Get a text attribute associated with a UNumberFormat.
 | |
| * An example of a text attribute is the suffix for positive numbers.  If the formatter
 | |
| * does not understand the attributre, U_UNSUPPORTED_ERROR is returned as the status.
 | |
| * Rule-based formatters only understand UNUM_DEFAULT_RULESET and UNUM_PUBLIC_RULESETS.
 | |
| * @param fmt The formatter to query.
 | |
| * @param tag The attribute to query; one of UNUM_POSITIVE_PREFIX, UNUM_POSITIVE_SUFFIX,
 | |
| * UNUM_NEGATIVE_PREFIX, UNUM_NEGATIVE_SUFFIX, UNUM_PADDING_CHARACTER, UNUM_CURRENCY_CODE,
 | |
| * UNUM_DEFAULT_RULESET, or UNUM_PUBLIC_RULESETS.
 | |
| * @param result A pointer to a buffer to receive the attribute.
 | |
| * @param resultLength The maximum size of result.
 | |
| * @param status A pointer to an UErrorCode to receive any errors
 | |
| * @return The total buffer size needed; if greater than resultLength, the output was truncated.
 | |
| * @see unum_setTextAttribute
 | |
| * @see unum_getAttribute
 | |
| * @see unum_setAttribute
 | |
| * @stable ICU 2.0
 | |
| */
 | |
| U_STABLE int32_t U_EXPORT2 
 | |
| unum_getTextAttribute(    const    UNumberFormat*                    fmt,
 | |
|             UNumberFormatTextAttribute      tag,
 | |
|             UChar*                            result,
 | |
|             int32_t                            resultLength,
 | |
|             UErrorCode*                        status);
 | |
| 
 | |
| /**
 | |
| * Set a text attribute associated with a UNumberFormat.
 | |
| * An example of a text attribute is the suffix for positive numbers.  Rule-based formatters
 | |
| * only understand UNUM_DEFAULT_RULESET.
 | |
| * @param fmt The formatter to set.
 | |
| * @param tag The attribute to set; one of UNUM_POSITIVE_PREFIX, UNUM_POSITIVE_SUFFIX,
 | |
| * UNUM_NEGATIVE_PREFIX, UNUM_NEGATIVE_SUFFIX, UNUM_PADDING_CHARACTER, UNUM_CURRENCY_CODE,
 | |
| * or UNUM_DEFAULT_RULESET.
 | |
| * @param newValue The new value of attr.
 | |
| * @param newValueLength The length of newValue, or -1 if null-terminated.
 | |
| * @param status A pointer to an UErrorCode to receive any errors
 | |
| * @see unum_getTextAttribute
 | |
| * @see unum_getAttribute
 | |
| * @see unum_setAttribute
 | |
| * @stable ICU 2.0
 | |
| */
 | |
| U_STABLE void U_EXPORT2 
 | |
| unum_setTextAttribute(    UNumberFormat*                    fmt,
 | |
|             UNumberFormatTextAttribute      tag,
 | |
|             const    UChar*                            newValue,
 | |
|             int32_t                            newValueLength,
 | |
|             UErrorCode                        *status);
 | |
| 
 | |
| /**
 | |
|  * Extract the pattern from a UNumberFormat.  The pattern will follow
 | |
|  * the DecimalFormat pattern syntax.
 | |
|  * @param fmt The formatter to query.
 | |
|  * @param isPatternLocalized TRUE if the pattern should be localized,
 | |
|  * FALSE otherwise.  This is ignored if the formatter is a rule-based
 | |
|  * formatter.
 | |
|  * @param result A pointer to a buffer to receive the pattern.
 | |
|  * @param resultLength The maximum size of result.
 | |
|  * @param status A pointer to an input-output UErrorCode.
 | |
|  * @return The total buffer size needed; if greater than resultLength,
 | |
|  * the output was truncated.
 | |
|  * @see unum_applyPattern
 | |
|  * @see DecimalFormat
 | |
|  * @stable ICU 2.0
 | |
|  */
 | |
| U_STABLE int32_t U_EXPORT2 
 | |
| unum_toPattern(    const    UNumberFormat*          fmt,
 | |
|         UBool                  isPatternLocalized,
 | |
|         UChar*                  result,
 | |
|         int32_t                 resultLength,
 | |
|         UErrorCode*             status);
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Constants for specifying a number format symbol.
 | |
|  * @stable ICU 2.0
 | |
|  */
 | |
| typedef enum UNumberFormatSymbol {
 | |
|   /** The decimal separator */
 | |
|   UNUM_DECIMAL_SEPARATOR_SYMBOL = 0,
 | |
|   /** The grouping separator */
 | |
|   UNUM_GROUPING_SEPARATOR_SYMBOL = 1,
 | |
|   /** The pattern separator */
 | |
|   UNUM_PATTERN_SEPARATOR_SYMBOL = 2,
 | |
|   /** The percent sign */
 | |
|   UNUM_PERCENT_SYMBOL = 3,
 | |
|   /** Zero*/
 | |
|   UNUM_ZERO_DIGIT_SYMBOL = 4,
 | |
|   /** Character representing a digit in the pattern */
 | |
|   UNUM_DIGIT_SYMBOL = 5,
 | |
|   /** The minus sign */
 | |
|   UNUM_MINUS_SIGN_SYMBOL = 6,
 | |
|   /** The plus sign */
 | |
|   UNUM_PLUS_SIGN_SYMBOL = 7,
 | |
|   /** The currency symbol */
 | |
|   UNUM_CURRENCY_SYMBOL = 8,
 | |
|   /** The international currency symbol */
 | |
|   UNUM_INTL_CURRENCY_SYMBOL = 9,
 | |
|   /** The monetary separator */
 | |
|   UNUM_MONETARY_SEPARATOR_SYMBOL = 10,
 | |
|   /** The exponential symbol */
 | |
|   UNUM_EXPONENTIAL_SYMBOL = 11,
 | |
|   /** Per mill symbol */
 | |
|   UNUM_PERMILL_SYMBOL = 12,
 | |
|   /** Escape padding character */
 | |
|   UNUM_PAD_ESCAPE_SYMBOL = 13,
 | |
|   /** Infinity symbol */
 | |
|   UNUM_INFINITY_SYMBOL = 14,
 | |
|   /** Nan symbol */
 | |
|   UNUM_NAN_SYMBOL = 15,
 | |
|   /** Significant digit symbol
 | |
|    * @stable ICU 3.0 */
 | |
|   UNUM_SIGNIFICANT_DIGIT_SYMBOL = 16,
 | |
|   /** The monetary grouping separator 
 | |
|    * @stable ICU 3.6
 | |
|    */
 | |
|   UNUM_MONETARY_GROUPING_SEPARATOR_SYMBOL = 17,  
 | |
|   /** One
 | |
|    * @draft ICU 4.6
 | |
|    */
 | |
|   UNUM_ONE_DIGIT_SYMBOL = 18,
 | |
|   /** Two
 | |
|    * @draft ICU 4.6
 | |
|    */
 | |
|   UNUM_TWO_DIGIT_SYMBOL = 19,
 | |
|   /** Three
 | |
|    * @draft ICU 4.6
 | |
|    */
 | |
|   UNUM_THREE_DIGIT_SYMBOL = 20,
 | |
|   /** Four
 | |
|    * @draft ICU 4.6
 | |
|    */
 | |
|   UNUM_FOUR_DIGIT_SYMBOL = 21,
 | |
|   /** Five
 | |
|    * @draft ICU 4.6
 | |
|    */
 | |
|   UNUM_FIVE_DIGIT_SYMBOL = 22,
 | |
|   /** Six
 | |
|    * @draft ICU 4.6
 | |
|    */
 | |
|   UNUM_SIX_DIGIT_SYMBOL = 23,
 | |
|   /** Seven
 | |
|     * @draft ICU 4.6
 | |
|    */
 | |
|   UNUM_SEVEN_DIGIT_SYMBOL = 24,
 | |
|   /** Eight
 | |
|    * @draft ICU 4.6
 | |
|    */
 | |
|   UNUM_EIGHT_DIGIT_SYMBOL = 25,
 | |
|   /** Nine
 | |
|    * @draft ICU 4.6
 | |
|    */
 | |
|   UNUM_NINE_DIGIT_SYMBOL = 26,
 | |
|   /** count symbol constants */
 | |
|   UNUM_FORMAT_SYMBOL_COUNT = 27
 | |
| } UNumberFormatSymbol;
 | |
| 
 | |
| /**
 | |
| * Get a symbol associated with a UNumberFormat.
 | |
| * A UNumberFormat uses symbols to represent the special locale-dependent
 | |
| * characters in a number, for example the percent sign. This API is not
 | |
| * supported for rule-based formatters.
 | |
| * @param fmt The formatter to query.
 | |
| * @param symbol The UNumberFormatSymbol constant for the symbol to get
 | |
| * @param buffer The string buffer that will receive the symbol string;
 | |
| *               if it is NULL, then only the length of the symbol is returned
 | |
| * @param size The size of the string buffer
 | |
| * @param status A pointer to an UErrorCode to receive any errors
 | |
| * @return The length of the symbol; the buffer is not modified if
 | |
| *         <code>length>=size</code>
 | |
| * @see unum_setSymbol
 | |
| * @stable ICU 2.0
 | |
| */
 | |
| U_STABLE int32_t U_EXPORT2
 | |
| unum_getSymbol(const UNumberFormat *fmt,
 | |
|                UNumberFormatSymbol symbol,
 | |
|                UChar *buffer,
 | |
|                int32_t size,
 | |
|                UErrorCode *status);
 | |
| 
 | |
| /**
 | |
| * Set a symbol associated with a UNumberFormat.
 | |
| * A UNumberFormat uses symbols to represent the special locale-dependent
 | |
| * characters in a number, for example the percent sign.  This API is not
 | |
| * supported for rule-based formatters.
 | |
| * @param fmt The formatter to set.
 | |
| * @param symbol The UNumberFormatSymbol constant for the symbol to set
 | |
| * @param value The string to set the symbol to
 | |
| * @param length The length of the string, or -1 for a zero-terminated string
 | |
| * @param status A pointer to an UErrorCode to receive any errors.
 | |
| * @see unum_getSymbol
 | |
| * @stable ICU 2.0
 | |
| */
 | |
| U_STABLE void U_EXPORT2
 | |
| unum_setSymbol(UNumberFormat *fmt,
 | |
|                UNumberFormatSymbol symbol,
 | |
|                const UChar *value,
 | |
|                int32_t length,
 | |
|                UErrorCode *status);
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Get the locale for this number format object.
 | |
|  * You can choose between valid and actual locale.
 | |
|  * @param fmt The formatter to get the locale from
 | |
|  * @param type type of the locale we're looking for (valid or actual) 
 | |
|  * @param status error code for the operation
 | |
|  * @return the locale name
 | |
|  * @stable ICU 2.8
 | |
|  */
 | |
| U_STABLE const char* U_EXPORT2
 | |
| unum_getLocaleByType(const UNumberFormat *fmt,
 | |
|                      ULocDataLocaleType type,
 | |
|                      UErrorCode* status); 
 | |
| 
 | |
| #endif /* #if !UCONFIG_NO_FORMATTING */
 | |
| 
 | |
| #endif | 
