ICU 50.2 50.2
unum.h
Go to the documentation of this file.
1/*
2*******************************************************************************
3* Copyright (C) 1997-2012, 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
20#include "unicode/uloc.h"
21#include "unicode/umisc.h"
22#include "unicode/parseerr.h"
125
130typedef void* UNumberFormat;
131
213
218 UNUM_ROUND_CEILING,
219 UNUM_ROUND_FLOOR,
220 UNUM_ROUND_DOWN,
221 UNUM_ROUND_UP,
227#ifndef U_HIDE_DEPRECATED_API
233#endif /* U_HIDE_DEPRECATED_API */
234 UNUM_ROUND_HALFDOWN,
235 UNUM_ROUND_HALFUP,
242
247 UNUM_PAD_BEFORE_PREFIX,
248 UNUM_PAD_AFTER_PREFIX,
249 UNUM_PAD_BEFORE_SUFFIX,
250 UNUM_PAD_AFTER_SUFFIX
252
268
269
301
302
334U_STABLE UNumberFormat* U_EXPORT2
336 const UChar* pattern,
337 int32_t patternLength,
338 const char* locale,
339 UParseError* parseErr,
340 UErrorCode* status);
341
342
349U_STABLE void U_EXPORT2
351
352#if U_SHOW_CPLUSPLUS_API
353
355
366
368
369#endif
370
379U_STABLE UNumberFormat* U_EXPORT2
381 UErrorCode *status);
382
404U_STABLE int32_t U_EXPORT2
406 int32_t number,
407 UChar* result,
408 int32_t resultLength,
409 UFieldPosition *pos,
410 UErrorCode* status);
411
433U_STABLE int32_t U_EXPORT2
435 int64_t number,
436 UChar* result,
437 int32_t resultLength,
438 UFieldPosition *pos,
439 UErrorCode* status);
440
462U_STABLE int32_t U_EXPORT2
464 double number,
465 UChar* result,
466 int32_t resultLength,
467 UFieldPosition *pos, /* 0 if ignore */
468 UErrorCode* status);
469
495U_STABLE int32_t U_EXPORT2
497 const char * number,
498 int32_t length,
499 UChar* result,
500 int32_t resultLength,
501 UFieldPosition *pos, /* 0 if ignore */
502 UErrorCode* status);
503
525U_STABLE int32_t U_EXPORT2
527 double number,
528 UChar* currency,
529 UChar* result,
530 int32_t resultLength,
531 UFieldPosition* pos, /* ignored if 0 */
532 UErrorCode* status);
533
551U_STABLE int32_t U_EXPORT2
553 const UChar* text,
554 int32_t textLength,
555 int32_t *parsePos /* 0 = start */,
556 UErrorCode *status);
557
575U_STABLE int64_t U_EXPORT2
577 const UChar* text,
578 int32_t textLength,
579 int32_t *parsePos /* 0 = start */,
580 UErrorCode *status);
581
599U_STABLE double U_EXPORT2
601 const UChar* text,
602 int32_t textLength,
603 int32_t *parsePos /* 0 = start */,
604 UErrorCode *status);
605
606
632U_STABLE int32_t U_EXPORT2
634 const UChar* text,
635 int32_t textLength,
636 int32_t *parsePos /* 0 = start */,
637 char *outBuf,
638 int32_t outBufLength,
639 UErrorCode *status);
640
660U_STABLE double U_EXPORT2
662 const UChar* text,
663 int32_t textLength,
664 int32_t* parsePos, /* 0 = start */
665 UChar* currency,
666 UErrorCode* status);
667
684U_STABLE void U_EXPORT2
686 UBool localized,
687 const UChar *pattern,
688 int32_t patternLength,
689 UParseError *parseError,
690 UErrorCode *status
691 );
692
703U_STABLE const char* U_EXPORT2
704unum_getAvailable(int32_t localeIndex);
705
715U_STABLE int32_t U_EXPORT2
717
718#if UCONFIG_HAVE_PARSEALLINPUT
722typedef enum UNumberFormatAttributeValue {
724 UNUM_NO = 0,
726 UNUM_YES = 1,
728 UNUM_MAYBE = 2
729} UNumberFormatAttributeValue;
730#endif
731
814
831U_STABLE int32_t U_EXPORT2
834
854U_STABLE void U_EXPORT2
857 int32_t newValue);
858
859
874U_STABLE double U_EXPORT2
877
892U_STABLE void U_EXPORT2
895 double newValue);
896
924
943U_STABLE int32_t U_EXPORT2
946 UChar* result,
947 int32_t resultLength,
948 UErrorCode* status);
949
966U_STABLE void U_EXPORT2
969 const UChar* newValue,
970 int32_t newValueLength,
971 UErrorCode *status);
972
989U_STABLE int32_t U_EXPORT2
991 UBool isPatternLocalized,
992 UChar* result,
993 int32_t resultLength,
994 UErrorCode* status);
995
996
1080
1097U_STABLE int32_t U_EXPORT2
1099 UNumberFormatSymbol symbol,
1100 UChar *buffer,
1101 int32_t size,
1102 UErrorCode *status);
1103
1117U_STABLE void U_EXPORT2
1119 UNumberFormatSymbol symbol,
1120 const UChar *value,
1121 int32_t length,
1122 UErrorCode *status);
1123
1124
1134U_STABLE const char* U_EXPORT2
1136 ULocDataLocaleType type,
1137 UErrorCode* status);
1138
1139#endif /* #if !UCONFIG_NO_FORMATTING */
1140
1141#endif
"Smart pointer" class, closes a UNumberFormat via unum_close().
C++ API: "Smart pointers" for use with and in ICU4C C++ code.
#define U_DEFINE_LOCAL_OPEN_POINTER(LocalPointerClassName, Type, closeFunction)
"Smart pointer" definition macro, deletes objects via the closeFunction.
C API: Parse Error Information.
A struct representing a range of text containing a specific field.
Definition umisc.h:32
A UParseError struct is used to returned detailed information about parsing errors.
Definition parseerr.h:56
C API: Locale.
ULocDataLocaleType
Constants for *_getLocale() Allow user to select whether she wants information on requested,...
Definition uloc.h:336
int8_t UBool
The ICU boolean type.
Definition umachine.h:200
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:278
#define U_STABLE
This is used to declare a function as a stable public ICU C API.
Definition umachine.h:109
C API:misc definitions.
void unum_setSymbol(UNumberFormat *fmt, UNumberFormatSymbol symbol, const UChar *value, int32_t length, UErrorCode *status)
Set a symbol associated with a UNumberFormat.
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.
UNumberFormatAttribute
The possible UNumberFormat numeric attributes.
Definition unum.h:733
@ UNUM_GROUPING_SIZE
Grouping size.
Definition unum.h:755
@ UNUM_LENIENT_PARSE
Lenient parse mode used by rule-based formats.
Definition unum.h:778
@ UNUM_MIN_SIGNIFICANT_DIGITS
Minimum significant digits.
Definition unum.h:771
@ UNUM_MAX_INTEGER_DIGITS
Maximum integer digits.
Definition unum.h:741
@ UNUM_MAX_FRACTION_DIGITS
Maximum fraction digits.
Definition unum.h:747
@ UNUM_PARSE_NO_EXPONENT
if this attribute is set to 1, specifies that, if the pattern doesn't contain an exponent,...
Definition unum.h:808
@ UNUM_FORMAT_WIDTH
The width to which the output of format() is padded.
Definition unum.h:761
@ UNUM_LIMIT_BOOLEAN_ATTRIBUTE
Limit of boolean attributes.
Definition unum.h:812
@ UNUM_PARSE_INT_ONLY
Parse integers only.
Definition unum.h:735
@ UNUM_MULTIPLIER
Multiplier.
Definition unum.h:753
@ UNUM_ROUNDING_INCREMENT
Rounding increment.
Definition unum.h:759
@ UNUM_SIGNIFICANT_DIGITS_USED
Use significant digits.
Definition unum.h:768
@ UNUM_SECONDARY_GROUPING_SIZE
Secondary grouping size.
Definition unum.h:765
@ UNUM_MIN_FRACTION_DIGITS
Minimum fraction digits.
Definition unum.h:749
@ UNUM_DECIMAL_ALWAYS_SHOWN
Always show decimal point.
Definition unum.h:739
@ UNUM_MAX_SIGNIFICANT_DIGITS
Maximum significant digits.
Definition unum.h:774
@ UNUM_NUMERIC_ATTRIBUTE_COUNT
Count of "regular" numeric attributes.
Definition unum.h:789
@ UNUM_INTEGER_DIGITS
Integer digits.
Definition unum.h:745
@ UNUM_FRACTION_DIGITS
Fraction digits.
Definition unum.h:751
@ UNUM_FORMAT_FAIL_IF_MORE_THAN_MAX_DIGITS
If 1, specifies that if setting the "max integer digits" attribute would truncate a value,...
Definition unum.h:801
@ UNUM_ROUNDING_MODE
Rounding Mode.
Definition unum.h:757
@ UNUM_PADDING_POSITION
The position at which padding will take place.
Definition unum.h:763
@ UNUM_MAX_NONBOOLEAN_ATTRIBUTE
One below the first bitfield-boolean item.
Definition unum.h:794
@ UNUM_MIN_INTEGER_DIGITS
Minimum integer digits.
Definition unum.h:743
@ UNUM_GROUPING_USED
Use grouping separator.
Definition unum.h:737
UCurrencySpacing
Constants for specifying currency spacing.
Definition unum.h:257
@ UNUM_CURRENCY_SPACING_COUNT
Definition unum.h:265
@ UNUM_CURRENCY_SURROUNDING_MATCH
Definition unum.h:261
@ UNUM_CURRENCY_MATCH
Definition unum.h:259
@ UNUM_CURRENCY_INSERT
Definition unum.h:263
UNumberFormatRoundingMode
The possible number format rounding modes.
Definition unum.h:217
@ UNUM_ROUND_UNNECESSARY
ROUND_UNNECESSARY reports an error if formatted result is not exact.
Definition unum.h:240
@ UNUM_ROUND_HALFEVEN
Half-even rounding.
Definition unum.h:226
@ UNUM_FOUND_HALFEVEN
Half-even rounding, misspelled name.
Definition unum.h:232
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.
double unum_getDoubleAttribute(const UNumberFormat *fmt, UNumberFormatAttribute attr)
Get a numeric attribute associated with a UNumberFormat.
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:135
@ UNUM_CURRENCY
Currency format with a currency symbol, e.g., "$1.00".
Definition unum.h:150
@ UNUM_SCIENTIFIC
Scientific format.
Definition unum.h:160
@ UNUM_CURRENCY_PLURAL
Currency format with a pluralized currency name, e.g., "1.00 US dollar" and "3.00 US dollars".
Definition unum.h:196
@ UNUM_PATTERN_RULEBASED
Rule-based format defined by a pattern string.
Definition unum.h:185
@ UNUM_SPELLOUT
Spellout rule-based format.
Definition unum.h:165
@ UNUM_FORMAT_STYLE_COUNT
One more than the highest number format style constant.
Definition unum.h:201
@ UNUM_PERCENT
Percent format.
Definition unum.h:155
@ UNUM_ORDINAL
Ordinal rule-based format.
Definition unum.h:170
@ UNUM_CURRENCY_ISO
Currency format with an ISO currency code, e.g., "USD1.00".
Definition unum.h:190
@ UNUM_NUMBERING_SYSTEM
Numbering system rule-based format.
Definition unum.h:180
@ UNUM_DEFAULT
Default format.
Definition unum.h:206
@ UNUM_PATTERN_DECIMAL
Decimal format defined by a pattern string.
Definition unum.h:140
@ UNUM_DURATION
Duration rule-based format.
Definition unum.h:175
@ UNUM_IGNORE
Alias for UNUM_PATTERN_DECIMAL.
Definition unum.h:211
@ UNUM_DECIMAL
Decimal format ("normal" style).
Definition unum.h:145
int32_t unum_countAvailable(void)
Determine how many locales have decimal formatting patterns available.
void unum_close(UNumberFormat *fmt)
Close 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.
void unum_setTextAttribute(UNumberFormat *fmt, UNumberFormatTextAttribute tag, const UChar *newValue, int32_t newValueLength, UErrorCode *status)
Set a text attribute associated with 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.
int32_t unum_getSymbol(const UNumberFormat *fmt, UNumberFormatSymbol symbol, UChar *buffer, int32_t size, UErrorCode *status)
Get a symbol associated with a UNumberFormat.
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.
UNumberFormatSymbol
Constants for specifying a number format symbol.
Definition unum.h:1001
@ UNUM_FOUR_DIGIT_SYMBOL
Four.
Definition unum.h:1056
@ UNUM_PERMILL_SYMBOL
Per mill symbol.
Definition unum.h:1027
@ UNUM_SIGNIFICANT_DIGIT_SYMBOL
Significant digit symbol.
Definition unum.h:1036
@ UNUM_PAD_ESCAPE_SYMBOL
Escape padding character.
Definition unum.h:1029
@ UNUM_INFINITY_SYMBOL
Infinity symbol.
Definition unum.h:1031
@ UNUM_TWO_DIGIT_SYMBOL
Two.
Definition unum.h:1048
@ UNUM_EXPONENTIAL_SYMBOL
The exponential symbol.
Definition unum.h:1025
@ UNUM_CURRENCY_SYMBOL
The currency symbol.
Definition unum.h:1019
@ UNUM_INTL_CURRENCY_SYMBOL
The international currency symbol.
Definition unum.h:1021
@ UNUM_FIVE_DIGIT_SYMBOL
Five.
Definition unum.h:1060
@ UNUM_EIGHT_DIGIT_SYMBOL
Eight.
Definition unum.h:1072
@ UNUM_MONETARY_GROUPING_SEPARATOR_SYMBOL
The monetary grouping separator.
Definition unum.h:1040
@ UNUM_PERCENT_SYMBOL
The percent sign.
Definition unum.h:1009
@ UNUM_PATTERN_SEPARATOR_SYMBOL
The pattern separator.
Definition unum.h:1007
@ UNUM_DECIMAL_SEPARATOR_SYMBOL
The decimal separator.
Definition unum.h:1003
@ UNUM_PLUS_SIGN_SYMBOL
The plus sign.
Definition unum.h:1017
@ UNUM_GROUPING_SEPARATOR_SYMBOL
The grouping separator.
Definition unum.h:1005
@ UNUM_NAN_SYMBOL
Nan symbol.
Definition unum.h:1033
@ UNUM_SIX_DIGIT_SYMBOL
Six.
Definition unum.h:1064
@ UNUM_NINE_DIGIT_SYMBOL
Nine.
Definition unum.h:1076
@ UNUM_MINUS_SIGN_SYMBOL
The minus sign.
Definition unum.h:1015
@ UNUM_MONETARY_SEPARATOR_SYMBOL
The monetary separator.
Definition unum.h:1023
@ UNUM_DIGIT_SYMBOL
Character representing a digit in the pattern.
Definition unum.h:1013
@ UNUM_THREE_DIGIT_SYMBOL
Three.
Definition unum.h:1052
@ UNUM_ZERO_DIGIT_SYMBOL
Zero.
Definition unum.h:1011
@ UNUM_ONE_DIGIT_SYMBOL
One.
Definition unum.h:1044
@ UNUM_FORMAT_SYMBOL_COUNT
count symbol constants
Definition unum.h:1078
@ UNUM_SEVEN_DIGIT_SYMBOL
Seven.
Definition unum.h:1068
const char * unum_getAvailable(int32_t localeIndex)
Get a locale for which decimal formatting patterns are available.
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_formatDouble(const UNumberFormat *fmt, double number, UChar *result, int32_t resultLength, UFieldPosition *pos, UErrorCode *status)
Format a double using a UNumberFormat.
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.
void unum_setDoubleAttribute(UNumberFormat *fmt, UNumberFormatAttribute attr, double newValue)
Set a numeric attribute associated with a UNumberFormat.
UNumberFormatTextAttribute
The possible UNumberFormat text attributes.
Definition unum.h:898
@ UNUM_NEGATIVE_PREFIX
Negative prefix.
Definition unum.h:904
@ UNUM_POSITIVE_PREFIX
Positive prefix.
Definition unum.h:900
@ UNUM_DEFAULT_RULESET
The default rule set.
Definition unum.h:915
@ UNUM_PUBLIC_RULESETS
The public rule sets.
Definition unum.h:922
@ UNUM_PADDING_CHARACTER
The character used to pad to the format width.
Definition unum.h:908
@ UNUM_CURRENCY_CODE
The ISO currency code.
Definition unum.h:910
@ UNUM_NEGATIVE_SUFFIX
Negative suffix.
Definition unum.h:906
@ UNUM_POSITIVE_SUFFIX
Positive suffix.
Definition unum.h:902
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.
int32_t unum_toPattern(const UNumberFormat *fmt, UBool isPatternLocalized, UChar *result, int32_t resultLength, UErrorCode *status)
Extract the pattern from a UNumberFormat.
void unum_setAttribute(UNumberFormat *fmt, UNumberFormatAttribute attr, int32_t newValue)
Set a numeric attribute associated with a UNumberFormat.
void * UNumberFormat
A number formatter.
Definition unum.h:130
const char * unum_getLocaleByType(const UNumberFormat *fmt, ULocDataLocaleType type, UErrorCode *status)
Get the locale for this number format object.
int32_t unum_getAttribute(const UNumberFormat *fmt, UNumberFormatAttribute attr)
Get a numeric attribute associated with a UNumberFormat.
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.
UNumberFormatPadPosition
The possible number format pad positions.
Definition unum.h:246
void unum_applyPattern(UNumberFormat *format, UBool localized, const UChar *pattern, int32_t patternLength, UParseError *parseError, UErrorCode *status)
Set the pattern used by a UNumberFormat.
UNumberFormatFields
FieldPosition and UFieldPosition selectors for format fields defined by NumberFormat and UNumberForma...
Definition unum.h:275
@ UNUM_INTEGER_FIELD
Definition unum.h:277
@ UNUM_PERCENT_FIELD
Definition unum.h:293
@ UNUM_PERMILL_FIELD
Definition unum.h:295
@ UNUM_EXPONENT_SYMBOL_FIELD
Definition unum.h:283
@ UNUM_GROUPING_SEPARATOR_FIELD
Definition unum.h:289
@ UNUM_DECIMAL_SEPARATOR_FIELD
Definition unum.h:281
@ UNUM_SIGN_FIELD
Definition unum.h:297
@ UNUM_CURRENCY_FIELD
Definition unum.h:291
@ UNUM_FRACTION_FIELD
Definition unum.h:279
@ UNUM_FIELD_COUNT
Definition unum.h:299
@ UNUM_EXPONENT_SIGN_FIELD
Definition unum.h:285
@ UNUM_EXPONENT_FIELD
Definition unum.h:287
UNumberFormat * unum_clone(const UNumberFormat *fmt, UErrorCode *status)
Open a copy of a UNumberFormat.
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.
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers,...
Definition utypes.h:476
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition uversion.h:130
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition uversion.h:129