00001
00002
00003
00004 #include "unicode/utypes.h"
00005
00006 #if !UCONFIG_NO_FORMATTING
00007 #ifndef __UNUMBERFORMATTER_H__
00008 #define __UNUMBERFORMATTER_H__
00009
00010 #include "unicode/parseerr.h"
00011 #include "unicode/ufieldpositer.h"
00012 #include "unicode/umisc.h"
00013 #include "unicode/uformattedvalue.h"
00014
00015
00098 typedef enum UNumberUnitWidth {
00110 UNUM_UNIT_WIDTH_NARROW,
00111
00126 UNUM_UNIT_WIDTH_SHORT,
00127
00137 UNUM_UNIT_WIDTH_FULL_NAME,
00138
00148 UNUM_UNIT_WIDTH_ISO_CODE,
00149
00157 UNUM_UNIT_WIDTH_HIDDEN,
00158
00164 UNUM_UNIT_WIDTH_COUNT
00165 } UNumberUnitWidth;
00166
00193 typedef enum UNumberGroupingStrategy {
00199 UNUM_GROUPING_OFF,
00200
00215 UNUM_GROUPING_MIN2,
00216
00230 UNUM_GROUPING_AUTO,
00231
00246 UNUM_GROUPING_ON_ALIGNED,
00247
00254 UNUM_GROUPING_THOUSANDS
00255
00256 #ifndef U_HIDE_INTERNAL_API
00257 ,
00263 UNUM_GROUPING_COUNT
00264 #endif
00265
00266 } UNumberGroupingStrategy;
00267
00287 typedef enum UNumberSignDisplay {
00294 UNUM_SIGN_AUTO,
00295
00302 UNUM_SIGN_ALWAYS,
00303
00309 UNUM_SIGN_NEVER,
00310
00325 UNUM_SIGN_ACCOUNTING,
00326
00335 UNUM_SIGN_ACCOUNTING_ALWAYS,
00336
00343 UNUM_SIGN_EXCEPT_ZERO,
00344
00352 UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO,
00353
00359 UNUM_SIGN_COUNT
00360 } UNumberSignDisplay;
00361
00373 typedef enum UNumberDecimalSeparatorDisplay {
00380 UNUM_DECIMAL_SEPARATOR_AUTO,
00381
00387 UNUM_DECIMAL_SEPARATOR_ALWAYS,
00388
00394 UNUM_DECIMAL_SEPARATOR_COUNT
00395 } UNumberDecimalSeparatorDisplay;
00396
00397 struct UNumberFormatter;
00405 typedef struct UNumberFormatter UNumberFormatter;
00406
00407 struct UFormattedNumber;
00415 typedef struct UFormattedNumber UFormattedNumber;
00416
00417
00435 U_STABLE UNumberFormatter* U_EXPORT2
00436 unumf_openForSkeletonAndLocale(const UChar* skeleton, int32_t skeletonLen, const char* locale,
00437 UErrorCode* ec);
00438
00439
00452 U_STABLE UNumberFormatter* U_EXPORT2
00453 unumf_openForSkeletonAndLocaleWithError(
00454 const UChar* skeleton, int32_t skeletonLen, const char* locale, UParseError* perror, UErrorCode* ec);
00455
00456
00465 U_STABLE UFormattedNumber* U_EXPORT2
00466 unumf_openResult(UErrorCode* ec);
00467
00468
00484 U_STABLE void U_EXPORT2
00485 unumf_formatInt(const UNumberFormatter* uformatter, int64_t value, UFormattedNumber* uresult,
00486 UErrorCode* ec);
00487
00488
00504 U_STABLE void U_EXPORT2
00505 unumf_formatDouble(const UNumberFormatter* uformatter, double value, UFormattedNumber* uresult,
00506 UErrorCode* ec);
00507
00508
00528 U_STABLE void U_EXPORT2
00529 unumf_formatDecimal(const UNumberFormatter* uformatter, const char* value, int32_t valueLen,
00530 UFormattedNumber* uresult, UErrorCode* ec);
00531
00546 U_STABLE const UFormattedValue* U_EXPORT2
00547 unumf_resultAsValue(const UFormattedNumber* uresult, UErrorCode* ec);
00548
00549
00569 U_STABLE int32_t U_EXPORT2
00570 unumf_resultToString(const UFormattedNumber* uresult, UChar* buffer, int32_t bufferCapacity,
00571 UErrorCode* ec);
00572
00573
00607 U_STABLE UBool U_EXPORT2
00608 unumf_resultNextFieldPosition(const UFormattedNumber* uresult, UFieldPosition* ufpos, UErrorCode* ec);
00609
00610
00632 U_STABLE void U_EXPORT2
00633 unumf_resultGetAllFieldPositions(const UFormattedNumber* uresult, UFieldPositionIterator* ufpositer,
00634 UErrorCode* ec);
00635
00636
00637
00638
00639
00640
00641
00642
00643
00650 U_STABLE void U_EXPORT2
00651 unumf_close(UNumberFormatter* uformatter);
00652
00653
00660 U_STABLE void U_EXPORT2
00661 unumf_closeResult(UFormattedNumber* uresult);
00662
00663
00664 #if U_SHOW_CPLUSPLUS_API
00665 U_NAMESPACE_BEGIN
00666
00682 U_DEFINE_LOCAL_OPEN_POINTER(LocalUNumberFormatterPointer, UNumberFormatter, unumf_close);
00683
00699 U_DEFINE_LOCAL_OPEN_POINTER(LocalUFormattedNumberPointer, UFormattedNumber, unumf_closeResult);
00700
00701 U_NAMESPACE_END
00702 #endif // U_SHOW_CPLUSPLUS_API
00703
00704 #endif //__UNUMBERFORMATTER_H__
00705 #endif