| OLD | NEW |
| 1 /* | 1 /* |
| 2 ******************************************************************************** | 2 ******************************************************************************** |
| 3 * Copyright (C) 2012-2013, International Business Machines | 3 * Copyright (C) 2012-2014, International Business Machines |
| 4 * Corporation and others. All Rights Reserved. | 4 * Corporation and others. All Rights Reserved. |
| 5 ******************************************************************************** | 5 ******************************************************************************** |
| 6 * | 6 * |
| 7 * File COMPACTDECIMALFORMAT.H | 7 * File COMPACTDECIMALFORMAT.H |
| 8 ******************************************************************************** | 8 ******************************************************************************** |
| 9 */ | 9 */ |
| 10 | 10 |
| 11 #ifndef __COMPACT_DECIMAL_FORMAT_H__ | 11 #ifndef __COMPACT_DECIMAL_FORMAT_H__ |
| 12 #define __COMPACT_DECIMAL_FORMAT_H__ | 12 #define __COMPACT_DECIMAL_FORMAT_H__ |
| 13 | 13 |
| 14 #include "unicode/utypes.h" | 14 #include "unicode/utypes.h" |
| 15 /** | 15 /** |
| 16 * \file | 16 * \file |
| 17 * \brief C++ API: Formats decimal numbers in compact form. | 17 * \brief C++ API: Formats decimal numbers in compact form. |
| 18 */ | 18 */ |
| 19 | 19 |
| 20 #if !UCONFIG_NO_FORMATTING | 20 #if !UCONFIG_NO_FORMATTING |
| 21 #ifndef U_HIDE_DRAFT_API | |
| 22 | 21 |
| 23 #include "unicode/decimfmt.h" | 22 #include "unicode/decimfmt.h" |
| 24 | 23 |
| 25 struct UHashtable; | 24 struct UHashtable; |
| 26 | 25 |
| 27 U_NAMESPACE_BEGIN | 26 U_NAMESPACE_BEGIN |
| 28 | 27 |
| 29 class PluralRules; | 28 class PluralRules; |
| 30 | 29 |
| 31 /** | 30 /** |
| 32 * The CompactDecimalFormat produces abbreviated numbers, suitable for display i
n | 31 * The CompactDecimalFormat produces abbreviated numbers, suitable for display i
n |
| 33 * environments will limited real estate. For example, 'Hits: 1.2B' instead of | 32 * environments will limited real estate. For example, 'Hits: 1.2B' instead of |
| 34 * 'Hits: 1,200,000,000'. The format will be appropriate for the given language, | 33 * 'Hits: 1,200,000,000'. The format will be appropriate for the given language, |
| 35 * such as "1,2 Mrd." for German. | 34 * such as "1,2 Mrd." for German. |
| 36 * <p> | 35 * <p> |
| 37 * For numbers under 1000 trillion (under 10^15, such as 123,456,789,012,345), | 36 * For numbers under 1000 trillion (under 10^15, such as 123,456,789,012,345), |
| 38 * the result will be short for supported languages. However, the result may | 37 * the result will be short for supported languages. However, the result may |
| 39 * sometimes exceed 7 characters, such as when there are combining marks or thin | 38 * sometimes exceed 7 characters, such as when there are combining marks or thin |
| 40 * characters. In such cases, the visual width in fonts should still be short. | 39 * characters. In such cases, the visual width in fonts should still be short. |
| 41 * <p> | 40 * <p> |
| 42 * By default, there are 3 significant digits. After creation, if more than | 41 * By default, there are 3 significant digits. After creation, if more than |
| 43 * three significant digits are set (with setMaximumSignificantDigits), or if a | 42 * three significant digits are set (with setMaximumSignificantDigits), or if a |
| 44 * fixed number of digits are set (with setMaximumIntegerDigits or | 43 * fixed number of digits are set (with setMaximumIntegerDigits or |
| 45 * setMaximumFractionDigits), then result may be wider. | 44 * setMaximumFractionDigits), then result may be wider. |
| 46 * <p> | 45 * <p> |
| 47 * At this time, parsing is not supported, and will produce a U_UNSUPPORTED_ERRO
R. | 46 * At this time, parsing is not supported, and will produce a U_UNSUPPORTED_ERRO
R. |
| 48 * Resetting the pattern prefixes or suffixes is not supported; the method calls | 47 * Resetting the pattern prefixes or suffixes is not supported; the method calls |
| 49 * are ignored. | 48 * are ignored. |
| 50 * <p> | 49 * <p> |
| 51 * @draft ICU 51 | 50 * @stable ICU 51 |
| 52 */ | 51 */ |
| 53 class U_I18N_API CompactDecimalFormat : public DecimalFormat { | 52 class U_I18N_API CompactDecimalFormat : public DecimalFormat { |
| 54 public: | 53 public: |
| 55 | 54 |
| 56 /** | 55 /** |
| 57 * Returns a compact decimal instance for specified locale. | 56 * Returns a compact decimal instance for specified locale. |
| 58 * @param inLocale the given locale. | 57 * @param inLocale the given locale. |
| 59 * @param style whether to use short or long style. | 58 * @param style whether to use short or long style. |
| 60 * @param status error code returned here. | 59 * @param status error code returned here. |
| 61 * @draft ICU 51 | 60 * @stable ICU 51 |
| 62 */ | 61 */ |
| 63 static CompactDecimalFormat* U_EXPORT2 createInstance( | 62 static CompactDecimalFormat* U_EXPORT2 createInstance( |
| 64 const Locale& inLocale, UNumberCompactStyle style, UErrorCode& status)
; | 63 const Locale& inLocale, UNumberCompactStyle style, UErrorCode& status)
; |
| 65 | 64 |
| 66 /** | 65 /** |
| 67 * Copy constructor. | 66 * Copy constructor. |
| 68 * | 67 * |
| 69 * @param source the DecimalFormat object to be copied from. | 68 * @param source the DecimalFormat object to be copied from. |
| 70 * @draft ICU 51 | 69 * @stable ICU 51 |
| 71 */ | 70 */ |
| 72 CompactDecimalFormat(const CompactDecimalFormat& source); | 71 CompactDecimalFormat(const CompactDecimalFormat& source); |
| 73 | 72 |
| 74 /** | 73 /** |
| 75 * Destructor. | 74 * Destructor. |
| 76 * @draft ICU 51 | 75 * @stable ICU 51 |
| 77 */ | 76 */ |
| 78 virtual ~CompactDecimalFormat(); | 77 virtual ~CompactDecimalFormat(); |
| 79 | 78 |
| 80 /** | 79 /** |
| 81 * Assignment operator. | 80 * Assignment operator. |
| 82 * | 81 * |
| 83 * @param rhs the DecimalFormat object to be copied. | 82 * @param rhs the DecimalFormat object to be copied. |
| 84 * @draft ICU 51 | 83 * @stable ICU 51 |
| 85 */ | 84 */ |
| 86 CompactDecimalFormat& operator=(const CompactDecimalFormat& rhs); | 85 CompactDecimalFormat& operator=(const CompactDecimalFormat& rhs); |
| 87 | 86 |
| 88 /** | 87 /** |
| 89 * Clone this Format object polymorphically. The caller owns the | 88 * Clone this Format object polymorphically. The caller owns the |
| 90 * result and should delete it when done. | 89 * result and should delete it when done. |
| 91 * | 90 * |
| 92 * @return a polymorphic copy of this CompactDecimalFormat. | 91 * @return a polymorphic copy of this CompactDecimalFormat. |
| 93 * @draft ICU 51 | 92 * @stable ICU 51 |
| 94 */ | 93 */ |
| 95 virtual Format* clone() const; | 94 virtual Format* clone() const; |
| 96 | 95 |
| 97 /** | 96 /** |
| 98 * Return TRUE if the given Format objects are semantically equal. | 97 * Return TRUE if the given Format objects are semantically equal. |
| 99 * Objects of different subclasses are considered unequal. | 98 * Objects of different subclasses are considered unequal. |
| 100 * | 99 * |
| 101 * @param other the object to be compared with. | 100 * @param other the object to be compared with. |
| 102 * @return TRUE if the given Format objects are semantically equal. | 101 * @return TRUE if the given Format objects are semantically equal. |
| 103 * @draft ICU 51 | 102 * @stable ICU 51 |
| 104 */ | 103 */ |
| 105 virtual UBool operator==(const Format& other) const; | 104 virtual UBool operator==(const Format& other) const; |
| 106 | 105 |
| 107 | 106 |
| 108 using DecimalFormat::format; | 107 using DecimalFormat::format; |
| 109 | 108 |
| 110 /** | 109 /** |
| 111 * Format a double or long number using base-10 representation. | 110 * Format a double or long number using base-10 representation. |
| 112 * | 111 * |
| 113 * @param number The value to be formatted. | 112 * @param number The value to be formatted. |
| 114 * @param appendTo Output parameter to receive result. | 113 * @param appendTo Output parameter to receive result. |
| 115 * Result is appended to existing contents. | 114 * Result is appended to existing contents. |
| 116 * @param pos On input: an alignment field, if desired. | 115 * @param pos On input: an alignment field, if desired. |
| 117 * On output: the offsets of the alignment field. | 116 * On output: the offsets of the alignment field. |
| 118 * @return Reference to 'appendTo' parameter. | 117 * @return Reference to 'appendTo' parameter. |
| 119 * @draft ICU 51 | 118 * @stable ICU 51 |
| 120 */ | 119 */ |
| 121 virtual UnicodeString& format(double number, | 120 virtual UnicodeString& format(double number, |
| 122 UnicodeString& appendTo, | 121 UnicodeString& appendTo, |
| 123 FieldPosition& pos) const; | 122 FieldPosition& pos) const; |
| 124 | 123 |
| 125 /** | 124 /** |
| 126 * Format a double or long number using base-10 representation. | 125 * Format a double or long number using base-10 representation. |
| 127 * Currently sets status to U_UNSUPPORTED_ERROR. | 126 * Currently sets status to U_UNSUPPORTED_ERROR. |
| 128 * | 127 * |
| 129 * @param number The value to be formatted. | 128 * @param number The value to be formatted. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 143 | 142 |
| 144 /** | 143 /** |
| 145 * Format an int64 number using base-10 representation. | 144 * Format an int64 number using base-10 representation. |
| 146 * | 145 * |
| 147 * @param number The value to be formatted. | 146 * @param number The value to be formatted. |
| 148 * @param appendTo Output parameter to receive result. | 147 * @param appendTo Output parameter to receive result. |
| 149 * Result is appended to existing contents. | 148 * Result is appended to existing contents. |
| 150 * @param pos On input: an alignment field, if desired. | 149 * @param pos On input: an alignment field, if desired. |
| 151 * On output: the offsets of the alignment field. | 150 * On output: the offsets of the alignment field. |
| 152 * @return Reference to 'appendTo' parameter. | 151 * @return Reference to 'appendTo' parameter. |
| 153 * @draft ICU 51 | 152 * @stable ICU 51 |
| 154 */ | 153 */ |
| 155 virtual UnicodeString& format(int64_t number, | 154 virtual UnicodeString& format(int64_t number, |
| 156 UnicodeString& appendTo, | 155 UnicodeString& appendTo, |
| 157 FieldPosition& pos) const; | 156 FieldPosition& pos) const; |
| 158 | 157 |
| 159 /** | 158 /** |
| 160 * Format an int64 number using base-10 representation. | 159 * Format an int64 number using base-10 representation. |
| 161 * Currently sets status to U_UNSUPPORTED_ERROR | 160 * Currently sets status to U_UNSUPPORTED_ERROR |
| 162 * | 161 * |
| 163 * @param number The value to be formatted. | 162 * @param number The value to be formatted. |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 FieldPosition& pos, | 235 FieldPosition& pos, |
| 237 UErrorCode& status) const; | 236 UErrorCode& status) const; |
| 238 | 237 |
| 239 /** | 238 /** |
| 240 * CompactDecimalFormat does not support parsing. This implementation | 239 * CompactDecimalFormat does not support parsing. This implementation |
| 241 * does nothing. | 240 * does nothing. |
| 242 * @param text Unused. | 241 * @param text Unused. |
| 243 * @param result Does not change. | 242 * @param result Does not change. |
| 244 * @param parsePosition Does not change. | 243 * @param parsePosition Does not change. |
| 245 * @see Formattable | 244 * @see Formattable |
| 246 * @draft ICU 51 | 245 * @stable ICU 51 |
| 247 */ | 246 */ |
| 248 virtual void parse(const UnicodeString& text, | 247 virtual void parse(const UnicodeString& text, |
| 249 Formattable& result, | 248 Formattable& result, |
| 250 ParsePosition& parsePosition) const; | 249 ParsePosition& parsePosition) const; |
| 251 | 250 |
| 252 /** | 251 /** |
| 253 * CompactDecimalFormat does not support parsing. This implementation | 252 * CompactDecimalFormat does not support parsing. This implementation |
| 254 * sets status to U_UNSUPPORTED_ERROR | 253 * sets status to U_UNSUPPORTED_ERROR |
| 255 * | 254 * |
| 256 * @param text Unused. | 255 * @param text Unused. |
| 257 * @param result Does not change. | 256 * @param result Does not change. |
| 258 * @param status Always set to U_UNSUPPORTED_ERROR. | 257 * @param status Always set to U_UNSUPPORTED_ERROR. |
| 259 * @draft ICU 51 | 258 * @stable ICU 51 |
| 260 */ | 259 */ |
| 261 virtual void parse(const UnicodeString& text, | 260 virtual void parse(const UnicodeString& text, |
| 262 Formattable& result, | 261 Formattable& result, |
| 263 UErrorCode& status) const; | 262 UErrorCode& status) const; |
| 264 | 263 |
| 265 /* Cannot use #ifndef U_HIDE_INTERNAL_API for the following draft method since i
t is virtual */ | |
| 266 /** | 264 /** |
| 267 * Parses text from the given string as a currency amount. Unlike | 265 * Parses text from the given string as a currency amount. Unlike |
| 268 * the parse() method, this method will attempt to parse a generic | 266 * the parse() method, this method will attempt to parse a generic |
| 269 * currency name, searching for a match of this object's locale's | 267 * currency name, searching for a match of this object's locale's |
| 270 * currency display names, or for a 3-letter ISO currency code. | 268 * currency display names, or for a 3-letter ISO currency code. |
| 271 * This method will fail if this format is not a currency format, | 269 * This method will fail if this format is not a currency format, |
| 272 * that is, if it does not contain the currency pattern symbol | 270 * that is, if it does not contain the currency pattern symbol |
| 273 * (U+00A4) in its prefix or suffix. This implementation always returns | 271 * (U+00A4) in its prefix or suffix. This implementation always returns |
| 274 * NULL. | 272 * NULL. |
| 275 * | 273 * |
| (...skipping 12 matching lines...) Expand all Loading... |
| 288 | 286 |
| 289 /** | 287 /** |
| 290 * Return the class ID for this class. This is useful only for | 288 * Return the class ID for this class. This is useful only for |
| 291 * comparing to a return value from getDynamicClassID(). For example: | 289 * comparing to a return value from getDynamicClassID(). For example: |
| 292 * <pre> | 290 * <pre> |
| 293 * . Base* polymorphic_pointer = createPolymorphicObject(); | 291 * . Base* polymorphic_pointer = createPolymorphicObject(); |
| 294 * . if (polymorphic_pointer->getDynamicClassID() == | 292 * . if (polymorphic_pointer->getDynamicClassID() == |
| 295 * . Derived::getStaticClassID()) ... | 293 * . Derived::getStaticClassID()) ... |
| 296 * </pre> | 294 * </pre> |
| 297 * @return The class ID for all objects of this class. | 295 * @return The class ID for all objects of this class. |
| 298 * @draft ICU 51 | 296 * @stable ICU 51 |
| 299 */ | 297 */ |
| 300 static UClassID U_EXPORT2 getStaticClassID(); | 298 static UClassID U_EXPORT2 getStaticClassID(); |
| 301 | 299 |
| 302 /** | 300 /** |
| 303 * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. | 301 * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. |
| 304 * This method is to implement a simple version of RTTI, since not all | 302 * This method is to implement a simple version of RTTI, since not all |
| 305 * C++ compilers support genuine RTTI. Polymorphic operator==() and | 303 * C++ compilers support genuine RTTI. Polymorphic operator==() and |
| 306 * clone() methods call this method. | 304 * clone() methods call this method. |
| 307 * | 305 * |
| 308 * @return The class ID for this object. All objects of a | 306 * @return The class ID for this object. All objects of a |
| 309 * given class have the same class ID. Objects of | 307 * given class have the same class ID. Objects of |
| 310 * other classes have different class IDs. | 308 * other classes have different class IDs. |
| 311 * @draft ICU 51 | 309 * @stable ICU 51 |
| 312 */ | 310 */ |
| 313 virtual UClassID getDynamicClassID() const; | 311 virtual UClassID getDynamicClassID() const; |
| 314 | 312 |
| 315 private: | 313 private: |
| 316 | 314 |
| 317 const UHashtable* _unitsByVariant; | 315 const UHashtable* _unitsByVariant; |
| 318 const double* _divisors; | 316 const double* _divisors; |
| 319 PluralRules* _pluralRules; | 317 PluralRules* _pluralRules; |
| 320 | 318 |
| 321 // Default constructor not implemented. | 319 // Default constructor not implemented. |
| 322 CompactDecimalFormat(const DecimalFormat &, const UHashtable* unitsByVariant
, const double* divisors, PluralRules* pluralRules); | 320 CompactDecimalFormat(const DecimalFormat &, const UHashtable* unitsByVariant
, const double* divisors, PluralRules* pluralRules); |
| 323 | 321 |
| 324 UBool eqHelper(const CompactDecimalFormat& that) const; | 322 UBool eqHelper(const CompactDecimalFormat& that) const; |
| 325 }; | 323 }; |
| 326 | 324 |
| 327 U_NAMESPACE_END | 325 U_NAMESPACE_END |
| 328 | 326 |
| 329 #endif /* U_HIDE_DRAFT_API */ | |
| 330 #endif /* #if !UCONFIG_NO_FORMATTING */ | 327 #endif /* #if !UCONFIG_NO_FORMATTING */ |
| 331 | 328 |
| 332 #endif // __COMPACT_DECIMAL_FORMAT_H__ | 329 #endif // __COMPACT_DECIMAL_FORMAT_H__ |
| 333 //eof | 330 //eof |
| OLD | NEW |