1 /* 2 ******************************************************************************* 3 * Copyright (C) 2009, 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 * @draft 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 * @draft 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 * @draft ICU 4.2 56 */ 57 static TimeUnit* U_EXPORT2 createInstance(UTimeUnitFields timeUnitField, 58 UErrorCode& status); 59 60 61 /** 62 * Override clone. 63 * @draft ICU 4.2 64 */ 65 virtual UObject* clone() const; 66 67 /** 68 * Copy operator. 69 * @draft ICU 4.2 70 */ 71 TimeUnit(const TimeUnit& other); 72 73 /** 74 * Assignment operator. 75 * @draft 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 * @draft 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 * @draft 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 * @draft 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 * @draft ICU 4.2 108 */ 109 static UClassID U_EXPORT2 getStaticClassID(); 110 111 112 /** 113 * Get time unit field. 114 * @return time unit field. 115 * @draft ICU 4.2 116 */ 117 UTimeUnitFields getTimeUnitField() const; 118 119 /** 120 * Destructor. 121 * @draft 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 // 150