ICU 58.2  58.2
unum.h
Go to the documentation of this file.
1 // Copyright (C) 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 *******************************************************************************
5 * Copyright (C) 1997-2015, International Business Machines Corporation and others.
6 * All Rights Reserved.
7 * Modification History:
8 *
9 * Date Name Description
10 * 06/24/99 helena Integrated Alan's NF enhancements and Java2 bug fixes
11 *******************************************************************************
12 */
13 
14 #ifndef _UNUM
15 #define _UNUM
16 
17 #include "unicode/utypes.h"
18 
19 #if !UCONFIG_NO_FORMATTING
20 
21 #include "unicode/localpointer.h"
22 #include "unicode/uloc.h"
23 #include "unicode/ucurr.h"
24 #include "unicode/umisc.h"
25 #include "unicode/parseerr.h"
26 #include "unicode/uformattable.h"
28 
136 typedef void* UNumberFormat;
137 
141 typedef enum UNumberFormatStyle {
245 
246 #ifndef U_HIDE_DEPRECATED_API
247 
252 #endif // U_HIDE_DEPRECATED_API
253 
265 
270  UNUM_ROUND_CEILING,
271  UNUM_ROUND_FLOOR,
272  UNUM_ROUND_DOWN,
273  UNUM_ROUND_UP,
279 #ifndef U_HIDE_DEPRECATED_API
280 
285 #endif /* U_HIDE_DEPRECATED_API */
286  UNUM_ROUND_HALFDOWN = UNUM_ROUND_HALFEVEN + 1,
287  UNUM_ROUND_HALFUP,
294 
299  UNUM_PAD_BEFORE_PREFIX,
300  UNUM_PAD_AFTER_PREFIX,
301  UNUM_PAD_BEFORE_SUFFIX,
302  UNUM_PAD_AFTER_SUFFIX
304 
309 typedef enum UNumberCompactStyle {
316 
328 
329  // Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
330  // it is needed for layout of DecimalFormatSymbols object.
336 };
345 typedef enum UNumberFormatFields {
368 #ifndef U_HIDE_DEPRECATED_API
369 
374 #endif // U_HIDE_DEPRECATED_API
376 
377 
411 U_STABLE UNumberFormat* U_EXPORT2
413  const UChar* pattern,
414  int32_t patternLength,
415  const char* locale,
416  UParseError* parseErr,
417  UErrorCode* status);
418 
419 
426 U_STABLE void U_EXPORT2
428 
429 #if U_SHOW_CPLUSPLUS_API
430 
432 
443 
445 
446 #endif
447 
456 U_STABLE UNumberFormat* U_EXPORT2
457 unum_clone(const UNumberFormat *fmt,
458  UErrorCode *status);
459 
484 U_STABLE int32_t U_EXPORT2
485 unum_format( const UNumberFormat* fmt,
486  int32_t number,
487  UChar* result,
488  int32_t resultLength,
489  UFieldPosition *pos,
490  UErrorCode* status);
491 
516 U_STABLE int32_t U_EXPORT2
518  int64_t number,
519  UChar* result,
520  int32_t resultLength,
521  UFieldPosition *pos,
522  UErrorCode* status);
523 
548 U_STABLE int32_t U_EXPORT2
549 unum_formatDouble( const UNumberFormat* fmt,
550  double number,
551  UChar* result,
552  int32_t resultLength,
553  UFieldPosition *pos, /* 0 if ignore */
554  UErrorCode* status);
555 
584 U_STABLE int32_t U_EXPORT2
586  const char * number,
587  int32_t length,
588  UChar* result,
589  int32_t resultLength,
590  UFieldPosition *pos, /* 0 if ignore */
591  UErrorCode* status);
592 
617 U_STABLE int32_t U_EXPORT2
619  double number,
620  UChar* currency,
621  UChar* result,
622  int32_t resultLength,
623  UFieldPosition* pos,
624  UErrorCode* status);
625 
646 U_STABLE int32_t U_EXPORT2
648  const UFormattable *number,
649  UChar *result,
650  int32_t resultLength,
651  UFieldPosition *pos,
652  UErrorCode *status);
653 
673 U_STABLE int32_t U_EXPORT2
674 unum_parse( const UNumberFormat* fmt,
675  const UChar* text,
676  int32_t textLength,
677  int32_t *parsePos /* 0 = start */,
678  UErrorCode *status);
679 
699 U_STABLE int64_t U_EXPORT2
700 unum_parseInt64(const UNumberFormat* fmt,
701  const UChar* text,
702  int32_t textLength,
703  int32_t *parsePos /* 0 = start */,
704  UErrorCode *status);
705 
725 U_STABLE double U_EXPORT2
726 unum_parseDouble( const UNumberFormat* fmt,
727  const UChar* text,
728  int32_t textLength,
729  int32_t *parsePos /* 0 = start */,
730  UErrorCode *status);
731 
732 
760 U_STABLE int32_t U_EXPORT2
762  const UChar* text,
763  int32_t textLength,
764  int32_t *parsePos /* 0 = start */,
765  char *outBuf,
766  int32_t outBufLength,
767  UErrorCode *status);
768 
788 U_STABLE double U_EXPORT2
790  const UChar* text,
791  int32_t textLength,
792  int32_t* parsePos, /* 0 = start */
793  UChar* currency,
794  UErrorCode* status);
795 
816 U_STABLE UFormattable* U_EXPORT2
818  UFormattable *result,
819  const UChar* text,
820  int32_t textLength,
821  int32_t* parsePos, /* 0 = start */
822  UErrorCode* status);
823 
840 U_STABLE void U_EXPORT2
842  UBool localized,
843  const UChar *pattern,
844  int32_t patternLength,
845  UParseError *parseError,
846  UErrorCode *status
847  );
848 
859 U_STABLE const char* U_EXPORT2
860 unum_getAvailable(int32_t localeIndex);
861 
871 U_STABLE int32_t U_EXPORT2
872 unum_countAvailable(void);
873 
874 #if UCONFIG_HAVE_PARSEALLINPUT
875 /* The UNumberFormatAttributeValue type cannot be #ifndef U_HIDE_INTERNAL_API, needed for .h variable declaration */
879 typedef enum UNumberFormatAttributeValue {
880 #ifndef U_HIDE_INTERNAL_API
881 
882  UNUM_NO = 0,
884  UNUM_YES = 1,
886  UNUM_MAYBE = 2
887 #else
888 
889  UNUM_FORMAT_ATTRIBUTE_VALUE_HIDDEN
890 #endif /* U_HIDE_INTERNAL_API */
891 } UNumberFormatAttributeValue;
892 #endif
893 
941 #if UCONFIG_HAVE_PARSEALLINPUT
942 
946  UNUM_PARSE_ALL_INPUT = 20,
947 #endif
948 
958 #ifndef U_HIDE_INTERNAL_API
959 
966  /* TODO: test C API when it becomes @draft */
967 #endif /* U_HIDE_INTERNAL_API */
968 
976 
977  /* The following cannot be #ifndef U_HIDE_INTERNAL_API, needed in .h file variable declararions */
982 
996 
1006 
1007  /* The following cannot be #ifndef U_HIDE_INTERNAL_API, needed in .h file variable declararions */
1012 
1030 U_STABLE int32_t U_EXPORT2
1031 unum_getAttribute(const UNumberFormat* fmt,
1032  UNumberFormatAttribute attr);
1033 
1053 U_STABLE void U_EXPORT2
1056  int32_t newValue);
1057 
1058 
1073 U_STABLE double U_EXPORT2
1075  UNumberFormatAttribute attr);
1076 
1091 U_STABLE void U_EXPORT2
1094  double newValue);
1095 
1129 
1148 U_STABLE int32_t U_EXPORT2
1151  UChar* result,
1152  int32_t resultLength,
1153  UErrorCode* status);
1154 
1171 U_STABLE void U_EXPORT2
1174  const UChar* newValue,
1175  int32_t newValueLength,
1176  UErrorCode *status);
1177 
1194 U_STABLE int32_t U_EXPORT2
1195 unum_toPattern( const UNumberFormat* fmt,
1196  UBool isPatternLocalized,
1197  UChar* result,
1198  int32_t resultLength,
1199  UErrorCode* status);
1200 
1201 
1206 typedef enum UNumberFormatSymbol {
1282 
1287 
1288 #ifndef U_HIDE_DEPRECATED_API
1289 
1294 #endif // U_HIDE_DEPRECATED_API
1296 
1313 U_STABLE int32_t U_EXPORT2
1314 unum_getSymbol(const UNumberFormat *fmt,
1315  UNumberFormatSymbol symbol,
1316  UChar *buffer,
1317  int32_t size,
1318  UErrorCode *status);
1319 
1333 U_STABLE void U_EXPORT2
1335  UNumberFormatSymbol symbol,
1336  const UChar *value,
1337  int32_t length,
1338  UErrorCode *status);
1339 
1340 
1350 U_STABLE const char* U_EXPORT2
1352  ULocDataLocaleType type,
1353  UErrorCode* status);
1354 
1363 U_STABLE void U_EXPORT2
1365 
1375 U_STABLE UDisplayContext U_EXPORT2
1376 unum_getContext(const UNumberFormat *fmt, UDisplayContextType type, UErrorCode* status);
1377 
1378 #endif /* #if !UCONFIG_NO_FORMATTING */
1379 
1380 #endif
Default format.
Definition: unum.h:258
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:269
double unum_getDoubleAttribute(const UNumberFormat *fmt, UNumberFormatAttribute attr)
Get a numeric attribute associated with a UNumberFormat.
The exponential symbol.
Definition: unum.h:1230
The monetary grouping separator.
Definition: unum.h:1245
One more than the highest normal UNumberFormatStyle value.
Definition: unum.h:251
Negative prefix.
Definition: unum.h:1103
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:194
const char * unum_getAvailable(int32_t localeIndex)
Get a locale for which decimal formatting patterns are available.
Currency format (generic).
Definition: unum.h:160
Decimal format ("normal" style).
Definition: unum.h:151
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:995
UDisplayContext
Display context settings.
Significant digit symbol.
Definition: unum.h:1241
Currency format with a currency symbol, e.g., "$1.00", using non-accounting style for negative values...
Definition: unum.h:244
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:199
Lenient parse mode used by rule-based formats.
Definition: unum.h:940
Decimal format expressed using compact notation (short form, corresponds to UNumberCompactStyle=UNUM_...
Definition: unum.h:230
UCurrencySpacing
Constants for specifying currency spacing.
Definition: unum.h:321
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:292
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:1210
Limit of boolean attributes.
Definition: unum.h:1010
Integer digits.
Definition: unum.h:907
Fraction digits.
Definition: unum.h:913
UNumberFormatSymbol
Constants for specifying a number format symbol.
Definition: unum.h:1206
Half-even rounding, misspelled name.
Definition: unum.h:284
Positive prefix.
Definition: unum.h:1099
The ISO currency code.
Definition: unum.h:1109
Multiplication sign.
Definition: unum.h:1286
C API: Display context types (enum values)
The minus sign.
Definition: unum.h:1220
Nan symbol.
Definition: unum.h:1238
Currency format with an ISO currency code, e.g., "USD1.00".
Definition: unum.h:204
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:223
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:146
Use significant digits.
Definition: unum.h:930
Percent format.
Definition: unum.h:165
Half-even rounding.
Definition: unum.h:278
The position at which padding will take place.
Definition: unum.h:925
Decimal format expressed using compact notation (long form, corresponds to UNumberCompactStyle=UNUM_L...
Definition: unum.h:237
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:131
Spellout rule-based format.
Definition: unum.h:177
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:141
int32_t unum_countAvailable(void)
Determine how many locales have decimal formatting patterns available.
The percent sign.
Definition: unum.h:1214
Infinity symbol.
Definition: unum.h:1236
#define U_DEFINE_LOCAL_OPEN_POINTER(LocalPointerClassName, Type, closeFunction)
"Smart pointer" definition macro, deletes objects via the closeFunction.
Definition: localpointer.h:530
void * UNumberFormat
A number formatter.
Definition: unum.h:136
Minimum fraction digits.
Definition: unum.h:911
A struct representing a range of text containing a specific field.
Definition: umisc.h:34
UNumberFormatFields
FieldPosition and UFieldPosition selectors for format fields defined by NumberFormat and UNumberForma...
Definition: unum.h:345
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:936
Currency format with a pluralized currency name, e.g., "1.00 US dollar" and "3.00 US dollars"...
Definition: unum.h:210
One more than the highest normal UNumberFormatSymbol value.
Definition: unum.h:1293
Parse integers only.
Definition: unum.h:897
Scale, which adjusts the position of the decimal point when formatting.
Definition: unum.h:957
UNumberFormatTextAttribute
The possible UNumberFormat text attributes.
Definition: unum.h:1097
UNumberFormat * unum_clone(const UNumberFormat *fmt, UErrorCode *status)
Open a copy of a UNumberFormat.
Maximum fraction digits.
Definition: unum.h:909
Secondary grouping size.
Definition: unum.h:927
The width to which the output of format() is padded.
Definition: unum.h:923
Alias for UNUM_PATTERN_DECIMAL.
Definition: unum.h:263
"Smart pointer" class, closes a UNumberFormat via unum_close().
One below the first bitfield-boolean item.
Definition: unum.h:981
UNumberFormatPadPosition
The possible number format pad positions.
Definition: unum.h:298
Per mill symbol.
Definition: unum.h:1232
The pattern separator.
Definition: unum.h:1212
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:170
Use grouping separator.
Definition: unum.h:899
Minimum grouping digits, technology preview.
Definition: unum.h:965
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:988
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:337
Positive suffix.
Definition: unum.h:1101
Multiplier.
Definition: unum.h:915
Minimum integer digits.
Definition: unum.h:905
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:132
UNumberCompactStyle
Constants for specifying short or long format.
Definition: unum.h:309
UDisplayContextType
Display context types, for getting values of a particular setting.
Ordinal rule-based format .
Definition: unum.h:184
Escape padding character.
Definition: unum.h:1234
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:1107
if this attribute is set to 1, specifies that, if the pattern contains a decimal mark the input is re...
Definition: unum.h:1005
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:919
The decimal separator.
Definition: unum.h:1208
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers...
Definition: utypes.h:396
ULocDataLocaleType
Constants for *_getLocale() Allow user to select whether she wants information on requested...
Definition: uloc.h:338
Currency format for accounting, e.g., "($3.00)" for negative currency amount instead of "-$3...
Definition: unum.h:217
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:921
Minimum significant digits.
Definition: unum.h:933
A UParseError struct is used to returned detailed information about parsing errors.
Definition: parseerr.h:58
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:1226
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:1118
The monetary separator.
Definition: unum.h:1228
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:975
The currency symbol.
Definition: unum.h:1224
The plus sign.
Definition: unum.h:1222
Duration rule-based format.
Definition: unum.h:189
void * UFormattable
Opaque type representing various types of data which may be used for formatting and parsing operation...
Definition: uformattable.h:70
UNumberFormatAttribute
The possible UNumberFormat numeric attributes.
Definition: unum.h:895
void unum_close(UNumberFormat *fmt)
Close a UNumberFormat.
Negative suffix.
Definition: unum.h:1105
One more than the highest normal UNumberFormatFields value.
Definition: unum.h:373
Grouping size.
Definition: unum.h:917
One more than the highest normal UCurrencySpacing value.
Definition: unum.h:335
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:1127
#define U_STABLE
This is used to declare a function as a stable public ICU C API.
Definition: umachine.h:134
int8_t UBool
The ICU boolean type.
Definition: umachine.h:259
Maximum integer digits.
Definition: unum.h:903
Character representing a digit in the pattern.
Definition: unum.h:1218
C API: Locale.
Always show decimal point.
Definition: unum.h:901
void unum_setTextAttribute(UNumberFormat *fmt, UNumberFormatTextAttribute tag, const UChar *newValue, int32_t newValueLength, UErrorCode *status)
Set a text attribute associated with a UNumberFormat.