decimfmt.h   decimfmt.h 
skipping to change at line 42 skipping to change at line 42
#if !UCONFIG_NO_FORMATTING #if !UCONFIG_NO_FORMATTING
#include "unicode/dcfmtsym.h" #include "unicode/dcfmtsym.h"
#include "unicode/numfmt.h" #include "unicode/numfmt.h"
#include "unicode/locid.h" #include "unicode/locid.h"
#include "unicode/fpositer.h" #include "unicode/fpositer.h"
#include "unicode/stringpiece.h" #include "unicode/stringpiece.h"
#include "unicode/curramt.h" #include "unicode/curramt.h"
/**
* \def UNUM_DECIMFORMAT_INTERNAL_SIZE
* @internal
*/
#if UCONFIG_FORMAT_FASTPATHS_49
#define UNUM_DECIMALFORMAT_INTERNAL_SIZE 16
#endif
U_NAMESPACE_BEGIN U_NAMESPACE_BEGIN
class DigitList; class DigitList;
class ChoiceFormat; class ChoiceFormat;
class CurrencyPluralInfo; class CurrencyPluralInfo;
class Hashtable; class Hashtable;
class UnicodeSet; class UnicodeSet;
class FieldPositionHandler; class FieldPositionHandler;
/** /**
skipping to change at line 750 skipping to change at line 758
* delete this object after making this call. * delete this object after making this call.
* @param style style of decimal format * @param style style of decimal format
* @param status Output param set to success/failure code. I f the * @param status Output param set to success/failure code. I f the
* pattern is invalid this will be set to a fa ilure code. * pattern is invalid this will be set to a fa ilure code.
* @internal ICU 4.2 * @internal ICU 4.2
*/ */
DecimalFormat( const UnicodeString& pattern, DecimalFormat( const UnicodeString& pattern,
DecimalFormatSymbols* symbolsToAdopt, DecimalFormatSymbols* symbolsToAdopt,
UNumberFormatStyle style, UNumberFormatStyle style,
UErrorCode& status); UErrorCode& status);
#if UCONFIG_HAVE_PARSEALLINPUT
/**
* @internal
*/
void setParseAllInput(UNumberFormatAttributeValue value);
#endif
#endif /* U_HIDE_INTERNAL_API */ #endif /* U_HIDE_INTERNAL_API */
/** /**
* Create a DecimalFormat from the given pattern and symbols. * Create a DecimalFormat from the given pattern and symbols.
* Use this constructor when you need to completely customize the * Use this constructor when you need to completely customize the
* behavior of the format. * behavior of the format.
* <P> * <P>
* To obtain standard formats for a given * To obtain standard formats for a given
* locale, use the factory methods on NumberFormat such as * locale, use the factory methods on NumberFormat such as
* createInstance or createCurrencyInstance. If you need only minor adj ustments * createInstance or createCurrencyInstance. If you need only minor adj ustments
skipping to change at line 1861 skipping to change at line 1877
private: private:
DecimalFormat(); // default constructor not implemented DecimalFormat(); // default constructor not implemented
int32_t precision() const; int32_t precision() const;
/** /**
* Initialize all fields of a new DecimalFormatter. * Initialize all fields of a new DecimalFormatter.
* Common code for use by constructors. * Common code for use by constructors.
*/ */
void init(); void init(UErrorCode& status);
/** /**
* Do real work of constructing a new DecimalFormat. * Do real work of constructing a new DecimalFormat.
*/ */
void construct(UErrorCode& status, void construct(UErrorCode& status,
UParseError& parseErr, UParseError& parseErr,
const UnicodeString* pattern = 0, const UnicodeString* pattern = 0,
DecimalFormatSymbols* symbolsToAdopt = 0 DecimalFormatSymbols* symbolsToAdopt = 0
); );
skipping to change at line 2254 skipping to change at line 2270
// negative suffix, positive prefix, and positive suffix of a pattern. // negative suffix, positive prefix, and positive suffix of a pattern.
// It is used during currency formatting only when the currency sign co unt // It is used during currency formatting only when the currency sign co unt
// is 3. In which case, the affixes are getting from here, not // is 3. In which case, the affixes are getting from here, not
// from the fNegativePrefix etc. // from the fNegativePrefix etc.
Hashtable* fAffixesForCurrency; // for current pattern Hashtable* fAffixesForCurrency; // for current pattern
Hashtable* fPluralAffixesForCurrency; // for plural pattern Hashtable* fPluralAffixesForCurrency; // for plural pattern
// Information needed for DecimalFormat to format/parse currency plural . // Information needed for DecimalFormat to format/parse currency plural .
CurrencyPluralInfo* fCurrencyPluralInfo; CurrencyPluralInfo* fCurrencyPluralInfo;
#if UCONFIG_HAVE_PARSEALLINPUT
UNumberFormatAttributeValue fParseAllInput;
#endif
protected: protected:
/** /**
* Returns the currency in effect for this formatter. Subclasses * Returns the currency in effect for this formatter. Subclasses
* should override this method as needed. Unlike getCurrency(), * should override this method as needed. Unlike getCurrency(),
* this method should never return "". * this method should never return "".
* @result output parameter for null-terminated result, which must * @result output parameter for null-terminated result, which must
* have a capacity of at least 4 * have a capacity of at least 4
* @internal * @internal
*/ */
skipping to change at line 2286 skipping to change at line 2306
* When someone turns on scientific mode, we assume that more than this * When someone turns on scientific mode, we assume that more than this
* number of digits is due to flipping from some other mode that didn't * number of digits is due to flipping from some other mode that didn't
* restrict the maximum, and so we force 1 integer digit. We don't bot her * restrict the maximum, and so we force 1 integer digit. We don't bot her
* to track and see if someone is using exponential notation with more than * to track and see if someone is using exponential notation with more than
* this number, it wouldn't make sense anyway, and this is just to make sure * this number, it wouldn't make sense anyway, and this is just to make sure
* that someone turning on scientific mode with default settings doesn' t * that someone turning on scientific mode with default settings doesn' t
* end up with lots of zeroes. * end up with lots of zeroes.
* @stable ICU 2.8 * @stable ICU 2.8
*/ */
static const int32_t kMaxScientificIntegerDigits; static const int32_t kMaxScientificIntegerDigits;
#if UCONFIG_FORMAT_FASTPATHS_49
private:
/**
* Internal state.
* @internal
*/
uint8_t fReserved[UNUM_DECIMALFORMAT_INTERNAL_SIZE];
/**
* Called whenever any state changes. Recomputes whether fastpath is OK
to use.
*/
void handleChanged();
#endif
}; };
inline UnicodeString& inline UnicodeString&
DecimalFormat::format(const Formattable& obj, DecimalFormat::format(const Formattable& obj,
UnicodeString& appendTo, UnicodeString& appendTo,
UErrorCode& status) const { UErrorCode& status) const {
// Don't use Format:: - use immediate base class only, // Don't use Format:: - use immediate base class only,
// in case immediate base modifies behavior later. // in case immediate base modifies behavior later.
return NumberFormat::format(obj, appendTo, status); return NumberFormat::format(obj, appendTo, status);
} }
 End of changes. 5 change blocks. 
1 lines changed or deleted 36 lines changed or added


 fmtable.h   fmtable.h 
/* /*
*************************************************************************** ***** *************************************************************************** *****
* Copyright (C) 1997-2011, International Business Machines * Copyright (C) 1997-2012, International Business Machines
* Corporation and others. All Rights Reserved. * Corporation and others. All Rights Reserved.
*************************************************************************** ***** *************************************************************************** *****
* *
* File FMTABLE.H * File FMTABLE.H
* *
* Modification History: * Modification History:
* *
* Date Name Description * Date Name Description
* 02/29/97 aliu Creation. * 02/29/97 aliu Creation.
*************************************************************************** ***** *************************************************************************** *****
skipping to change at line 608 skipping to change at line 608
/** /**
* Internal function, do not use. * Internal function, do not use.
* TODO: figure out how to make this be non-public. * TODO: figure out how to make this be non-public.
* NumberFormat::format(Formattable, ... * NumberFormat::format(Formattable, ...
* needs to get at the DigitList, if it exists, for * needs to get at the DigitList, if it exists, for
* big decimal formatting. * big decimal formatting.
* @internal * @internal
*/ */
DigitList *getDigitList() const { return fDecimalNum;} DigitList *getDigitList() const { return fDecimalNum;}
#if UCONFIG_INTERNAL_DIGITLIST
/**
* @internal
*/
DigitList *getInternalDigitList();
#endif
/** /**
* Adopt, and set value from, a DigitList * Adopt, and set value from, a DigitList
* Internal Function, do not use. * Internal Function, do not use.
* @param dl the Digit List to be adopted * @param dl the Digit List to be adopted
* @internal * @internal
*/ */
void adoptDigitList(DigitList *dl); void adoptDigitList(DigitList *dl);
#endif /* U_HIDE_INTERNAL_API */ #endif /* U_HIDE_INTERNAL_API */
private: private:
skipping to change at line 644 skipping to change at line 651
double fDouble; double fDouble;
int64_t fInt64; int64_t fInt64;
UDate fDate; UDate fDate;
struct { struct {
Formattable* fArray; Formattable* fArray;
int32_t fCount; int32_t fCount;
} fArrayAndCount; } fArrayAndCount;
} fValue; } fValue;
CharString *fDecimalStr; CharString *fDecimalStr;
DigitList *fDecimalNum; DigitList *fDecimalNum;
#if UCONFIG_INTERNAL_DIGITLIST
char fStackData[128]; // must be big enough for DigitLis
t
#endif
Type fType; Type fType;
UnicodeString fBogus; // Bogus string when it's needed. UnicodeString fBogus; // Bogus string when it's needed.
}; };
inline UDate Formattable::getDate(UErrorCode& status) const { inline UDate Formattable::getDate(UErrorCode& status) const {
if (fType != kDate) { if (fType != kDate) {
if (U_SUCCESS(status)) { if (U_SUCCESS(status)) {
status = U_INVALID_FORMAT_ERROR; status = U_INVALID_FORMAT_ERROR;
} }
return 0; return 0;
 End of changes. 4 change blocks. 
1 lines changed or deleted 14 lines changed or added


 platform.h   platform.h 
skipping to change at line 349 skipping to change at line 349
/* Use the predefined value. */ /* Use the predefined value. */
#elif defined(BYTE_ORDER) && defined(BIG_ENDIAN) #elif defined(BYTE_ORDER) && defined(BIG_ENDIAN)
# define U_IS_BIG_ENDIAN (BYTE_ORDER == BIG_ENDIAN) # define U_IS_BIG_ENDIAN (BYTE_ORDER == BIG_ENDIAN)
#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) #elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__)
/* gcc */ /* gcc */
# define U_IS_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) # define U_IS_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
#elif defined(__BIG_ENDIAN__) || defined(_BIG_ENDIAN) #elif defined(__BIG_ENDIAN__) || defined(_BIG_ENDIAN)
# define U_IS_BIG_ENDIAN 1 # define U_IS_BIG_ENDIAN 1
#elif defined(__LITTLE_ENDIAN__) || defined(_LITTLE_ENDIAN) #elif defined(__LITTLE_ENDIAN__) || defined(_LITTLE_ENDIAN)
# define U_IS_BIG_ENDIAN 0 # define U_IS_BIG_ENDIAN 0
#elif U_PLATFORM == U_PF_OS390 || U_PLATFORM == U_PF_OS400 #elif U_PLATFORM == U_PF_OS390 || U_PLATFORM == U_PF_OS400 || defined(__s39 0__) || defined(__s390x__)
/* These platforms do not appear to predefine any endianness macros. */ /* These platforms do not appear to predefine any endianness macros. */
# define U_IS_BIG_ENDIAN 1 # define U_IS_BIG_ENDIAN 1
#elif defined(_PA_RISC1_0) || defined(_PA_RISC1_1) || defined(_PA_RISC2_0)
/* HPPA do not appear to predefine any endianness macros. */
# define U_IS_BIG_ENDIAN 1
#else #else
# define U_IS_BIG_ENDIAN 0 # define U_IS_BIG_ENDIAN 0
#endif #endif
/** /**
* \def U_HAVE_PLACEMENT_NEW * \def U_HAVE_PLACEMENT_NEW
* Determines whether to override placement new and delete for STL. * Determines whether to override placement new and delete for STL.
* @stable ICU 2.6 * @stable ICU 2.6
*/ */
#ifdef U_HAVE_PLACEMENT_NEW #ifdef U_HAVE_PLACEMENT_NEW
 End of changes. 2 change blocks. 
1 lines changed or deleted 4 lines changed or added


 uconfig.h   uconfig.h 
skipping to change at line 405 skipping to change at line 405
/** /**
* \def UCONFIG_NO_SERVICE * \def UCONFIG_NO_SERVICE
* This switch turns off service registration. * This switch turns off service registration.
* *
* @stable ICU 3.2 * @stable ICU 3.2
*/ */
#ifndef UCONFIG_NO_SERVICE #ifndef UCONFIG_NO_SERVICE
# define UCONFIG_NO_SERVICE 0 # define UCONFIG_NO_SERVICE 0
#endif #endif
/**
* \def UCONFIG_INTERNAL_DIGITLIST
* This switch turns on the fast but binary-incompatible Formattable class
with an internal DigitList
*
* @internal
*/
#ifndef UCONFIG_INTERNAL_DIGITLIST
# define UCONFIG_INTERNAL_DIGITLIST 0
#endif
/**
* \def UCONFIG_HAVE_PARSEALLINPUT
* This switch turns on the "parse all input" attribute. Binary incompatibl
e.
*
* @internal
*/
#ifndef UCONFIG_HAVE_PARSEALLINPUT
# define UCONFIG_HAVE_PARSEALLINPUT 0
#endif
/**
* \def UCONFIG_HAVE_PARSEALLINPUT
* This switch turns on other formatting fastpaths. Binary incompatible in
object DecimalFormat and DecimalFormatSymbols
*
* @internal
*/
#ifndef UCONFIG_FORMAT_FASTPATHS_49
# define UCONFIG_FORMAT_FASTPATHS_49 0
#endif
#endif #endif
 End of changes. 1 change blocks. 
0 lines changed or deleted 33 lines changed or added


 unum.h   unum.h 
skipping to change at line 714 skipping to change at line 714
* results of this call are not valid for rule-based number formats. * results of this call are not valid for rule-based number formats.
* This function is useful for determining the loop ending condition for * This function is useful for determining the loop ending condition for
* calls to {@link #unum_getAvailable }. * calls to {@link #unum_getAvailable }.
* @return The number of locales for which decimal formatting patterns are a vailable. * @return The number of locales for which decimal formatting patterns are a vailable.
* @see unum_getAvailable * @see unum_getAvailable
* @stable ICU 2.0 * @stable ICU 2.0
*/ */
U_STABLE int32_t U_EXPORT2 U_STABLE int32_t U_EXPORT2
unum_countAvailable(void); unum_countAvailable(void);
#if UCONFIG_HAVE_PARSEALLINPUT
/**
* @internal
*/
typedef enum UNumberFormatAttributeValue {
/** @internal */
UNUM_NO = 0,
/** @internal */
UNUM_YES = 1,
/** @internal */
UNUM_MAYBE = 2
} UNumberFormatAttributeValue;
#endif
/** The possible UNumberFormat numeric attributes @stable ICU 2.0 */ /** The possible UNumberFormat numeric attributes @stable ICU 2.0 */
typedef enum UNumberFormatAttribute { typedef enum UNumberFormatAttribute {
/** Parse integers only */ /** Parse integers only */
UNUM_PARSE_INT_ONLY, UNUM_PARSE_INT_ONLY,
/** Use grouping separator */ /** Use grouping separator */
UNUM_GROUPING_USED, UNUM_GROUPING_USED,
/** Always show decimal point */ /** Always show decimal point */
UNUM_DECIMAL_ALWAYS_SHOWN, UNUM_DECIMAL_ALWAYS_SHOWN,
/** Maximum integer digits */ /** Maximum integer digits */
UNUM_MAX_INTEGER_DIGITS, UNUM_MAX_INTEGER_DIGITS,
skipping to change at line 761 skipping to change at line 775
/** Minimum significant digits /** Minimum significant digits
* @stable ICU 3.0 */ * @stable ICU 3.0 */
UNUM_MIN_SIGNIFICANT_DIGITS, UNUM_MIN_SIGNIFICANT_DIGITS,
/** Maximum significant digits /** Maximum significant digits
* @stable ICU 3.0 */ * @stable ICU 3.0 */
UNUM_MAX_SIGNIFICANT_DIGITS, UNUM_MAX_SIGNIFICANT_DIGITS,
/** Lenient parse mode used by rule-based formats. /** Lenient parse mode used by rule-based formats.
* @stable ICU 3.0 * @stable ICU 3.0
*/ */
UNUM_LENIENT_PARSE UNUM_LENIENT_PARSE
#if UCONFIG_HAVE_PARSEALLINPUT
/** Consume all input. (may use fastpath). Set to UNUM_YES (require fastp
ath), UNUM_NO (skip fastpath), or UNUM_MAYBE (heuristic).
* @internal
*/
,UNUM_PARSE_ALL_INPUT
#endif
} UNumberFormatAttribute; } UNumberFormatAttribute;
/** /**
* Get a numeric attribute associated with a UNumberFormat. * Get a numeric attribute associated with a UNumberFormat.
* An example of a numeric attribute is the number of integer digits a forma tter will produce. * An example of a numeric attribute is the number of integer digits a forma tter will produce.
* @param fmt The formatter to query. * @param fmt The formatter to query.
* @param attr The attribute to query; one of UNUM_PARSE_INT_ONLY, UNUM_GROU PING_USED, * @param attr The attribute to query; one of UNUM_PARSE_INT_ONLY, UNUM_GROU PING_USED,
* UNUM_DECIMAL_ALWAYS_SHOWN, UNUM_MAX_INTEGER_DIGITS, UNUM_MIN_INTEGER_DIGI TS, UNUM_INTEGER_DIGITS, * UNUM_DECIMAL_ALWAYS_SHOWN, UNUM_MAX_INTEGER_DIGITS, UNUM_MIN_INTEGER_DIGI TS, UNUM_INTEGER_DIGITS,
* UNUM_MAX_FRACTION_DIGITS, UNUM_MIN_FRACTION_DIGITS, UNUM_FRACTION_DIGITS, UNUM_MULTIPLIER, * UNUM_MAX_FRACTION_DIGITS, UNUM_MIN_FRACTION_DIGITS, UNUM_FRACTION_DIGITS, UNUM_MULTIPLIER,
* UNUM_GROUPING_SIZE, UNUM_ROUNDING_MODE, UNUM_FORMAT_WIDTH, UNUM_PADDING_P OSITION, UNUM_SECONDARY_GROUPING_SIZE. * UNUM_GROUPING_SIZE, UNUM_ROUNDING_MODE, UNUM_FORMAT_WIDTH, UNUM_PADDING_P OSITION, UNUM_SECONDARY_GROUPING_SIZE.
 End of changes. 2 change blocks. 
0 lines changed or deleted 23 lines changed or added


 uvernum.h   uvernum.h 
skipping to change at line 63 skipping to change at line 63
/** The current ICU minor version as an integer. /** The current ICU minor version as an integer.
* This value will change in the subsequent releases of ICU * This value will change in the subsequent releases of ICU
* @stable ICU 2.6 * @stable ICU 2.6
*/ */
#define U_ICU_VERSION_MINOR_NUM 1 #define U_ICU_VERSION_MINOR_NUM 1
/** The current ICU patchlevel version as an integer. /** The current ICU patchlevel version as an integer.
* This value will change in the subsequent releases of ICU * This value will change in the subsequent releases of ICU
* @stable ICU 2.4 * @stable ICU 2.4
*/ */
#define U_ICU_VERSION_PATCHLEVEL_NUM 1 #define U_ICU_VERSION_PATCHLEVEL_NUM 2
/** The current ICU build level version as an integer. /** The current ICU build level version as an integer.
* This value is for use by ICU clients. It defaults to 0. * This value is for use by ICU clients. It defaults to 0.
* @stable ICU 4.0 * @stable ICU 4.0
*/ */
#ifndef U_ICU_VERSION_BUILDLEVEL_NUM #ifndef U_ICU_VERSION_BUILDLEVEL_NUM
#define U_ICU_VERSION_BUILDLEVEL_NUM 0 #define U_ICU_VERSION_BUILDLEVEL_NUM 0
#endif #endif
/** Glued version suffix for renamers /** Glued version suffix for renamers
skipping to change at line 112 skipping to change at line 112
#define U_DEF2_ICU_ENTRY_POINT_RENAME(x,y) U_DEF_ICU_ENTRY_POINT_RENAME(x,y ) #define U_DEF2_ICU_ENTRY_POINT_RENAME(x,y) U_DEF_ICU_ENTRY_POINT_RENAME(x,y )
#define U_ICU_ENTRY_POINT_RENAME(x) U_DEF2_ICU_ENTRY_POINT_RENAME(x,U_IC U_VERSION_SUFFIX) #define U_ICU_ENTRY_POINT_RENAME(x) U_DEF2_ICU_ENTRY_POINT_RENAME(x,U_IC U_VERSION_SUFFIX)
#endif #endif
#endif #endif
/** The current ICU library version as a dotted-decimal string. The patchle vel /** The current ICU library version as a dotted-decimal string. The patchle vel
* only appears in this string if it non-zero. * only appears in this string if it non-zero.
* This value will change in the subsequent releases of ICU * This value will change in the subsequent releases of ICU
* @stable ICU 2.4 * @stable ICU 2.4
*/ */
#define U_ICU_VERSION "49.1.1" #define U_ICU_VERSION "49.1.2"
/** The current ICU library major/minor version as a string without dots, f or library name suffixes. /** The current ICU library major/minor version as a string without dots, f or library name suffixes.
* This value will change in the subsequent releases of ICU * This value will change in the subsequent releases of ICU
* @stable ICU 2.6 * @stable ICU 2.6
*/ */
#define U_ICU_VERSION_SHORT "49" #define U_ICU_VERSION_SHORT "49"
#ifndef U_HIDE_INTERNAL_API #ifndef U_HIDE_INTERNAL_API
/** Data version in ICU4C. /** Data version in ICU4C.
* @internal ICU 4.4 Internal Use Only * @internal ICU 4.4 Internal Use Only
**/ **/
#define U_ICU_DATA_VERSION "49.1.1" #define U_ICU_DATA_VERSION "49.1.2"
#endif /* U_HIDE_INTERNAL_API */ #endif /* U_HIDE_INTERNAL_API */
/*========================================================================= == /*========================================================================= ==
* ICU collation framework version information * ICU collation framework version information
* Version info that can be obtained from a collator is affected by these * Version info that can be obtained from a collator is affected by these
* numbers in a secret and magic way. Please use collator version as whole * numbers in a secret and magic way. Please use collator version as whole
*========================================================================= == *========================================================================= ==
*/ */
/** /**
 End of changes. 3 change blocks. 
3 lines changed or deleted 3 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/