ICU 56.1
56.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
i18n
unicode
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
"
25
#include "
unicode/udisplaycontext.h
"
26
134
typedef
void
*
UNumberFormat
;
135
139
typedef
enum
UNumberFormatStyle
{
144
UNUM_PATTERN_DECIMAL
=0,
149
UNUM_DECIMAL
=1,
158
UNUM_CURRENCY
=2,
163
UNUM_PERCENT
=3,
168
UNUM_SCIENTIFIC
=4,
175
UNUM_SPELLOUT
=5,
182
UNUM_ORDINAL
=6,
187
UNUM_DURATION
=7,
192
UNUM_NUMBERING_SYSTEM
=8,
197
UNUM_PATTERN_RULEBASED
=9,
202
UNUM_CURRENCY_ISO
=10,
208
UNUM_CURRENCY_PLURAL
=11,
215
UNUM_CURRENCY_ACCOUNTING
=12,
221
UNUM_CASH_CURRENCY
=13,
222
#ifndef U_HIDE_DRAFT_API
223
229
UNUM_DECIMAL_COMPACT_SHORT
=14,
236
UNUM_DECIMAL_COMPACT_LONG
=15,
243
UNUM_CURRENCY_STANDARD
=16,
244
#endif
/* U_HIDE_DRAFT_API */
245
250
UNUM_FORMAT_STYLE_COUNT
=17,
251
256
UNUM_DEFAULT
=
UNUM_DECIMAL
,
261
UNUM_IGNORE
=
UNUM_PATTERN_DECIMAL
262
}
UNumberFormatStyle
;
263
267
typedef
enum
UNumberFormatRoundingMode
{
268
UNUM_ROUND_CEILING,
269
UNUM_ROUND_FLOOR,
270
UNUM_ROUND_DOWN,
271
UNUM_ROUND_UP,
276
UNUM_ROUND_HALFEVEN
,
277
#ifndef U_HIDE_DEPRECATED_API
278
282
UNUM_FOUND_HALFEVEN
=
UNUM_ROUND_HALFEVEN
,
283
#endif
/* U_HIDE_DEPRECATED_API */
284
UNUM_ROUND_HALFDOWN =
UNUM_ROUND_HALFEVEN
+ 1,
285
UNUM_ROUND_HALFUP,
290
UNUM_ROUND_UNNECESSARY
291
}
UNumberFormatRoundingMode
;
292
296
typedef
enum
UNumberFormatPadPosition
{
297
UNUM_PAD_BEFORE_PREFIX,
298
UNUM_PAD_AFTER_PREFIX,
299
UNUM_PAD_BEFORE_SUFFIX,
300
UNUM_PAD_AFTER_SUFFIX
301
}
UNumberFormatPadPosition
;
302
307
typedef
enum
UNumberCompactStyle
{
309
UNUM_SHORT
,
311
UNUM_LONG
313
}
UNumberCompactStyle
;
314
319
enum
UCurrencySpacing
{
321
UNUM_CURRENCY_MATCH
,
323
UNUM_CURRENCY_SURROUNDING_MATCH
,
325
UNUM_CURRENCY_INSERT
,
327
UNUM_CURRENCY_SPACING_COUNT
328
};
329
typedef
enum
UCurrencySpacing
UCurrencySpacing
;
337
typedef
enum
UNumberFormatFields
{
339
UNUM_INTEGER_FIELD
,
341
UNUM_FRACTION_FIELD
,
343
UNUM_DECIMAL_SEPARATOR_FIELD
,
345
UNUM_EXPONENT_SYMBOL_FIELD
,
347
UNUM_EXPONENT_SIGN_FIELD
,
349
UNUM_EXPONENT_FIELD
,
351
UNUM_GROUPING_SEPARATOR_FIELD
,
353
UNUM_CURRENCY_FIELD
,
355
UNUM_PERCENT_FIELD
,
357
UNUM_PERMILL_FIELD
,
359
UNUM_SIGN_FIELD
,
361
UNUM_FIELD_COUNT
362
}
UNumberFormatFields
;
363
364
398
U_STABLE
UNumberFormat
* U_EXPORT2
399
unum_open
(
UNumberFormatStyle
style,
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
414
unum_close
(
UNumberFormat
* fmt);
415
416
#if U_SHOW_CPLUSPLUS_API
417
418
U_NAMESPACE_BEGIN
419
429
U_DEFINE_LOCAL_OPEN_POINTER
(
LocalUNumberFormatPointer
,
UNumberFormat
,
unum_close
);
430
431
U_NAMESPACE_END
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
504
unum_formatInt64
(
const
UNumberFormat
*fmt,
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
572
unum_formatDecimal
(
const
UNumberFormat
* fmt,
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
605
unum_formatDoubleCurrency
(
const
UNumberFormat
* fmt,
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
634
unum_formatUFormattable
(
const
UNumberFormat
* fmt,
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
748
unum_parseDecimal
(
const
UNumberFormat
* fmt,
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
776
unum_parseDoubleCurrency
(
const
UNumberFormat
* fmt,
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
804
unum_parseToUFormattable
(
const
UNumberFormat
* fmt,
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
828
unum_applyPattern
(
UNumberFormat
*format,
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
882
typedef
enum
UNumberFormatAttribute
{
884
UNUM_PARSE_INT_ONLY
,
886
UNUM_GROUPING_USED
,
888
UNUM_DECIMAL_ALWAYS_SHOWN
,
890
UNUM_MAX_INTEGER_DIGITS
,
892
UNUM_MIN_INTEGER_DIGITS
,
894
UNUM_INTEGER_DIGITS
,
896
UNUM_MAX_FRACTION_DIGITS
,
898
UNUM_MIN_FRACTION_DIGITS
,
900
UNUM_FRACTION_DIGITS
,
902
UNUM_MULTIPLIER
,
904
UNUM_GROUPING_SIZE
,
906
UNUM_ROUNDING_MODE
,
908
UNUM_ROUNDING_INCREMENT
,
910
UNUM_FORMAT_WIDTH
,
912
UNUM_PADDING_POSITION
,
914
UNUM_SECONDARY_GROUPING_SIZE
,
917
UNUM_SIGNIFICANT_DIGITS_USED
,
920
UNUM_MIN_SIGNIFICANT_DIGITS
,
923
UNUM_MAX_SIGNIFICANT_DIGITS
,
927
UNUM_LENIENT_PARSE
,
928
#if UCONFIG_HAVE_PARSEALLINPUT
929
933
UNUM_PARSE_ALL_INPUT = 20,
934
#endif
935
944
UNUM_SCALE
= 21,
945
#ifndef U_HIDE_INTERNAL_API
946
952
UNUM_MINIMUM_GROUPING_DIGITS
= 22,
953
/* TODO: test C API when it becomes @draft */
954
#endif
/* U_HIDE_INTERNAL_API */
955
962
UNUM_CURRENCY_USAGE
= 23,
963
964
/* The following cannot be #ifndef U_HIDE_INTERNAL_API, needed in .h file variable declararions */
968
UNUM_MAX_NONBOOLEAN_ATTRIBUTE
= 0x0FFF,
969
975
UNUM_FORMAT_FAIL_IF_MORE_THAN_MAX_DIGITS
= 0x1000,
982
UNUM_PARSE_NO_EXPONENT
,
983
992
UNUM_PARSE_DECIMAL_MARK_REQUIRED
= 0x1002,
993
994
/* The following cannot be #ifndef U_HIDE_INTERNAL_API, needed in .h file variable declararions */
997
UNUM_LIMIT_BOOLEAN_ATTRIBUTE
= 0x1003
998
}
UNumberFormatAttribute
;
999
1017
U_STABLE
int32_t U_EXPORT2
1018
unum_getAttribute
(
const
UNumberFormat
* fmt,
1019
UNumberFormatAttribute
attr);
1020
1040
U_STABLE
void
U_EXPORT2
1041
unum_setAttribute
(
UNumberFormat
* fmt,
1042
UNumberFormatAttribute
attr,
1043
int32_t newValue);
1044
1045
1060
U_STABLE
double
U_EXPORT2
1061
unum_getDoubleAttribute
(
const
UNumberFormat
* fmt,
1062
UNumberFormatAttribute
attr);
1063
1078
U_STABLE
void
U_EXPORT2
1079
unum_setDoubleAttribute
(
UNumberFormat
* fmt,
1080
UNumberFormatAttribute
attr,
1081
double
newValue);
1082
1084
typedef
enum
UNumberFormatTextAttribute
{
1086
UNUM_POSITIVE_PREFIX
,
1088
UNUM_POSITIVE_SUFFIX
,
1090
UNUM_NEGATIVE_PREFIX
,
1092
UNUM_NEGATIVE_SUFFIX
,
1094
UNUM_PADDING_CHARACTER
,
1096
UNUM_CURRENCY_CODE
,
1105
UNUM_DEFAULT_RULESET
,
1114
UNUM_PUBLIC_RULESETS
1115
}
UNumberFormatTextAttribute
;
1116
1135
U_STABLE
int32_t U_EXPORT2
1136
unum_getTextAttribute
(
const
UNumberFormat
* fmt,
1137
UNumberFormatTextAttribute
tag,
1138
UChar
* result,
1139
int32_t resultLength,
1140
UErrorCode
* status);
1141
1158
U_STABLE
void
U_EXPORT2
1159
unum_setTextAttribute
(
UNumberFormat
* fmt,
1160
UNumberFormatTextAttribute
tag,
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
{
1195
UNUM_DECIMAL_SEPARATOR_SYMBOL
= 0,
1197
UNUM_GROUPING_SEPARATOR_SYMBOL
= 1,
1199
UNUM_PATTERN_SEPARATOR_SYMBOL
= 2,
1201
UNUM_PERCENT_SYMBOL
= 3,
1203
UNUM_ZERO_DIGIT_SYMBOL
= 4,
1205
UNUM_DIGIT_SYMBOL
= 5,
1207
UNUM_MINUS_SIGN_SYMBOL
= 6,
1209
UNUM_PLUS_SIGN_SYMBOL
= 7,
1211
UNUM_CURRENCY_SYMBOL
= 8,
1213
UNUM_INTL_CURRENCY_SYMBOL
= 9,
1215
UNUM_MONETARY_SEPARATOR_SYMBOL
= 10,
1217
UNUM_EXPONENTIAL_SYMBOL
= 11,
1219
UNUM_PERMILL_SYMBOL
= 12,
1221
UNUM_PAD_ESCAPE_SYMBOL
= 13,
1223
UNUM_INFINITY_SYMBOL
= 14,
1225
UNUM_NAN_SYMBOL
= 15,
1228
UNUM_SIGNIFICANT_DIGIT_SYMBOL
= 16,
1232
UNUM_MONETARY_GROUPING_SEPARATOR_SYMBOL
= 17,
1236
UNUM_ONE_DIGIT_SYMBOL
= 18,
1240
UNUM_TWO_DIGIT_SYMBOL
= 19,
1244
UNUM_THREE_DIGIT_SYMBOL
= 20,
1248
UNUM_FOUR_DIGIT_SYMBOL
= 21,
1252
UNUM_FIVE_DIGIT_SYMBOL
= 22,
1256
UNUM_SIX_DIGIT_SYMBOL
= 23,
1260
UNUM_SEVEN_DIGIT_SYMBOL
= 24,
1264
UNUM_EIGHT_DIGIT_SYMBOL
= 25,
1268
UNUM_NINE_DIGIT_SYMBOL
= 26,
1269
1273
UNUM_EXPONENT_MULTIPLICATION_SYMBOL
= 27,
1274
1276
UNUM_FORMAT_SYMBOL_COUNT
= 28
1277
}
UNumberFormatSymbol
;
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
1316
unum_setSymbol
(
UNumberFormat
*fmt,
1317
UNumberFormatSymbol
symbol,
1318
const
UChar
*value,
1319
int32_t length,
1320
UErrorCode
*status);
1321
1322
1332
U_STABLE
const
char
* U_EXPORT2
1333
unum_getLocaleByType
(
const
UNumberFormat
*fmt,
1334
ULocDataLocaleType
type,
1335
UErrorCode
* status);
1336
1345
U_STABLE
void
U_EXPORT2
1346
unum_setContext
(
UNumberFormat
* fmt,
UDisplayContext
value,
UErrorCode
* status);
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
Generated on Wed Oct 7 2015 21:17:57 for ICU 56.1 by
1.8.1.2