ICU 57.1  57.1
unum.h
Go to the documentation of this file.
1 /*
2 *******************************************************************************
3 * Copyright (C) 1997-2015, International Business Machines Corporation and others.
4 * All Rights Reserved.
5 * Modification History:
6 *
7 * Date Name Description
8 * 06/24/99 helena Integrated Alan's NF enhancements and Java2 bug fixes
9 *******************************************************************************
10 */
11 
12 #ifndef _UNUM
13 #define _UNUM
14 
15 #include "unicode/utypes.h"
16 
17 #if !UCONFIG_NO_FORMATTING
18 
19 #include "unicode/localpointer.h"
20 #include "unicode/uloc.h"
21 #include "unicode/ucurr.h"
22 #include "unicode/umisc.h"
23 #include "unicode/parseerr.h"
24 #include "unicode/uformattable.h"
26 
134 typedef void* UNumberFormat;
135 
139 typedef enum UNumberFormatStyle {
222 #ifndef U_HIDE_DRAFT_API
223 
244 #endif /* U_HIDE_DRAFT_API */
245 
251 
263 
268  UNUM_ROUND_CEILING,
269  UNUM_ROUND_FLOOR,
270  UNUM_ROUND_DOWN,
271  UNUM_ROUND_UP,
277 #ifndef U_HIDE_DEPRECATED_API
278 
283 #endif /* U_HIDE_DEPRECATED_API */
284  UNUM_ROUND_HALFDOWN = UNUM_ROUND_HALFEVEN + 1,
285  UNUM_ROUND_HALFUP,
292 
297  UNUM_PAD_BEFORE_PREFIX,
298  UNUM_PAD_AFTER_PREFIX,
299  UNUM_PAD_BEFORE_SUFFIX,
300  UNUM_PAD_AFTER_SUFFIX
302 
307 typedef enum UNumberCompactStyle {
314 
328 };
337 typedef enum UNumberFormatFields {
363 
364 
398 U_STABLE UNumberFormat* U_EXPORT2
400  const UChar* pattern,
401  int32_t patternLength,
402  const char* locale,
403  UParseError* parseErr,
404  UErrorCode* status);
405 
406 
413 U_STABLE void U_EXPORT2
415 
416 #if U_SHOW_CPLUSPLUS_API
417 
419 
430 
432 
433 #endif
434 
443 U_STABLE UNumberFormat* U_EXPORT2
444 unum_clone(const UNumberFormat *fmt,
445  UErrorCode *status);
446 
471 U_STABLE int32_t U_EXPORT2
472 unum_format( const UNumberFormat* fmt,
473  int32_t number,
474  UChar* result,
475  int32_t resultLength,
476  UFieldPosition *pos,
477  UErrorCode* status);
478 
503 U_STABLE int32_t U_EXPORT2
505  int64_t number,
506  UChar* result,
507  int32_t resultLength,
508  UFieldPosition *pos,
509  UErrorCode* status);
510 
535 U_STABLE int32_t U_EXPORT2
536 unum_formatDouble( const UNumberFormat* fmt,
537  double number,
538  UChar* result,
539  int32_t resultLength,
540  UFieldPosition *pos, /* 0 if ignore */
541  UErrorCode* status);
542 
571 U_STABLE int32_t U_EXPORT2
573  const char * number,
574  int32_t length,
575  UChar* result,
576  int32_t resultLength,
577  UFieldPosition *pos, /* 0 if ignore */
578  UErrorCode* status);
579 
604 U_STABLE int32_t U_EXPORT2
606  double number,
607  UChar* currency,
608  UChar* result,
609  int32_t resultLength,
610  UFieldPosition* pos,
611  UErrorCode* status);
612 
633 U_STABLE int32_t U_EXPORT2
635  const UFormattable *number,
636  UChar *result,
637  int32_t resultLength,
638  UFieldPosition *pos,
639  UErrorCode *status);
640 
660 U_STABLE int32_t U_EXPORT2
661 unum_parse( const UNumberFormat* fmt,
662  const UChar* text,
663  int32_t textLength,
664  int32_t *parsePos /* 0 = start */,
665  UErrorCode *status);
666 
686 U_STABLE int64_t U_EXPORT2
687 unum_parseInt64(const UNumberFormat* fmt,
688  const UChar* text,
689  int32_t textLength,
690  int32_t *parsePos /* 0 = start */,
691  UErrorCode *status);
692 
712 U_STABLE double U_EXPORT2
713 unum_parseDouble( const UNumberFormat* fmt,
714  const UChar* text,
715  int32_t textLength,
716  int32_t *parsePos /* 0 = start */,
717  UErrorCode *status);
718 
719 
747 U_STABLE int32_t U_EXPORT2
749  const UChar* text,
750  int32_t textLength,
751  int32_t *parsePos /* 0 = start */,
752  char *outBuf,
753  int32_t outBufLength,
754  UErrorCode *status);
755 
775 U_STABLE double U_EXPORT2
777  const UChar* text,
778  int32_t textLength,
779  int32_t* parsePos, /* 0 = start */
780  UChar* currency,
781  UErrorCode* status);
782 
803 U_STABLE UFormattable* U_EXPORT2
805  UFormattable *result,
806  const UChar* text,
807  int32_t textLength,
808  int32_t* parsePos, /* 0 = start */
809  UErrorCode* status);
810 
827 U_STABLE void U_EXPORT2
829  UBool localized,
830  const UChar *pattern,
831  int32_t patternLength,
832  UParseError *parseError,
833  UErrorCode *status
834  );
835 
846 U_STABLE const char* U_EXPORT2
847 unum_getAvailable(int32_t localeIndex);
848 
858 U_STABLE int32_t U_EXPORT2
859 unum_countAvailable(void);
860 
861 #if UCONFIG_HAVE_PARSEALLINPUT
862 /* The UNumberFormatAttributeValue type cannot be #ifndef U_HIDE_INTERNAL_API, needed for .h variable declaration */
866 typedef enum UNumberFormatAttributeValue {
867 #ifndef U_HIDE_INTERNAL_API
868 
869  UNUM_NO = 0,
871  UNUM_YES = 1,
873  UNUM_MAYBE = 2
874 #else
875 
876  UNUM_FORMAT_ATTRIBUTE_VALUE_HIDDEN
877 #endif /* U_HIDE_INTERNAL_API */
878 } UNumberFormatAttributeValue;
879 #endif
880 
928 #if UCONFIG_HAVE_PARSEALLINPUT
929 
933  UNUM_PARSE_ALL_INPUT = 20,
934 #endif
935 
945 #ifndef U_HIDE_INTERNAL_API
946 
953  /* TODO: test C API when it becomes @draft */
954 #endif /* U_HIDE_INTERNAL_API */
955 
963 
964  /* The following cannot be #ifndef U_HIDE_INTERNAL_API, needed in .h file variable declararions */
969 
983 
993 
994  /* The following cannot be #ifndef U_HIDE_INTERNAL_API, needed in .h file variable declararions */
999 
1017 U_STABLE int32_t U_EXPORT2
1018 unum_getAttribute(const UNumberFormat* fmt,
1019  UNumberFormatAttribute attr);
1020 
1040 U_STABLE void U_EXPORT2
1043  int32_t newValue);
1044 
1045 
1060 U_STABLE double U_EXPORT2
1062  UNumberFormatAttribute attr);
1063 
1078 U_STABLE void U_EXPORT2
1081  double newValue);
1082 
1116 
1135 U_STABLE int32_t U_EXPORT2
1138  UChar* result,
1139  int32_t resultLength,
1140  UErrorCode* status);
1141 
1158 U_STABLE void U_EXPORT2
1161  const UChar* newValue,
1162  int32_t newValueLength,
1163  UErrorCode *status);
1164 
1181 U_STABLE int32_t U_EXPORT2
1182 unum_toPattern( const UNumberFormat* fmt,
1183  UBool isPatternLocalized,
1184  UChar* result,
1185  int32_t resultLength,
1186  UErrorCode* status);
1187 
1188 
1193 typedef enum UNumberFormatSymbol {
1269 
1274 
1278 
1295 U_STABLE int32_t U_EXPORT2
1296 unum_getSymbol(const UNumberFormat *fmt,
1297  UNumberFormatSymbol symbol,
1298  UChar *buffer,
1299  int32_t size,
1300  UErrorCode *status);
1301 
1315 U_STABLE void U_EXPORT2
1317  UNumberFormatSymbol symbol,
1318  const UChar *value,
1319  int32_t length,
1320  UErrorCode *status);
1321 
1322 
1332 U_STABLE const char* U_EXPORT2
1334  ULocDataLocaleType type,
1335  UErrorCode* status);
1336 
1345 U_STABLE void U_EXPORT2
1347 
1357 U_STABLE UDisplayContext U_EXPORT2
1358 unum_getContext(const UNumberFormat *fmt, UDisplayContextType type, UErrorCode* status);
1359 
1360 #endif /* #if !UCONFIG_NO_FORMATTING */
1361 
1362 #endif
Default format.
Definition: unum.h:256
void unum_setDoubleAttribute(UNumberFormat *fmt, UNumberFormatAttribute attr, double newValue)
Set a numeric attribute associated with a UNumberFormat.
C API: UFormattable is a thin wrapper for primitive types used for formatting and parsing...
void unum_setSymbol(UNumberFormat *fmt, UNumberFormatSymbol symbol, const UChar *value, int32_t length, UErrorCode *status)
Set a symbol associated with a UNumberFormat.
UNumberFormatRoundingMode
The possible number format rounding modes.
Definition: unum.h:267
double unum_getDoubleAttribute(const UNumberFormat *fmt, UNumberFormatAttribute attr)
Get a numeric attribute associated with a UNumberFormat.
The exponential symbol.
Definition: unum.h:1217
The monetary grouping separator.
Definition: unum.h:1232
One more than the highest number format style constant.
Definition: unum.h:250
Negative prefix.
Definition: unum.h:1090
void unum_setContext(UNumberFormat *fmt, UDisplayContext value, UErrorCode *status)
Set a particular UDisplayContext value in the formatter, such as UDISPCTX_CAPITALIZATION_FOR_STANDALO...
Numbering system rule-based format.
Definition: unum.h:192
const char * unum_getAvailable(int32_t localeIndex)
Get a locale for which decimal formatting patterns are available.
Currency format (generic).
Definition: unum.h:158
Decimal format ("normal" style).
Definition: unum.h:149
void unum_applyPattern(UNumberFormat *format, UBool localized, const UChar *pattern, int32_t patternLength, UParseError *parseError, UErrorCode *status)
Set the pattern used by a UNumberFormat.
if this attribute is set to 1, specifies that, if the pattern doesn't contain an exponent, the exponent will not be parsed.
Definition: unum.h:982
UDisplayContext
Display context settings.
Significant digit symbol.
Definition: unum.h:1228
Currency format with a currency symbol, e.g., "$1.00", using non-accounting style for negative values...
Definition: unum.h:243
int32_t unum_parseDecimal(const UNumberFormat *fmt, const UChar *text, int32_t textLength, int32_t *parsePos, char *outBuf, int32_t outBufLength, UErrorCode *status)
Parse a number from a string into an unformatted numeric string using a UNumberFormat.
Rule-based format defined by a pattern string.
Definition: unum.h:197
Lenient parse mode used by rule-based formats.
Definition: unum.h:927
Decimal format expressed using compact notation (short form, corresponds to UNumberCompactStyle=UNUM_...
Definition: unum.h:229
UCurrencySpacing
Constants for specifying currency spacing.
Definition: unum.h:319
double unum_parseDoubleCurrency(const UNumberFormat *fmt, const UChar *text, int32_t textLength, int32_t *parsePos, UChar *currency, UErrorCode *status)
Parse a string into a double and a currency using a UNumberFormat.
C API:misc definitions.
ROUND_UNNECESSARY reports an error if formatted result is not exact.
Definition: unum.h:290
int32_t unum_formatInt64(const UNumberFormat *fmt, int64_t number, UChar *result, int32_t resultLength, UFieldPosition *pos, UErrorCode *status)
Format an int64 using a UNumberFormat.
int32_t unum_format(const UNumberFormat *fmt, int32_t number, UChar *result, int32_t resultLength, UFieldPosition *pos, UErrorCode *status)
Format an integer using a UNumberFormat.
The grouping separator.
Definition: unum.h:1197
Limit of boolean attributes.
Definition: unum.h:997
Integer digits.
Definition: unum.h:894
Fraction digits.
Definition: unum.h:900
UNumberFormatSymbol
Constants for specifying a number format symbol.
Definition: unum.h:1193
Half-even rounding, misspelled name.
Definition: unum.h:282
Positive prefix.
Definition: unum.h:1086
The ISO currency code.
Definition: unum.h:1096
Multiplication sign.
Definition: unum.h:1273
C API: Display context types (enum values)
The minus sign.
Definition: unum.h:1207
Nan symbol.
Definition: unum.h:1225
Currency format with an ISO currency code, e.g., "USD1.00".
Definition: unum.h:202
int32_t unum_formatUFormattable(const UNumberFormat *fmt, const UFormattable *number, UChar *result, int32_t resultLength, UFieldPosition *pos, UErrorCode *status)
Format a UFormattable into a string.
Currency format with a currency symbol given CASH usage, e.g., "NT$3" instead of "NT$3.23".
Definition: unum.h:221
int64_t unum_parseInt64(const UNumberFormat *fmt, const UChar *text, int32_t textLength, int32_t *parsePos, UErrorCode *status)
Parse a string into an int64 using a UNumberFormat.
Decimal format defined by a pattern string.
Definition: unum.h:144
Use significant digits.
Definition: unum.h:917
Percent format.
Definition: unum.h:163
Half-even rounding.
Definition: unum.h:276
The position at which padding will take place.
Definition: unum.h:912
Decimal format expressed using compact notation (long form, corresponds to UNumberCompactStyle=UNUM_L...
Definition: unum.h:236
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:129
Spellout rule-based format.
Definition: unum.h:175
int32_t unum_getTextAttribute(const UNumberFormat *fmt, UNumberFormatTextAttribute tag, UChar *result, int32_t resultLength, UErrorCode *status)
Get a text attribute associated with a UNumberFormat.
UNumberFormatStyle
The possible number format styles.
Definition: unum.h:139
int32_t unum_countAvailable(void)
Determine how many locales have decimal formatting patterns available.
The percent sign.
Definition: unum.h:1201
Infinity symbol.
Definition: unum.h:1223
#define U_DEFINE_LOCAL_OPEN_POINTER(LocalPointerClassName, Type, closeFunction)
"Smart pointer" definition macro, deletes objects via the closeFunction.
Definition: localpointer.h:536
void * UNumberFormat
A number formatter.
Definition: unum.h:134
Minimum fraction digits.
Definition: unum.h:898
A struct representing a range of text containing a specific field.
Definition: umisc.h:32
UNumberFormatFields
FieldPosition and UFieldPosition selectors for format fields defined by NumberFormat and UNumberForma...
Definition: unum.h:337
C++ API: "Smart pointers" for use with and in ICU4C C++ code.
C API: Encapsulates information about a currency.
Maximum significant digits.
Definition: unum.h:923
Currency format with a pluralized currency name, e.g., "1.00 US dollar" and "3.00 US dollars"...
Definition: unum.h:208
count symbol constants
Definition: unum.h:1276
Parse integers only.
Definition: unum.h:884
Scale, which adjusts the position of the decimal point when formatting.
Definition: unum.h:944
UNumberFormatTextAttribute
The possible UNumberFormat text attributes.
Definition: unum.h:1084
UNumberFormat * unum_clone(const UNumberFormat *fmt, UErrorCode *status)
Open a copy of a UNumberFormat.
Maximum fraction digits.
Definition: unum.h:896
Secondary grouping size.
Definition: unum.h:914
The width to which the output of format() is padded.
Definition: unum.h:910
Alias for UNUM_PATTERN_DECIMAL.
Definition: unum.h:261
"Smart pointer" class, closes a UNumberFormat via unum_close().
One below the first bitfield-boolean item.
Definition: unum.h:968
UNumberFormatPadPosition
The possible number format pad positions.
Definition: unum.h:296
Per mill symbol.
Definition: unum.h:1219
The pattern separator.
Definition: unum.h:1199
UDisplayContext unum_getContext(const UNumberFormat *fmt, UDisplayContextType type, UErrorCode *status)
Get the formatter's UDisplayContext value for the specified UDisplayContextType, such as UDISPCTX_TYP...
Scientific format.
Definition: unum.h:168
Use grouping separator.
Definition: unum.h:886
Minimum grouping digits, technology preview.
Definition: unum.h:952
int32_t unum_formatDouble(const UNumberFormat *fmt, double number, UChar *result, int32_t resultLength, UFieldPosition *pos, UErrorCode *status)
Format a double using a UNumberFormat.
If 1, specifies that if setting the "max integer digits" attribute would truncate a value...
Definition: unum.h:975
uint16_t UChar
Define UChar to be UCHAR_TYPE, if that is #defined (for example, to char16_t), or wchar_t if that is ...
Definition: umachine.h:312
Positive suffix.
Definition: unum.h:1088
Multiplier.
Definition: unum.h:902
Minimum integer digits.
Definition: unum.h:892
const char * unum_getLocaleByType(const UNumberFormat *fmt, ULocDataLocaleType type, UErrorCode *status)
Get the locale for this number format object.
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:130
UNumberCompactStyle
Constants for specifying short or long format.
Definition: unum.h:307
UDisplayContextType
Display context types, for getting values of a particular setting.
Ordinal rule-based format .
Definition: unum.h:182
Escape padding character.
Definition: unum.h:1221
C API: Parse Error Information.
void unum_setAttribute(UNumberFormat *fmt, UNumberFormatAttribute attr, int32_t newValue)
Set a numeric attribute associated with a UNumberFormat.
The character used to pad to the format width.
Definition: unum.h:1094
if this attribute is set to 1, specifies that, if the pattern contains a decimal mark the input is re...
Definition: unum.h:992
UNumberFormat * unum_open(UNumberFormatStyle style, const UChar *pattern, int32_t patternLength, const char *locale, UParseError *parseErr, UErrorCode *status)
Create and return a new UNumberFormat for formatting and parsing numbers.
Rounding Mode.
Definition: unum.h:906
The decimal separator.
Definition: unum.h:1195
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers...
Definition: utypes.h:476
ULocDataLocaleType
Constants for *_getLocale() Allow user to select whether she wants information on requested...
Definition: uloc.h:336
Currency format for accounting, e.g., "($3.00)" for negative currency amount instead of "-$3...
Definition: unum.h:215
double unum_parseDouble(const UNumberFormat *fmt, const UChar *text, int32_t textLength, int32_t *parsePos, UErrorCode *status)
Parse a string into a double using a UNumberFormat.
int32_t unum_getSymbol(const UNumberFormat *fmt, UNumberFormatSymbol symbol, UChar *buffer, int32_t size, UErrorCode *status)
Get a symbol associated with a UNumberFormat.
Rounding increment.
Definition: unum.h:908
Minimum significant digits.
Definition: unum.h:920
A UParseError struct is used to returned detailed information about parsing errors.
Definition: parseerr.h:56
int32_t unum_formatDoubleCurrency(const UNumberFormat *fmt, double number, UChar *currency, UChar *result, int32_t resultLength, UFieldPosition *pos, UErrorCode *status)
Format a double currency amount using a UNumberFormat.
Basic definitions for ICU, for both C and C++ APIs.
UFormattable * unum_parseToUFormattable(const UNumberFormat *fmt, UFormattable *result, const UChar *text, int32_t textLength, int32_t *parsePos, UErrorCode *status)
Parse a UChar string into a UFormattable.
The international currency symbol.
Definition: unum.h:1213
int32_t unum_getAttribute(const UNumberFormat *fmt, UNumberFormatAttribute attr)
Get a numeric attribute associated with a UNumberFormat.
The default rule set, such as "%spellout-numbering-year:", "%spellout-cardinal:", "%spellout-ordinal-...
Definition: unum.h:1105
The monetary separator.
Definition: unum.h:1215
int32_t unum_toPattern(const UNumberFormat *fmt, UBool isPatternLocalized, UChar *result, int32_t resultLength, UErrorCode *status)
Extract the pattern from a UNumberFormat.
int32_t unum_formatDecimal(const UNumberFormat *fmt, const char *number, int32_t length, UChar *result, int32_t resultLength, UFieldPosition *pos, UErrorCode *status)
Format a decimal number using a UNumberFormat.
if this attribute is set to 0, it is set to UNUM_CURRENCY_STANDARD purpose, otherwise it is UNUM_CURR...
Definition: unum.h:962
The currency symbol.
Definition: unum.h:1211
The plus sign.
Definition: unum.h:1209
Duration rule-based format.
Definition: unum.h:187
void * UFormattable
Opaque type representing various types of data which may be used for formatting and parsing operation...
Definition: uformattable.h:62
UNumberFormatAttribute
The possible UNumberFormat numeric attributes.
Definition: unum.h:882
void unum_close(UNumberFormat *fmt)
Close a UNumberFormat.
Negative suffix.
Definition: unum.h:1092
Grouping size.
Definition: unum.h:904
int32_t unum_parse(const UNumberFormat *fmt, const UChar *text, int32_t textLength, int32_t *parsePos, UErrorCode *status)
Parse a string into an integer using a UNumberFormat.
The public rule sets.
Definition: unum.h:1114
#define U_STABLE
This is used to declare a function as a stable public ICU C API.
Definition: umachine.h:109
int8_t UBool
The ICU boolean type.
Definition: umachine.h:234
Maximum integer digits.
Definition: unum.h:890
Character representing a digit in the pattern.
Definition: unum.h:1205
C API: Locale.
Always show decimal point.
Definition: unum.h:888
void unum_setTextAttribute(UNumberFormat *fmt, UNumberFormatTextAttribute tag, const UChar *newValue, int32_t newValueLength, UErrorCode *status)
Set a text attribute associated with a UNumberFormat.