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