ICU 50.1.2  50.1.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 
19 #include "unicode/localpointer.h"
20 #include "unicode/uloc.h"
21 #include "unicode/umisc.h"
22 #include "unicode/parseerr.h"
130 typedef void* UNumberFormat;
131 
135 typedef enum UNumberFormatStyle {
213 
218  UNUM_ROUND_CEILING,
219  UNUM_ROUND_FLOOR,
220  UNUM_ROUND_DOWN,
221  UNUM_ROUND_UP,
227 #ifndef U_HIDE_DEPRECATED_API
228 
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 
266 };
275 typedef enum UNumberFormatFields {
301 
302 
334 U_STABLE UNumberFormat* U_EXPORT2
336  const UChar* pattern,
337  int32_t patternLength,
338  const char* locale,
339  UParseError* parseErr,
340  UErrorCode* status);
341 
342 
349 U_STABLE void U_EXPORT2
351 
352 #if U_SHOW_CPLUSPLUS_API
353 
355 
366 
368 
369 #endif
370 
379 U_STABLE UNumberFormat* U_EXPORT2
380 unum_clone(const UNumberFormat *fmt,
381  UErrorCode *status);
382 
404 U_STABLE int32_t U_EXPORT2
405 unum_format( const UNumberFormat* fmt,
406  int32_t number,
407  UChar* result,
408  int32_t resultLength,
409  UFieldPosition *pos,
410  UErrorCode* status);
411 
433 U_STABLE int32_t U_EXPORT2
435  int64_t number,
436  UChar* result,
437  int32_t resultLength,
438  UFieldPosition *pos,
439  UErrorCode* status);
440 
462 U_STABLE int32_t U_EXPORT2
463 unum_formatDouble( const UNumberFormat* fmt,
464  double number,
465  UChar* result,
466  int32_t resultLength,
467  UFieldPosition *pos, /* 0 if ignore */
468  UErrorCode* status);
469 
495 U_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 
525 U_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 
551 U_STABLE int32_t U_EXPORT2
552 unum_parse( const UNumberFormat* fmt,
553  const UChar* text,
554  int32_t textLength,
555  int32_t *parsePos /* 0 = start */,
556  UErrorCode *status);
557 
575 U_STABLE int64_t U_EXPORT2
576 unum_parseInt64(const UNumberFormat* fmt,
577  const UChar* text,
578  int32_t textLength,
579  int32_t *parsePos /* 0 = start */,
580  UErrorCode *status);
581 
599 U_STABLE double U_EXPORT2
600 unum_parseDouble( const UNumberFormat* fmt,
601  const UChar* text,
602  int32_t textLength,
603  int32_t *parsePos /* 0 = start */,
604  UErrorCode *status);
605 
606 
632 U_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 
660 U_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 
684 U_STABLE void U_EXPORT2
686  UBool localized,
687  const UChar *pattern,
688  int32_t patternLength,
689  UParseError *parseError,
690  UErrorCode *status
691  );
692 
703 U_STABLE const char* U_EXPORT2
704 unum_getAvailable(int32_t localeIndex);
705 
715 U_STABLE int32_t U_EXPORT2
716 unum_countAvailable(void);
717 
718 #if UCONFIG_HAVE_PARSEALLINPUT
719 
722 typedef enum UNumberFormatAttributeValue {
724  UNUM_NO = 0,
726  UNUM_YES = 1,
728  UNUM_MAYBE = 2
729 } UNumberFormatAttributeValue;
730 #endif
731 
779 #if UCONFIG_HAVE_PARSEALLINPUT
780 
784  UNUM_PARSE_ALL_INPUT,
785 #endif
786 
790 
795 
809 
814 
831 U_STABLE int32_t U_EXPORT2
834 
854 U_STABLE void U_EXPORT2
857  int32_t newValue);
858 
859 
874 U_STABLE double U_EXPORT2
877 
892 U_STABLE void U_EXPORT2
895  double newValue);
896 
924 
943 U_STABLE int32_t U_EXPORT2
946  UChar* result,
947  int32_t resultLength,
948  UErrorCode* status);
949 
966 U_STABLE void U_EXPORT2
969  const UChar* newValue,
970  int32_t newValueLength,
971  UErrorCode *status);
972 
989 U_STABLE int32_t U_EXPORT2
990 unum_toPattern( const UNumberFormat* fmt,
991  UBool isPatternLocalized,
992  UChar* result,
993  int32_t resultLength,
994  UErrorCode* status);
995 
996 
1001 typedef enum UNumberFormatSymbol {
1080 
1097 U_STABLE int32_t U_EXPORT2
1098 unum_getSymbol(const UNumberFormat *fmt,
1099  UNumberFormatSymbol symbol,
1100  UChar *buffer,
1101  int32_t size,
1102  UErrorCode *status);
1103 
1117 U_STABLE void U_EXPORT2
1119  UNumberFormatSymbol symbol,
1120  const UChar *value,
1121  int32_t length,
1122  UErrorCode *status);
1123 
1124 
1134 U_STABLE const char* U_EXPORT2
1136  ULocDataLocaleType type,
1137  UErrorCode* status);
1138 
1139 #endif /* #if !UCONFIG_NO_FORMATTING */
1140 
1141 #endif
Default format.
Definition: unum.h:206
void unum_setDoubleAttribute(UNumberFormat *fmt, UNumberFormatAttribute attr, double newValue)
Set a numeric attribute associated with a UNumberFormat.
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:217
double unum_getDoubleAttribute(const UNumberFormat *fmt, UNumberFormatAttribute attr)
Get a numeric attribute associated with a UNumberFormat.
The exponential symbol.
Definition: unum.h:1025
The monetary grouping separator.
Definition: unum.h:1040
One more than the highest number format style constant.
Definition: unum.h:201
Negative prefix.
Definition: unum.h:904
Numbering system rule-based format.
Definition: unum.h:180
Count of "regular" numeric attributes.
Definition: unum.h:789
const char * unum_getAvailable(int32_t localeIndex)
Get a locale for which decimal formatting patterns are available.
Currency format with a currency symbol, e.g., "$1.00".
Definition: unum.h:150
Decimal format ("normal" style).
Definition: unum.h:145
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:808
Significant digit symbol.
Definition: unum.h:1036
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:185
Lenient parse mode used by rule-based formats.
Definition: unum.h:778
UCurrencySpacing
Constants for specifying currency spacing.
Definition: unum.h:257
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:240
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:1005
Limit of boolean attributes.
Definition: unum.h:812
Integer digits.
Definition: unum.h:745
Fraction digits.
Definition: unum.h:751
UNumberFormatSymbol
Constants for specifying a number format symbol.
Definition: unum.h:1001
Half-even rounding, misspelled name.
Definition: unum.h:232
Positive prefix.
Definition: unum.h:900
The ISO currency code.
Definition: unum.h:910
The minus sign.
Definition: unum.h:1015
Nan symbol.
Definition: unum.h:1033
Currency format with an ISO currency code, e.g., "USD1.00".
Definition: unum.h:190
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:140
Use significant digits.
Definition: unum.h:768
Percent format.
Definition: unum.h:155
Half-even rounding.
Definition: unum.h:226
The position at which padding will take place.
Definition: unum.h:763
#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:165
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
int32_t unum_countAvailable(void)
Determine how many locales have decimal formatting patterns available.
The percent sign.
Definition: unum.h:1009
Infinity symbol.
Definition: unum.h:1031
#define U_DEFINE_LOCAL_OPEN_POINTER(LocalPointerClassName, Type, closeFunction)
"Smart pointer" definition macro, deletes objects via the closeFunction.
Definition: localpointer.h:290
void * UNumberFormat
A number formatter.
Definition: unum.h:130
Minimum fraction digits.
Definition: unum.h:749
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:275
C++ API: "Smart pointers" for use with and in ICU4C C++ code.
Maximum significant digits.
Definition: unum.h:774
Currency format with a pluralized currency name, e.g., "1.00 US dollar" and "3.00 US dollars"...
Definition: unum.h:196
count symbol constants
Definition: unum.h:1078
Parse integers only.
Definition: unum.h:735
UNumberFormatTextAttribute
The possible UNumberFormat text attributes.
Definition: unum.h:898
UNumberFormat * unum_clone(const UNumberFormat *fmt, UErrorCode *status)
Open a copy of a UNumberFormat.
Maximum fraction digits.
Definition: unum.h:747
Secondary grouping size.
Definition: unum.h:765
The width to which the output of format() is padded.
Definition: unum.h:761
Alias for UNUM_PATTERN_DECIMAL.
Definition: unum.h:211
"Smart pointer" class, closes a UNumberFormat via unum_close().
One below the first bitfield-boolean item.
Definition: unum.h:794
UNumberFormatPadPosition
The possible number format pad positions.
Definition: unum.h:246
Per mill symbol.
Definition: unum.h:1027
The pattern separator.
Definition: unum.h:1007
Scientific format.
Definition: unum.h:160
Use grouping separator.
Definition: unum.h:737
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:801
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
Positive suffix.
Definition: unum.h:902
Multiplier.
Definition: unum.h:753
Minimum integer digits.
Definition: unum.h:743
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
Ordinal rule-based format.
Definition: unum.h:170
Escape padding character.
Definition: unum.h:1029
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:908
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:757
The decimal separator.
Definition: unum.h:1003
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
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:759
Minimum significant digits.
Definition: unum.h:771
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.
The international currency symbol.
Definition: unum.h:1021
int32_t unum_getAttribute(const UNumberFormat *fmt, UNumberFormatAttribute attr)
Get a numeric attribute associated with a UNumberFormat.
The default rule set.
Definition: unum.h:915
The monetary separator.
Definition: unum.h:1023
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.
The currency symbol.
Definition: unum.h:1019
The plus sign.
Definition: unum.h:1017
Duration rule-based format.
Definition: unum.h:175
UNumberFormatAttribute
The possible UNumberFormat numeric attributes.
Definition: unum.h:733
void unum_close(UNumberFormat *fmt)
Close a UNumberFormat.
Negative suffix.
Definition: unum.h:906
Grouping size.
Definition: unum.h:755
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:922
#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:200
Maximum integer digits.
Definition: unum.h:741
Character representing a digit in the pattern.
Definition: unum.h:1013
C API: Locale.
Always show decimal point.
Definition: unum.h:739
void unum_setTextAttribute(UNumberFormat *fmt, UNumberFormatTextAttribute tag, const UChar *newValue, int32_t newValueLength, UErrorCode *status)
Set a text attribute associated with a UNumberFormat.