OLD | NEW |
1 /* | 1 /* |
2 ****************************************************************************** | 2 ****************************************************************************** |
3 * Copyright (C) 2014, International Business Machines | 3 * Copyright (C) 2014-2015, International Business Machines |
4 * Corporation and others. All Rights Reserved. | 4 * Corporation and others. All Rights Reserved. |
5 ****************************************************************************** | 5 ****************************************************************************** |
6 * quantityformatter.h | 6 * quantityformatter.h |
7 */ | 7 */ |
8 | 8 |
9 #ifndef __QUANTITY_FORMATTER_H__ | 9 #ifndef __QUANTITY_FORMATTER_H__ |
10 #define __QUANTITY_FORMATTER_H__ | 10 #define __QUANTITY_FORMATTER_H__ |
11 | 11 |
12 #include "unicode/utypes.h" | 12 #include "unicode/utypes.h" |
13 #include "unicode/uobject.h" | 13 #include "unicode/uobject.h" |
14 | 14 |
15 #if !UCONFIG_NO_FORMATTING | 15 #if !UCONFIG_NO_FORMATTING |
16 | 16 |
| 17 #include "standardplural.h" |
| 18 |
17 U_NAMESPACE_BEGIN | 19 U_NAMESPACE_BEGIN |
18 | 20 |
19 class SimplePatternFormatter; | 21 class SimplePatternFormatter; |
20 class UnicodeString; | 22 class UnicodeString; |
21 class PluralRules; | 23 class PluralRules; |
22 class NumberFormat; | 24 class NumberFormat; |
23 class Formattable; | 25 class Formattable; |
24 class FieldPosition; | 26 class FieldPosition; |
25 | 27 |
26 /** | 28 /** |
(...skipping 30 matching lines...) Expand all Loading... |
57 * Destructor. | 59 * Destructor. |
58 */ | 60 */ |
59 ~QuantityFormatter(); | 61 ~QuantityFormatter(); |
60 | 62 |
61 /** | 63 /** |
62 * Removes all variants from this object including the "other" variant. | 64 * Removes all variants from this object including the "other" variant. |
63 */ | 65 */ |
64 void reset(); | 66 void reset(); |
65 | 67 |
66 /** | 68 /** |
67 * Adds a plural variant. | 69 * Adds a plural variant if there is none yet for the plural form. |
68 * | 70 * |
69 * @param variant "zero", "one", "two", "few", "many", "other" | 71 * @param variant "zero", "one", "two", "few", "many", "other" |
70 * @param rawPattern the pattern for the variant e.g "{0} meters" | 72 * @param rawPattern the pattern for the variant e.g "{0} meters" |
71 * @param status any error returned here. | 73 * @param status any error returned here. |
72 * @return TRUE on success; FALSE if status was set to a non zero error. | 74 * @return TRUE on success; FALSE if status was set to a non zero error. |
73 */ | 75 */ |
74 UBool add( | 76 UBool addIfAbsent(const char *variant, const UnicodeString &rawPattern, UErr
orCode &status); |
75 const char *variant, | |
76 const UnicodeString &rawPattern, | |
77 UErrorCode &status); | |
78 | 77 |
79 /** | 78 /** |
80 * returns TRUE if this object has at least the "other" variant. | 79 * returns TRUE if this object has at least the "other" variant. |
81 */ | 80 */ |
82 UBool isValid() const; | 81 UBool isValid() const; |
83 | 82 |
84 /** | 83 /** |
85 * Gets the pattern formatter that would be used for a particular variant. | 84 * Gets the pattern formatter that would be used for a particular variant. |
86 * If isValid() returns TRUE, this method is guaranteed to return a | 85 * If isValid() returns TRUE, this method is guaranteed to return a |
87 * non-NULL value. | 86 * non-NULL value. |
88 */ | 87 */ |
89 const SimplePatternFormatter *getByVariant(const char *variant) const; | 88 const SimplePatternFormatter *getByVariant(const char *variant) const; |
90 | 89 |
91 /** | 90 /** |
92 * Formats a quantity with this object appending the result to appendTo. | 91 * Formats a number with this object appending the result to appendTo. |
93 * At least the "other" variant must be added to this object for this | 92 * At least the "other" variant must be added to this object for this |
94 * method to work. | 93 * method to work. |
95 * | 94 * |
96 * @param quantity the single quantity. | 95 * @param number the single number. |
97 * @param fmt formats the quantity | 96 * @param fmt formats the number |
98 * @param rules computes the plural variant to use. | 97 * @param rules computes the plural variant to use. |
99 * @param appendTo result appended here. | 98 * @param appendTo result appended here. |
100 * @param status any error returned here. | 99 * @param status any error returned here. |
101 * @return appendTo | 100 * @return appendTo |
102 */ | 101 */ |
103 UnicodeString &format( | 102 UnicodeString &format( |
104 const Formattable &quantity, | 103 const Formattable &number, |
105 const NumberFormat &fmt, | 104 const NumberFormat &fmt, |
106 const PluralRules &rules, | 105 const PluralRules &rules, |
107 UnicodeString &appendTo, | 106 UnicodeString &appendTo, |
108 FieldPosition &pos, | 107 FieldPosition &pos, |
109 UErrorCode &status) const; | 108 UErrorCode &status) const; |
110 | 109 |
| 110 /** |
| 111 * Selects the standard plural form for the number/formatter/rules. |
| 112 */ |
| 113 static StandardPlural::Form selectPlural( |
| 114 const Formattable &number, |
| 115 const NumberFormat &fmt, |
| 116 const PluralRules &rules, |
| 117 UnicodeString &formattedNumber, |
| 118 FieldPosition &pos, |
| 119 UErrorCode &status); |
| 120 |
| 121 /** |
| 122 * Formats the pattern with the value and adjusts the FieldPosition. |
| 123 */ |
| 124 static UnicodeString &format( |
| 125 const SimplePatternFormatter &pattern, |
| 126 const UnicodeString &value, |
| 127 UnicodeString &appendTo, |
| 128 FieldPosition &pos, |
| 129 UErrorCode &status); |
| 130 |
111 private: | 131 private: |
112 SimplePatternFormatter *formatters[6]; | 132 SimplePatternFormatter *formatters[StandardPlural::COUNT]; |
113 }; | 133 }; |
114 | 134 |
115 U_NAMESPACE_END | 135 U_NAMESPACE_END |
116 | 136 |
117 #endif | 137 #endif |
118 | 138 |
119 #endif | 139 #endif |
OLD | NEW |