unum.h

Go to the documentation of this file.
00001 /*
00002 *******************************************************************************
00003 * Copyright (C) 1997-2010, International Business Machines Corporation and others.
00004 * All Rights Reserved.
00005 * Modification History:
00006 *
00007 *   Date        Name        Description
00008 *   06/24/99    helena      Integrated Alan's NF enhancements and Java2 bug fixes
00009 *******************************************************************************
00010 */
00011 
00012 #ifndef _UNUM
00013 #define _UNUM
00014 
00015 #include "unicode/utypes.h"
00016 
00017 #if !UCONFIG_NO_FORMATTING
00018 
00019 #include "unicode/localpointer.h"
00020 #include "unicode/uloc.h"
00021 #include "unicode/umisc.h"
00022 #include "unicode/parseerr.h"
00130 typedef void* UNumberFormat;
00131 
00135 typedef enum UNumberFormatStyle {
00140     UNUM_PATTERN_DECIMAL=0,
00142     UNUM_DECIMAL=1,
00144     UNUM_CURRENCY,
00146     UNUM_PERCENT,
00148     UNUM_SCIENTIFIC,
00150     UNUM_SPELLOUT,
00155     UNUM_ORDINAL,
00160     UNUM_DURATION,
00165     UNUM_NUMBERING_SYSTEM,
00170     UNUM_PATTERN_RULEBASED,
00172     UNUM_DEFAULT = UNUM_DECIMAL,
00174     UNUM_IGNORE = UNUM_PATTERN_DECIMAL
00175 } UNumberFormatStyle;
00176 
00180 typedef enum UNumberFormatRoundingMode {
00181     UNUM_ROUND_CEILING,
00182     UNUM_ROUND_FLOOR,
00183     UNUM_ROUND_DOWN,
00184     UNUM_ROUND_UP,
00189     UNUM_FOUND_HALFEVEN,
00190     UNUM_ROUND_HALFDOWN,
00191     UNUM_ROUND_HALFUP,
00196     UNUM_ROUND_HALFEVEN = UNUM_FOUND_HALFEVEN
00197 } UNumberFormatRoundingMode;
00198 
00202 typedef enum UNumberFormatPadPosition {
00203     UNUM_PAD_BEFORE_PREFIX,
00204     UNUM_PAD_AFTER_PREFIX,
00205     UNUM_PAD_BEFORE_SUFFIX,
00206     UNUM_PAD_AFTER_SUFFIX
00207 } UNumberFormatPadPosition;
00208 
00240 U_STABLE UNumberFormat* U_EXPORT2 
00241 unum_open(  UNumberFormatStyle    style,
00242             const    UChar*    pattern,
00243             int32_t            patternLength,
00244             const    char*     locale,
00245             UParseError*       parseErr,
00246             UErrorCode*        status);
00247 
00248 
00255 U_STABLE void U_EXPORT2 
00256 unum_close(UNumberFormat* fmt);
00257 
00258 #if U_SHOW_CPLUSPLUS_API
00259 
00260 U_NAMESPACE_BEGIN
00261 
00271 U_DEFINE_LOCAL_OPEN_POINTER(LocalUNumberFormatPointer, UNumberFormat, unum_close);
00272 
00273 U_NAMESPACE_END
00274 
00275 #endif
00276 
00285 U_STABLE UNumberFormat* U_EXPORT2 
00286 unum_clone(const UNumberFormat *fmt,
00287        UErrorCode *status);
00288 
00310 U_STABLE int32_t U_EXPORT2 
00311 unum_format(    const    UNumberFormat*    fmt,
00312         int32_t            number,
00313         UChar*            result,
00314         int32_t            resultLength,
00315         UFieldPosition    *pos,
00316         UErrorCode*        status);
00317 
00339 U_STABLE int32_t U_EXPORT2 
00340 unum_formatInt64(const UNumberFormat *fmt,
00341         int64_t         number,
00342         UChar*          result,
00343         int32_t         resultLength,
00344         UFieldPosition *pos,
00345         UErrorCode*     status);
00346 
00368 U_STABLE int32_t U_EXPORT2 
00369 unum_formatDouble(    const    UNumberFormat*  fmt,
00370             double          number,
00371             UChar*          result,
00372             int32_t         resultLength,
00373             UFieldPosition  *pos, /* 0 if ignore */
00374             UErrorCode*     status);
00375 
00401 U_DRAFT int32_t U_EXPORT2 
00402 unum_formatDecimal(    const    UNumberFormat*  fmt,
00403             const char *    number,
00404             int32_t         length,
00405             UChar*          result,
00406             int32_t         resultLength,
00407             UFieldPosition  *pos, /* 0 if ignore */
00408             UErrorCode*     status);
00409 
00431 U_STABLE int32_t U_EXPORT2 
00432 unum_formatDoubleCurrency(const UNumberFormat* fmt,
00433                           double number,
00434                           UChar* currency,
00435                           UChar* result,
00436                           int32_t resultLength,
00437                           UFieldPosition* pos, /* ignored if 0 */
00438                           UErrorCode* status);
00439 
00457 U_STABLE int32_t U_EXPORT2 
00458 unum_parse(    const   UNumberFormat*  fmt,
00459         const   UChar*          text,
00460         int32_t         textLength,
00461         int32_t         *parsePos /* 0 = start */,
00462         UErrorCode      *status);
00463 
00481 U_STABLE int64_t U_EXPORT2 
00482 unum_parseInt64(const UNumberFormat*  fmt,
00483         const UChar*  text,
00484         int32_t       textLength,
00485         int32_t       *parsePos /* 0 = start */,
00486         UErrorCode    *status);
00487 
00505 U_STABLE double U_EXPORT2 
00506 unum_parseDouble(    const   UNumberFormat*  fmt,
00507             const   UChar*          text,
00508             int32_t         textLength,
00509             int32_t         *parsePos /* 0 = start */,
00510             UErrorCode      *status);
00511 
00512 
00538 U_DRAFT int32_t U_EXPORT2 
00539 unum_parseDecimal(const   UNumberFormat*  fmt,
00540                  const   UChar*          text,
00541                          int32_t         textLength,
00542                          int32_t         *parsePos /* 0 = start */,
00543                          char            *outBuf,
00544                          int32_t         outBufLength,
00545                          UErrorCode      *status);
00546 
00566 U_STABLE double U_EXPORT2
00567 unum_parseDoubleCurrency(const UNumberFormat* fmt,
00568                          const UChar* text,
00569                          int32_t textLength,
00570                          int32_t* parsePos, /* 0 = start */
00571                          UChar* currency,
00572                          UErrorCode* status);
00573 
00590 U_STABLE void U_EXPORT2 
00591 unum_applyPattern(          UNumberFormat  *format,
00592                             UBool          localized,
00593                     const   UChar          *pattern,
00594                             int32_t         patternLength,
00595                             UParseError    *parseError,
00596                             UErrorCode     *status
00597                                     );
00598 
00609 U_STABLE const char* U_EXPORT2 
00610 unum_getAvailable(int32_t localeIndex);
00611 
00621 U_STABLE int32_t U_EXPORT2 
00622 unum_countAvailable(void);
00623 
00625 typedef enum UNumberFormatAttribute {
00627   UNUM_PARSE_INT_ONLY,
00629   UNUM_GROUPING_USED,
00631   UNUM_DECIMAL_ALWAYS_SHOWN,
00633   UNUM_MAX_INTEGER_DIGITS,
00635   UNUM_MIN_INTEGER_DIGITS,
00637   UNUM_INTEGER_DIGITS,
00639   UNUM_MAX_FRACTION_DIGITS,
00641   UNUM_MIN_FRACTION_DIGITS,
00643   UNUM_FRACTION_DIGITS,
00645   UNUM_MULTIPLIER,
00647   UNUM_GROUPING_SIZE,
00649   UNUM_ROUNDING_MODE,
00651   UNUM_ROUNDING_INCREMENT,
00653   UNUM_FORMAT_WIDTH,
00655   UNUM_PADDING_POSITION,
00657   UNUM_SECONDARY_GROUPING_SIZE,
00660   UNUM_SIGNIFICANT_DIGITS_USED,
00663   UNUM_MIN_SIGNIFICANT_DIGITS,
00666   UNUM_MAX_SIGNIFICANT_DIGITS,
00670   UNUM_LENIENT_PARSE
00671 } UNumberFormatAttribute;
00672 
00689 U_STABLE int32_t U_EXPORT2 
00690 unum_getAttribute(const UNumberFormat*          fmt,
00691           UNumberFormatAttribute  attr);
00692 
00712 U_STABLE void U_EXPORT2 
00713 unum_setAttribute(    UNumberFormat*          fmt,
00714             UNumberFormatAttribute  attr,
00715             int32_t                 newValue);
00716 
00717 
00732 U_STABLE double U_EXPORT2 
00733 unum_getDoubleAttribute(const UNumberFormat*          fmt,
00734           UNumberFormatAttribute  attr);
00735 
00750 U_STABLE void U_EXPORT2 
00751 unum_setDoubleAttribute(    UNumberFormat*          fmt,
00752             UNumberFormatAttribute  attr,
00753             double                 newValue);
00754 
00756 typedef enum UNumberFormatTextAttribute {
00758   UNUM_POSITIVE_PREFIX,
00760   UNUM_POSITIVE_SUFFIX,
00762   UNUM_NEGATIVE_PREFIX,
00764   UNUM_NEGATIVE_SUFFIX,
00766   UNUM_PADDING_CHARACTER,
00768   UNUM_CURRENCY_CODE,
00773   UNUM_DEFAULT_RULESET,
00780   UNUM_PUBLIC_RULESETS
00781 } UNumberFormatTextAttribute;
00782 
00801 U_STABLE int32_t U_EXPORT2 
00802 unum_getTextAttribute(    const    UNumberFormat*                    fmt,
00803             UNumberFormatTextAttribute      tag,
00804             UChar*                            result,
00805             int32_t                            resultLength,
00806             UErrorCode*                        status);
00807 
00824 U_STABLE void U_EXPORT2 
00825 unum_setTextAttribute(    UNumberFormat*                    fmt,
00826             UNumberFormatTextAttribute      tag,
00827             const    UChar*                            newValue,
00828             int32_t                            newValueLength,
00829             UErrorCode                        *status);
00830 
00847 U_STABLE int32_t U_EXPORT2 
00848 unum_toPattern(    const    UNumberFormat*          fmt,
00849         UBool                  isPatternLocalized,
00850         UChar*                  result,
00851         int32_t                 resultLength,
00852         UErrorCode*             status);
00853 
00854 
00859 typedef enum UNumberFormatSymbol {
00861   UNUM_DECIMAL_SEPARATOR_SYMBOL = 0,
00863   UNUM_GROUPING_SEPARATOR_SYMBOL = 1,
00865   UNUM_PATTERN_SEPARATOR_SYMBOL = 2,
00867   UNUM_PERCENT_SYMBOL = 3,
00869   UNUM_ZERO_DIGIT_SYMBOL = 4,
00871   UNUM_DIGIT_SYMBOL = 5,
00873   UNUM_MINUS_SIGN_SYMBOL = 6,
00875   UNUM_PLUS_SIGN_SYMBOL = 7,
00877   UNUM_CURRENCY_SYMBOL = 8,
00879   UNUM_INTL_CURRENCY_SYMBOL = 9,
00881   UNUM_MONETARY_SEPARATOR_SYMBOL = 10,
00883   UNUM_EXPONENTIAL_SYMBOL = 11,
00885   UNUM_PERMILL_SYMBOL = 12,
00887   UNUM_PAD_ESCAPE_SYMBOL = 13,
00889   UNUM_INFINITY_SYMBOL = 14,
00891   UNUM_NAN_SYMBOL = 15,
00894   UNUM_SIGNIFICANT_DIGIT_SYMBOL = 16,
00898   UNUM_MONETARY_GROUPING_SEPARATOR_SYMBOL = 17,  
00900   UNUM_FORMAT_SYMBOL_COUNT = 18
00901 } UNumberFormatSymbol;
00902 
00919 U_STABLE int32_t U_EXPORT2
00920 unum_getSymbol(const UNumberFormat *fmt,
00921                UNumberFormatSymbol symbol,
00922                UChar *buffer,
00923                int32_t size,
00924                UErrorCode *status);
00925 
00939 U_STABLE void U_EXPORT2
00940 unum_setSymbol(UNumberFormat *fmt,
00941                UNumberFormatSymbol symbol,
00942                const UChar *value,
00943                int32_t length,
00944                UErrorCode *status);
00945 
00946 
00956 U_STABLE const char* U_EXPORT2
00957 unum_getLocaleByType(const UNumberFormat *fmt,
00958                      ULocDataLocaleType type,
00959                      UErrorCode* status); 
00960 
00961 #endif /* #if !UCONFIG_NO_FORMATTING */
00962 
00963 #endif

Generated on Tue Apr 27 15:10:34 2010 for ICU 4.4.1 by  doxygen 1.4.7