| OLD | NEW |
| 1 /* | 1 /* |
| 2 ******************************************************************************* | 2 ******************************************************************************* |
| 3 * Copyright (C) 2008-2013, Google, International Business Machines Corporation | 3 * Copyright (C) 2008-2014, Google, International Business Machines Corporation |
| 4 * and others. All Rights Reserved. | 4 * and others. All Rights Reserved. |
| 5 ******************************************************************************* | 5 ******************************************************************************* |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #ifndef __TMUTFMT_H__ | 8 #ifndef __TMUTFMT_H__ |
| 9 #define __TMUTFMT_H__ | 9 #define __TMUTFMT_H__ |
| 10 | 10 |
| 11 #include "unicode/utypes.h" | 11 #include "unicode/utypes.h" |
| 12 | 12 |
| 13 /** | 13 /** |
| 14 * \file | 14 * \file |
| 15 * \brief C++ API: Format and parse duration in single time unit | 15 * \brief C++ API: Format and parse duration in single time unit |
| 16 */ | 16 */ |
| 17 | 17 |
| 18 | 18 |
| 19 #if !UCONFIG_NO_FORMATTING | 19 #if !UCONFIG_NO_FORMATTING |
| 20 #ifndef U_HIDE_DEPRECATED_API |
| 20 | 21 |
| 21 #include "unicode/unistr.h" | 22 #include "unicode/unistr.h" |
| 22 #include "unicode/tmunit.h" | 23 #include "unicode/tmunit.h" |
| 23 #include "unicode/tmutamt.h" | 24 #include "unicode/tmutamt.h" |
| 24 #include "unicode/measfmt.h" | 25 #include "unicode/measfmt.h" |
| 25 #include "unicode/numfmt.h" | 26 #include "unicode/numfmt.h" |
| 26 #include "unicode/plurrule.h" | 27 #include "unicode/plurrule.h" |
| 27 | 28 |
| 29 |
| 28 /** | 30 /** |
| 29 * Constants for various styles. | 31 * Constants for various styles. |
| 30 * There are 2 styles: full name and abbreviated name. | 32 * There are 2 styles: full name and abbreviated name. |
| 31 * For example, for English, the full name for hour duration is "3 hours", | 33 * For example, for English, the full name for hour duration is "3 hours", |
| 32 * and the abbreviated name is "3 hrs". | 34 * and the abbreviated name is "3 hrs". |
| 33 * @stable ICU 4.8 | 35 * @deprecated ICU 53 Use MeasureFormat and UMeasureFormatWidth instead. |
| 34 */ | 36 */ |
| 35 enum UTimeUnitFormatStyle { | 37 enum UTimeUnitFormatStyle { |
| 36 /** @stable ICU 4.8 */ | 38 /** @deprecated ICU 53 */ |
| 37 UTMUTFMT_FULL_STYLE, | 39 UTMUTFMT_FULL_STYLE, |
| 38 /** @stable ICU 4.8 */ | 40 /** @deprecated ICU 53 */ |
| 39 UTMUTFMT_ABBREVIATED_STYLE, | 41 UTMUTFMT_ABBREVIATED_STYLE, |
| 40 /** @stable ICU 4.8 */ | 42 /** @deprecated ICU 53 */ |
| 41 UTMUTFMT_FORMAT_STYLE_COUNT | 43 UTMUTFMT_FORMAT_STYLE_COUNT |
| 42 }; | 44 }; |
| 43 typedef enum UTimeUnitFormatStyle UTimeUnitFormatStyle; /**< @stable ICU 4.8 */ | 45 typedef enum UTimeUnitFormatStyle UTimeUnitFormatStyle; /**< @deprecated ICU 53
*/ |
| 46 |
| 44 | 47 |
| 45 U_NAMESPACE_BEGIN | 48 U_NAMESPACE_BEGIN |
| 46 | 49 |
| 47 class Hashtable; | 50 class Hashtable; |
| 48 class UVector; | 51 class UVector; |
| 49 | 52 |
| 50 /** | 53 /** |
| 51 * Format or parse a TimeUnitAmount, using plural rules for the units where avai
lable. | 54 * Format or parse a TimeUnitAmount, using plural rules for the units where avai
lable. |
| 52 * | 55 * |
| 53 * <P> | 56 * <P> |
| (...skipping 14 matching lines...) Expand all Loading... |
| 68 * ((Format*)format)->parseObject(formatted, result, status); | 71 * ((Format*)format)->parseObject(formatted, result, status); |
| 69 * if (U_SUCCESS(status)) { | 72 * if (U_SUCCESS(status)) { |
| 70 * assert (result == formattable); | 73 * assert (result == formattable); |
| 71 * } | 74 * } |
| 72 * } | 75 * } |
| 73 * </pre> | 76 * </pre> |
| 74 * | 77 * |
| 75 * <P> | 78 * <P> |
| 76 * @see TimeUnitAmount | 79 * @see TimeUnitAmount |
| 77 * @see TimeUnitFormat | 80 * @see TimeUnitFormat |
| 78 * @stable ICU 4.2 | 81 * @deprecated ICU 53 Use the MeasureFormat class instead. |
| 79 */ | 82 */ |
| 80 class U_I18N_API TimeUnitFormat: public MeasureFormat { | 83 class U_I18N_API TimeUnitFormat: public MeasureFormat { |
| 81 public: | 84 public: |
| 82 | 85 |
| 83 /** | 86 /** |
| 84 * Create TimeUnitFormat with default locale, and full name style. | 87 * Create TimeUnitFormat with default locale, and full name style. |
| 85 * Use setLocale and/or setFormat to modify. | 88 * Use setLocale and/or setFormat to modify. |
| 86 * @stable ICU 4.2 | 89 * @deprecated ICU 53 |
| 87 */ | 90 */ |
| 88 TimeUnitFormat(UErrorCode& status); | 91 TimeUnitFormat(UErrorCode& status); |
| 89 | 92 |
| 90 /** | 93 /** |
| 91 * Create TimeUnitFormat given locale, and full name style. | 94 * Create TimeUnitFormat given locale, and full name style. |
| 92 * @stable ICU 4.2 | 95 * @deprecated ICU 53 |
| 93 */ | 96 */ |
| 94 TimeUnitFormat(const Locale& locale, UErrorCode& status); | 97 TimeUnitFormat(const Locale& locale, UErrorCode& status); |
| 95 | 98 |
| 96 /** | 99 /** |
| 97 * Create TimeUnitFormat given locale and style. | 100 * Create TimeUnitFormat given locale and style. |
| 98 * @stable ICU 4.8 | 101 * @deprecated ICU 53 |
| 99 */ | 102 */ |
| 100 TimeUnitFormat(const Locale& locale, UTimeUnitFormatStyle style, UErrorCode&
status); | 103 TimeUnitFormat(const Locale& locale, UTimeUnitFormatStyle style, UErrorCode&
status); |
| 101 | 104 |
| 102 /** | 105 /** |
| 103 * Copy constructor. | 106 * Copy constructor. |
| 104 * @stable ICU 4.2 | 107 * @deprecated ICU 53 |
| 105 */ | 108 */ |
| 106 TimeUnitFormat(const TimeUnitFormat&); | 109 TimeUnitFormat(const TimeUnitFormat&); |
| 107 | 110 |
| 108 /** | 111 /** |
| 109 * deconstructor | 112 * deconstructor |
| 110 * @stable ICU 4.2 | 113 * @deprecated ICU 53 |
| 111 */ | 114 */ |
| 112 virtual ~TimeUnitFormat(); | 115 virtual ~TimeUnitFormat(); |
| 113 | 116 |
| 114 /** | 117 /** |
| 115 * Clone this Format object polymorphically. The caller owns the result and | 118 * Clone this Format object polymorphically. The caller owns the result and |
| 116 * should delete it when done. | 119 * should delete it when done. |
| 117 * @return A copy of the object. | 120 * @return A copy of the object. |
| 118 * @stable ICU 4.2 | 121 * @deprecated ICU 53 |
| 119 */ | 122 */ |
| 120 virtual Format* clone(void) const; | 123 virtual Format* clone(void) const; |
| 121 | 124 |
| 122 /** | 125 /** |
| 123 * Assignment operator | 126 * Assignment operator |
| 124 * @stable ICU 4.2 | 127 * @deprecated ICU 53 |
| 125 */ | 128 */ |
| 126 TimeUnitFormat& operator=(const TimeUnitFormat& other); | 129 TimeUnitFormat& operator=(const TimeUnitFormat& other); |
| 127 | 130 |
| 128 | |
| 129 /** | |
| 130 * Return true if the given Format objects are semantically equal. Objects | |
| 131 * of different subclasses are considered unequal. | |
| 132 * @param other the object to be compared with. | |
| 133 * @return true if the given Format objects are semantically equal. | |
| 134 * @stable ICU 4.2 | |
| 135 */ | |
| 136 virtual UBool operator==(const Format& other) const; | |
| 137 | |
| 138 /** | 131 /** |
| 139 * Return true if the given Format objects are not semantically equal. | 132 * Return true if the given Format objects are not semantically equal. |
| 140 * Objects of different subclasses are considered unequal. | 133 * Objects of different subclasses are considered unequal. |
| 141 * @param other the object to be compared with. | 134 * @param other the object to be compared with. |
| 142 * @return true if the given Format objects are not semantically equal. | 135 * @return true if the given Format objects are not semantically equal. |
| 143 * @stable ICU 4.2 | 136 * @deprecated ICU 53 |
| 144 */ | 137 */ |
| 145 UBool operator!=(const Format& other) const; | 138 UBool operator!=(const Format& other) const; |
| 146 | 139 |
| 147 /** | 140 /** |
| 148 * Set the locale used for formatting or parsing. | 141 * Set the locale used for formatting or parsing. |
| 149 * @param locale the locale to be set | 142 * @param locale the locale to be set |
| 150 * @param status output param set to success/failure code on exit | 143 * @param status output param set to success/failure code on exit |
| 151 * @stable ICU 4.2 | 144 * @deprecated ICU 53 |
| 152 */ | 145 */ |
| 153 void setLocale(const Locale& locale, UErrorCode& status); | 146 void setLocale(const Locale& locale, UErrorCode& status); |
| 154 | 147 |
| 155 | 148 |
| 156 /** | 149 /** |
| 157 * Set the number format used for formatting or parsing. | 150 * Set the number format used for formatting or parsing. |
| 158 * @param format the number formatter to be set | 151 * @param format the number formatter to be set |
| 159 * @param status output param set to success/failure code on exit | 152 * @param status output param set to success/failure code on exit |
| 160 * @stable ICU 4.2 | 153 * @deprecated ICU 53 |
| 161 */ | 154 */ |
| 162 void setNumberFormat(const NumberFormat& format, UErrorCode& status); | 155 void setNumberFormat(const NumberFormat& format, UErrorCode& status); |
| 163 | 156 |
| 164 | |
| 165 using MeasureFormat::format; | |
| 166 | |
| 167 /** | |
| 168 * Format a TimeUnitAmount. | |
| 169 * If the formattable object is not a time unit amount object, | |
| 170 * or the number in time unit amount is not a double type or long type | |
| 171 * numeric, it returns a failing status: U_ILLEGAL_ARGUMENT_ERROR. | |
| 172 * @see Format#format(const Formattable&, UnicodeString&, FieldPosition&, U
ErrorCode&) const | |
| 173 * @stable ICU 4.2 | |
| 174 */ | |
| 175 virtual UnicodeString& format(const Formattable& obj, | |
| 176 UnicodeString& toAppendTo, | |
| 177 FieldPosition& pos, | |
| 178 UErrorCode& status) const; | |
| 179 | |
| 180 /** | 157 /** |
| 181 * Parse a TimeUnitAmount. | 158 * Parse a TimeUnitAmount. |
| 182 * @see Format#parseObject(const UnicodeString&, Formattable&, ParsePosition
&) const; | 159 * @see Format#parseObject(const UnicodeString&, Formattable&, ParsePosition
&) const; |
| 183 * @stable ICU 4.2 | 160 * @deprecated ICU 53 |
| 184 */ | 161 */ |
| 185 virtual void parseObject(const UnicodeString& source, | 162 virtual void parseObject(const UnicodeString& source, |
| 186 Formattable& result, | 163 Formattable& result, |
| 187 ParsePosition& pos) const; | 164 ParsePosition& pos) const; |
| 188 | 165 |
| 189 /** | 166 /** |
| 190 * Return the class ID for this class. This is useful only for comparing to | 167 * Return the class ID for this class. This is useful only for comparing to |
| 191 * a return value from getDynamicClassID(). For example: | 168 * a return value from getDynamicClassID(). For example: |
| 192 * <pre> | 169 * <pre> |
| 193 * . Base* polymorphic_pointer = createPolymorphicObject(); | 170 * . Base* polymorphic_pointer = createPolymorphicObject(); |
| 194 * . if (polymorphic_pointer->getDynamicClassID() == | 171 * . if (polymorphic_pointer->getDynamicClassID() == |
| 195 * . erived::getStaticClassID()) ... | 172 * . erived::getStaticClassID()) ... |
| 196 * </pre> | 173 * </pre> |
| 197 * @return The class ID for all objects of this class. | 174 * @return The class ID for all objects of this class. |
| 198 * @stable ICU 4.2 | 175 * @deprecated ICU 53 |
| 199 */ | 176 */ |
| 200 static UClassID U_EXPORT2 getStaticClassID(void); | 177 static UClassID U_EXPORT2 getStaticClassID(void); |
| 201 | 178 |
| 202 /** | 179 /** |
| 203 * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This | 180 * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This |
| 204 * method is to implement a simple version of RTTI, since not all C++ | 181 * method is to implement a simple version of RTTI, since not all C++ |
| 205 * compilers support genuine RTTI. Polymorphic operator==() and clone() | 182 * compilers support genuine RTTI. Polymorphic operator==() and clone() |
| 206 * methods call this method. | 183 * methods call this method. |
| 207 * | 184 * |
| 208 * @return The class ID for this object. All objects of a | 185 * @return The class ID for this object. All objects of a |
| 209 * given class have the same class ID. Objects of | 186 * given class have the same class ID. Objects of |
| 210 * other classes have different class IDs. | 187 * other classes have different class IDs. |
| 211 * @stable ICU 4.2 | 188 * @deprecated ICU 53 |
| 212 */ | 189 */ |
| 213 virtual UClassID getDynamicClassID(void) const; | 190 virtual UClassID getDynamicClassID(void) const; |
| 214 | 191 |
| 215 private: | 192 private: |
| 216 NumberFormat* fNumberFormat; | |
| 217 Locale fLocale; | |
| 218 Hashtable* fTimeUnitToCountToPatterns[TimeUnit::UTIMEUNIT_FIELD_COUNT]; | 193 Hashtable* fTimeUnitToCountToPatterns[TimeUnit::UTIMEUNIT_FIELD_COUNT]; |
| 219 PluralRules* fPluralRules; | |
| 220 UTimeUnitFormatStyle fStyle; | 194 UTimeUnitFormatStyle fStyle; |
| 221 | 195 |
| 222 void create(const Locale& locale, UTimeUnitFormatStyle style, UErrorCode& st
atus); | 196 void create(UTimeUnitFormatStyle style, UErrorCode& status); |
| 223 | 197 |
| 224 // it might actually be simpler to make them Decimal Formats later. | 198 // it might actually be simpler to make them Decimal Formats later. |
| 225 // initialize all private data members | 199 // initialize all private data members |
| 226 void setup(UErrorCode& status); | 200 void setup(UErrorCode& status); |
| 227 | 201 |
| 228 // initialize data member without fill in data for fTimeUnitToCountToPattern | 202 // initialize data member without fill in data for fTimeUnitToCountToPattern |
| 229 void initDataMembers(UErrorCode& status); | 203 void initDataMembers(UErrorCode& status); |
| 230 | 204 |
| 231 // initialize fTimeUnitToCountToPatterns from current locale's resource. | 205 // initialize fTimeUnitToCountToPatterns from current locale's resource. |
| 232 void readFromCurrentLocale(UTimeUnitFormatStyle style, const char* key, cons
t UVector& pluralCounts, | 206 void readFromCurrentLocale(UTimeUnitFormatStyle style, const char* key, cons
t UVector& pluralCounts, |
| (...skipping 15 matching lines...) Expand all Loading... |
| 248 void deleteHash(Hashtable* htable); | 222 void deleteHash(Hashtable* htable); |
| 249 | 223 |
| 250 // copy hash table | 224 // copy hash table |
| 251 void copyHash(const Hashtable* source, Hashtable* target, UErrorCode& status
); | 225 void copyHash(const Hashtable* source, Hashtable* target, UErrorCode& status
); |
| 252 // get time unit name, such as "year", from time unit field enum, such as | 226 // get time unit name, such as "year", from time unit field enum, such as |
| 253 // UTIMEUNIT_YEAR. | 227 // UTIMEUNIT_YEAR. |
| 254 static const char* getTimeUnitName(TimeUnit::UTimeUnitFields field, UErrorCo
de& status); | 228 static const char* getTimeUnitName(TimeUnit::UTimeUnitFields field, UErrorCo
de& status); |
| 255 | 229 |
| 256 }; | 230 }; |
| 257 | 231 |
| 258 | |
| 259 | |
| 260 inline UBool | 232 inline UBool |
| 261 TimeUnitFormat::operator!=(const Format& other) const { | 233 TimeUnitFormat::operator!=(const Format& other) const { |
| 262 return !operator==(other); | 234 return !operator==(other); |
| 263 } | 235 } |
| 264 | 236 |
| 265 | |
| 266 | |
| 267 U_NAMESPACE_END | 237 U_NAMESPACE_END |
| 268 | 238 |
| 239 #endif /* U_HIDE_DEPRECATED_API */ |
| 269 #endif /* #if !UCONFIG_NO_FORMATTING */ | 240 #endif /* #if !UCONFIG_NO_FORMATTING */ |
| 270 | 241 |
| 271 #endif // __TMUTFMT_H__ | 242 #endif // __TMUTFMT_H__ |
| 272 //eof | 243 //eof |
| OLD | NEW |