|
1 /* |
|
2 ******************************************************************************* |
|
3 * Copyright (C) 2009-2010, Google, International Business Machines Corporation and * |
|
4 * others. All Rights Reserved. * |
|
5 ******************************************************************************* |
|
6 */ |
|
7 |
|
8 #ifndef __TMUNIT_H__ |
|
9 #define __TMUNIT_H__ |
|
10 |
|
11 |
|
12 /** |
|
13 * \file |
|
14 * \brief C++ API: time unit object |
|
15 */ |
|
16 |
|
17 |
|
18 #include "unicode/measunit.h" |
|
19 |
|
20 #if !UCONFIG_NO_FORMATTING |
|
21 |
|
22 U_NAMESPACE_BEGIN |
|
23 |
|
24 /** |
|
25 * Measurement unit for time units. |
|
26 * @see TimeUnitAmount |
|
27 * @see TimeUnit |
|
28 * @stable ICU 4.2 |
|
29 */ |
|
30 class U_I18N_API TimeUnit: public MeasureUnit { |
|
31 public: |
|
32 /** |
|
33 * Constants for all the time units we supported. |
|
34 * @stable ICU 4.2 |
|
35 */ |
|
36 enum UTimeUnitFields { |
|
37 UTIMEUNIT_YEAR, |
|
38 UTIMEUNIT_MONTH, |
|
39 UTIMEUNIT_DAY, |
|
40 UTIMEUNIT_WEEK, |
|
41 UTIMEUNIT_HOUR, |
|
42 UTIMEUNIT_MINUTE, |
|
43 UTIMEUNIT_SECOND, |
|
44 UTIMEUNIT_FIELD_COUNT |
|
45 }; |
|
46 |
|
47 /** |
|
48 * Create Instance. |
|
49 * @param timeUnitField time unit field based on which the instance |
|
50 * is created. |
|
51 * @param status input-output error code. |
|
52 * If the timeUnitField is invalid, |
|
53 * then this will be set to U_ILLEGAL_ARGUMENT_ERROR. |
|
54 * @return a TimeUnit instance |
|
55 * @stable ICU 4.2 |
|
56 */ |
|
57 static TimeUnit* U_EXPORT2 createInstance(UTimeUnitFields timeUnitField, |
|
58 UErrorCode& status); |
|
59 |
|
60 |
|
61 /** |
|
62 * Override clone. |
|
63 * @stable ICU 4.2 |
|
64 */ |
|
65 virtual UObject* clone() const; |
|
66 |
|
67 /** |
|
68 * Copy operator. |
|
69 * @stable ICU 4.2 |
|
70 */ |
|
71 TimeUnit(const TimeUnit& other); |
|
72 |
|
73 /** |
|
74 * Assignment operator. |
|
75 * @stable ICU 4.2 |
|
76 */ |
|
77 TimeUnit& operator=(const TimeUnit& other); |
|
78 |
|
79 /** |
|
80 * Equality operator. |
|
81 * @return true if 2 objects are the same. |
|
82 * @stable ICU 4.2 |
|
83 */ |
|
84 virtual UBool operator==(const UObject& other) const; |
|
85 |
|
86 /** |
|
87 * Non-Equality operator. |
|
88 * @return true if 2 objects are not the same. |
|
89 * @stable ICU 4.2 |
|
90 */ |
|
91 UBool operator!=(const UObject& other) const; |
|
92 |
|
93 /** |
|
94 * Returns a unique class ID for this object POLYMORPHICALLY. |
|
95 * This method implements a simple form of RTTI used by ICU. |
|
96 * @return The class ID for this object. All objects of a given |
|
97 * class have the same class ID. Objects of other classes have |
|
98 * different class IDs. |
|
99 * @stable ICU 4.2 |
|
100 */ |
|
101 virtual UClassID getDynamicClassID() const; |
|
102 |
|
103 /** |
|
104 * Returns the class ID for this class. This is used to compare to |
|
105 * the return value of getDynamicClassID(). |
|
106 * @return The class ID for all objects of this class. |
|
107 * @stable ICU 4.2 |
|
108 */ |
|
109 static UClassID U_EXPORT2 getStaticClassID(); |
|
110 |
|
111 |
|
112 /** |
|
113 * Get time unit field. |
|
114 * @return time unit field. |
|
115 * @stable ICU 4.2 |
|
116 */ |
|
117 UTimeUnitFields getTimeUnitField() const; |
|
118 |
|
119 /** |
|
120 * Destructor. |
|
121 * @stable ICU 4.2 |
|
122 */ |
|
123 virtual ~TimeUnit(); |
|
124 |
|
125 private: |
|
126 UTimeUnitFields fTimeUnitField; |
|
127 |
|
128 /** |
|
129 * Constructor |
|
130 * @internal ICU 4.2 |
|
131 */ |
|
132 TimeUnit(UTimeUnitFields timeUnitField); |
|
133 |
|
134 }; |
|
135 |
|
136 |
|
137 inline UBool |
|
138 TimeUnit::operator!=(const UObject& other) const { |
|
139 return !operator==(other); |
|
140 } |
|
141 |
|
142 |
|
143 U_NAMESPACE_END |
|
144 |
|
145 #endif /* #if !UCONFIG_NO_FORMATTING */ |
|
146 |
|
147 #endif // __TMUNIT_H__ |
|
148 //eof |
|
149 // |