|
1 /* |
|
2 ******************************************************************************* |
|
3 * Copyright (C) 2009-2010, Google, International Business Machines Corporation and * |
|
4 * others. All Rights Reserved. * |
|
5 ******************************************************************************* |
|
6 */ |
|
7 |
|
8 #ifndef __TMUTAMT_H__ |
|
9 #define __TMUTAMT_H__ |
|
10 |
|
11 |
|
12 /** |
|
13 * \file |
|
14 * \brief C++ API: time unit amount object. |
|
15 */ |
|
16 |
|
17 #include "unicode/measure.h" |
|
18 #include "unicode/tmunit.h" |
|
19 |
|
20 #if !UCONFIG_NO_FORMATTING |
|
21 |
|
22 U_NAMESPACE_BEGIN |
|
23 |
|
24 |
|
25 /** |
|
26 * Express a duration as a time unit and number. Patterned after Currency. |
|
27 * @see TimeUnitAmount |
|
28 * @see TimeUnitFormat |
|
29 * @stable ICU 4.2 |
|
30 */ |
|
31 class U_I18N_API TimeUnitAmount: public Measure { |
|
32 public: |
|
33 /** |
|
34 * Construct TimeUnitAmount object with the given number and the |
|
35 * given time unit. |
|
36 * @param number a numeric object; number.isNumeric() must be TRUE |
|
37 * @param timeUnitField the time unit field of a time unit |
|
38 * @param status the input-output error code. |
|
39 * If the number is not numeric or the timeUnitField |
|
40 * is not valid, |
|
41 * then this will be set to a failing value: |
|
42 * U_ILLEGAL_ARGUMENT_ERROR. |
|
43 * @stable ICU 4.2 |
|
44 */ |
|
45 TimeUnitAmount(const Formattable& number, |
|
46 TimeUnit::UTimeUnitFields timeUnitField, |
|
47 UErrorCode& status); |
|
48 |
|
49 /** |
|
50 * Construct TimeUnitAmount object with the given numeric amount and the |
|
51 * given time unit. |
|
52 * @param amount a numeric amount. |
|
53 * @param timeUnitField the time unit field on which a time unit amount |
|
54 * object will be created. |
|
55 * @param status the input-output error code. |
|
56 * If the timeUnitField is not valid, |
|
57 * then this will be set to a failing value: |
|
58 * U_ILLEGAL_ARGUMENT_ERROR. |
|
59 * @stable ICU 4.2 |
|
60 */ |
|
61 TimeUnitAmount(double amount, TimeUnit::UTimeUnitFields timeUnitField, |
|
62 UErrorCode& status); |
|
63 |
|
64 |
|
65 /** |
|
66 * Copy constructor |
|
67 * @stable ICU 4.2 |
|
68 */ |
|
69 TimeUnitAmount(const TimeUnitAmount& other); |
|
70 |
|
71 |
|
72 /** |
|
73 * Assignment operator |
|
74 * @stable ICU 4.2 |
|
75 */ |
|
76 TimeUnitAmount& operator=(const TimeUnitAmount& other); |
|
77 |
|
78 |
|
79 /** |
|
80 * Clone. |
|
81 * @return a polymorphic clone of this object. The result will have the same class as returned by getDynamicClassID(). |
|
82 * @stable ICU 4.2 |
|
83 */ |
|
84 virtual UObject* clone() const; |
|
85 |
|
86 |
|
87 /** |
|
88 * Destructor |
|
89 * @stable ICU 4.2 |
|
90 */ |
|
91 virtual ~TimeUnitAmount(); |
|
92 |
|
93 |
|
94 /** |
|
95 * Equality operator. |
|
96 * @param other the object to compare to. |
|
97 * @return true if this object is equal to the given object. |
|
98 * @stable ICU 4.2 |
|
99 */ |
|
100 virtual UBool operator==(const UObject& other) const; |
|
101 |
|
102 |
|
103 /** |
|
104 * Not-equality operator. |
|
105 * @param other the object to compare to. |
|
106 * @return true if this object is not equal to the given object. |
|
107 * @stable ICU 4.2 |
|
108 */ |
|
109 UBool operator!=(const UObject& other) const; |
|
110 |
|
111 |
|
112 /** |
|
113 * Return the class ID for this class. This is useful only for comparing to |
|
114 * a return value from getDynamicClassID(). For example: |
|
115 * <pre> |
|
116 * . Base* polymorphic_pointer = createPolymorphicObject(); |
|
117 * . if (polymorphic_pointer->getDynamicClassID() == |
|
118 * . erived::getStaticClassID()) ... |
|
119 * </pre> |
|
120 * @return The class ID for all objects of this class. |
|
121 * @stable ICU 4.2 |
|
122 */ |
|
123 static UClassID U_EXPORT2 getStaticClassID(void); |
|
124 |
|
125 |
|
126 /** |
|
127 * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This |
|
128 * method is to implement a simple version of RTTI, since not all C++ |
|
129 * compilers support genuine RTTI. Polymorphic operator==() and clone() |
|
130 * methods call this method. |
|
131 * |
|
132 * @return The class ID for this object. All objects of a |
|
133 * given class have the same class ID. Objects of |
|
134 * other classes have different class IDs. |
|
135 * @stable ICU 4.2 |
|
136 */ |
|
137 virtual UClassID getDynamicClassID(void) const; |
|
138 |
|
139 |
|
140 /** |
|
141 * Get the time unit. |
|
142 * @return time unit object. |
|
143 * @stable ICU 4.2 |
|
144 */ |
|
145 const TimeUnit& getTimeUnit() const; |
|
146 |
|
147 /** |
|
148 * Get the time unit field value. |
|
149 * @return time unit field value. |
|
150 * @stable ICU 4.2 |
|
151 */ |
|
152 TimeUnit::UTimeUnitFields getTimeUnitField() const; |
|
153 }; |
|
154 |
|
155 |
|
156 |
|
157 inline UBool |
|
158 TimeUnitAmount::operator!=(const UObject& other) const { |
|
159 return !operator==(other); |
|
160 } |
|
161 |
|
162 U_NAMESPACE_END |
|
163 |
|
164 #endif /* #if !UCONFIG_NO_FORMATTING */ |
|
165 |
|
166 #endif // __TMUTAMT_H__ |
|
167 //eof |
|
168 // |