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 |