unum.h

Go to the documentation of this file.
00001 /* 00002 ******************************************************************************* 00003 * Copyright (C) 1997-2004, International Business Machines Corporation and others. All Rights Reserved. 00004 * Modification History: 00005 * 00006 * Date Name Description 00007 * 06/24/99 helena Integrated Alan's NF enhancements and Java2 bug fixes 00008 ******************************************************************************* 00009 */ 00010 00011 #ifndef _UNUM 00012 #define _UNUM 00013 00014 #include "unicode/utypes.h" 00015 00016 #if !UCONFIG_NO_FORMATTING 00017 00018 #include "unicode/uloc.h" 00019 #include "unicode/umisc.h" 00020 #include "unicode/parseerr.h" 00128 typedef void* UNumberFormat; 00129 00133 typedef enum UNumberFormatStyle { 00138 UNUM_PATTERN_DECIMAL=0, 00140 UNUM_DECIMAL=1, 00142 UNUM_CURRENCY, 00144 UNUM_PERCENT, 00146 UNUM_SCIENTIFIC, 00148 UNUM_SPELLOUT, 00153 UNUM_ORDINAL, 00158 UNUM_DURATION, 00163 UNUM_PATTERN_RULEBASED, 00165 UNUM_DEFAULT = UNUM_DECIMAL, 00167 UNUM_IGNORE = UNUM_PATTERN_DECIMAL 00168 } UNumberFormatStyle; 00169 00173 typedef enum UNumberFormatRoundingMode { 00174 UNUM_ROUND_CEILING, 00175 UNUM_ROUND_FLOOR, 00176 UNUM_ROUND_DOWN, 00177 UNUM_ROUND_UP, 00178 UNUM_FOUND_HALFEVEN, 00179 UNUM_ROUND_HALFDOWN, 00180 UNUM_ROUND_HALFUP 00181 } UNumberFormatRoundingMode; 00182 00186 typedef enum UNumberFormatPadPosition { 00187 UNUM_PAD_BEFORE_PREFIX, 00188 UNUM_PAD_AFTER_PREFIX, 00189 UNUM_PAD_BEFORE_SUFFIX, 00190 UNUM_PAD_AFTER_SUFFIX 00191 } UNumberFormatPadPosition; 00192 00224 U_CAPI UNumberFormat* U_EXPORT2 00225 unum_open( UNumberFormatStyle style, 00226 const UChar* pattern, 00227 int32_t patternLength, 00228 const char* locale, 00229 UParseError* parseErr, 00230 UErrorCode* status); 00231 00232 00239 U_CAPI void U_EXPORT2 00240 unum_close(UNumberFormat* fmt); 00241 00250 U_CAPI UNumberFormat* U_EXPORT2 00251 unum_clone(const UNumberFormat *fmt, 00252 UErrorCode *status); 00253 00275 U_CAPI int32_t U_EXPORT2 00276 unum_format( const UNumberFormat* fmt, 00277 int32_t number, 00278 UChar* result, 00279 int32_t resultLength, 00280 UFieldPosition *pos, 00281 UErrorCode* status); 00282 00304 U_CAPI int32_t U_EXPORT2 00305 unum_formatInt64(const UNumberFormat *fmt, 00306 int64_t number, 00307 UChar* result, 00308 int32_t resultLength, 00309 UFieldPosition *pos, 00310 UErrorCode* status); 00311 00333 U_CAPI int32_t U_EXPORT2 00334 unum_formatDouble( const UNumberFormat* fmt, 00335 double number, 00336 UChar* result, 00337 int32_t resultLength, 00338 UFieldPosition *pos, /* 0 if ignore */ 00339 UErrorCode* status); 00340 00362 U_DRAFT int32_t U_EXPORT2 00363 unum_formatDoubleCurrency(const UNumberFormat* fmt, 00364 double number, 00365 UChar* currency, 00366 UChar* result, 00367 int32_t resultLength, 00368 UFieldPosition* pos, /* ignored if 0 */ 00369 UErrorCode* status); 00370 00388 U_CAPI int32_t U_EXPORT2 00389 unum_parse( const UNumberFormat* fmt, 00390 const UChar* text, 00391 int32_t textLength, 00392 int32_t *parsePos /* 0 = start */, 00393 UErrorCode *status); 00394 00412 U_CAPI int64_t U_EXPORT2 00413 unum_parseInt64(const UNumberFormat* fmt, 00414 const UChar* text, 00415 int32_t textLength, 00416 int32_t *parsePos /* 0 = start */, 00417 UErrorCode *status); 00418 00436 U_CAPI double U_EXPORT2 00437 unum_parseDouble( const UNumberFormat* fmt, 00438 const UChar* text, 00439 int32_t textLength, 00440 int32_t *parsePos /* 0 = start */, 00441 UErrorCode *status); 00442 00462 U_DRAFT double U_EXPORT2 00463 unum_parseDoubleCurrency(const UNumberFormat* fmt, 00464 const UChar* text, 00465 int32_t textLength, 00466 int32_t* parsePos, /* 0 = start */ 00467 UChar* currency, 00468 UErrorCode* status); 00469 00486 U_CAPI void U_EXPORT2 00487 unum_applyPattern( UNumberFormat *format, 00488 UBool localized, 00489 const UChar *pattern, 00490 int32_t patternLength, 00491 UParseError *parseError, 00492 UErrorCode *status 00493 ); 00494 00505 U_CAPI const char* U_EXPORT2 00506 unum_getAvailable(int32_t index); 00507 00517 U_CAPI int32_t U_EXPORT2 00518 unum_countAvailable(void); 00519 00521 typedef enum UNumberFormatAttribute { 00523 UNUM_PARSE_INT_ONLY, 00525 UNUM_GROUPING_USED, 00527 UNUM_DECIMAL_ALWAYS_SHOWN, 00529 UNUM_MAX_INTEGER_DIGITS, 00531 UNUM_MIN_INTEGER_DIGITS, 00533 UNUM_INTEGER_DIGITS, 00535 UNUM_MAX_FRACTION_DIGITS, 00537 UNUM_MIN_FRACTION_DIGITS, 00539 UNUM_FRACTION_DIGITS, 00541 UNUM_MULTIPLIER, 00543 UNUM_GROUPING_SIZE, 00545 UNUM_ROUNDING_MODE, 00547 UNUM_ROUNDING_INCREMENT, 00549 UNUM_FORMAT_WIDTH, 00551 UNUM_PADDING_POSITION, 00553 UNUM_SECONDARY_GROUPING_SIZE, 00556 UNUM_SIGNIFICANT_DIGITS_USED, 00559 UNUM_MIN_SIGNIFICANT_DIGITS, 00562 UNUM_MAX_SIGNIFICANT_DIGITS, 00566 UNUM_LENIENT_PARSE 00567 } UNumberFormatAttribute; 00568 00585 U_CAPI int32_t U_EXPORT2 00586 unum_getAttribute(const UNumberFormat* fmt, 00587 UNumberFormatAttribute attr); 00588 00608 U_CAPI void U_EXPORT2 00609 unum_setAttribute( UNumberFormat* fmt, 00610 UNumberFormatAttribute attr, 00611 int32_t newValue); 00612 00613 00628 U_CAPI double U_EXPORT2 00629 unum_getDoubleAttribute(const UNumberFormat* fmt, 00630 UNumberFormatAttribute attr); 00631 00646 U_CAPI void U_EXPORT2 00647 unum_setDoubleAttribute( UNumberFormat* fmt, 00648 UNumberFormatAttribute attr, 00649 double newValue); 00650 00652 typedef enum UNumberFormatTextAttribute { 00654 UNUM_POSITIVE_PREFIX, 00656 UNUM_POSITIVE_SUFFIX, 00658 UNUM_NEGATIVE_PREFIX, 00660 UNUM_NEGATIVE_SUFFIX, 00662 UNUM_PADDING_CHARACTER, 00664 UNUM_CURRENCY_CODE, 00669 UNUM_DEFAULT_RULESET, 00676 UNUM_PUBLIC_RULESETS 00677 } UNumberFormatTextAttribute; 00678 00697 U_CAPI int32_t U_EXPORT2 00698 unum_getTextAttribute( const UNumberFormat* fmt, 00699 UNumberFormatTextAttribute tag, 00700 UChar* result, 00701 int32_t resultLength, 00702 UErrorCode* status); 00703 00720 U_CAPI void U_EXPORT2 00721 unum_setTextAttribute( UNumberFormat* fmt, 00722 UNumberFormatTextAttribute tag, 00723 const UChar* newValue, 00724 int32_t newValueLength, 00725 UErrorCode *status); 00726 00743 U_CAPI int32_t U_EXPORT2 00744 unum_toPattern( const UNumberFormat* fmt, 00745 UBool isPatternLocalized, 00746 UChar* result, 00747 int32_t resultLength, 00748 UErrorCode* status); 00749 00751 #define UNFSYMBOLSMAXSIZE 10 00752 00757 typedef enum UNumberFormatSymbol { 00759 UNUM_DECIMAL_SEPARATOR_SYMBOL, 00761 UNUM_GROUPING_SEPARATOR_SYMBOL, 00763 UNUM_PATTERN_SEPARATOR_SYMBOL, 00765 UNUM_PERCENT_SYMBOL, 00767 UNUM_ZERO_DIGIT_SYMBOL, 00769 UNUM_DIGIT_SYMBOL, 00771 UNUM_MINUS_SIGN_SYMBOL, 00773 UNUM_PLUS_SIGN_SYMBOL, 00775 UNUM_CURRENCY_SYMBOL, 00777 UNUM_INTL_CURRENCY_SYMBOL, 00779 UNUM_MONETARY_SEPARATOR_SYMBOL, 00781 UNUM_EXPONENTIAL_SYMBOL, 00783 UNUM_PERMILL_SYMBOL, 00785 UNUM_PAD_ESCAPE_SYMBOL, 00787 UNUM_INFINITY_SYMBOL, 00789 UNUM_NAN_SYMBOL, 00792 UNUM_SIGNIFICANT_DIGIT_SYMBOL, 00794 UNUM_FORMAT_SYMBOL_COUNT 00795 } UNumberFormatSymbol; 00796 00813 U_CAPI int32_t U_EXPORT2 00814 unum_getSymbol(const UNumberFormat *fmt, 00815 UNumberFormatSymbol symbol, 00816 UChar *buffer, 00817 int32_t size, 00818 UErrorCode *status); 00819 00833 U_CAPI void U_EXPORT2 00834 unum_setSymbol(UNumberFormat *fmt, 00835 UNumberFormatSymbol symbol, 00836 const UChar *value, 00837 int32_t length, 00838 UErrorCode *status); 00839 00840 00850 U_CAPI const char* U_EXPORT2 00851 unum_getLocaleByType(const UNumberFormat *fmt, 00852 ULocDataLocaleType type, 00853 UErrorCode* status); 00854 00855 #endif /* #if !UCONFIG_NO_FORMATTING */ 00856 00857 #endif

Generated on Fri Jun 18 12:36:02 2004 for ICU by doxygen 1.3.7