| Index: icu46/source/i18n/unicode/unum.h
|
| ===================================================================
|
| --- icu46/source/i18n/unicode/unum.h (revision 0)
|
| +++ icu46/source/i18n/unicode/unum.h (revision 0)
|
| @@ -0,0 +1,999 @@
|
| +/*
|
| +*******************************************************************************
|
| +* 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 "unicode/uloc.h"
|
| +#include "unicode/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
|
| +} 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
|
|
|
| Property changes on: icu46/source/i18n/unicode/unum.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|