1 /* 2 ******************************************************************************* 3 * Copyright (C) 2009-2014, 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 * Returns a unique class ID for this object POLYMORPHICALLY. 81 * This method implements a simple form of RTTI used by ICU. 82 * @return The class ID for this object. All objects of a given 83 * class have the same class ID. Objects of other classes have 84 * different class IDs. 85 * @stable ICU 4.2 86 */ 87 virtual UClassID getDynamicClassID() const; 88 89 /** 90 * Returns the class ID for this class. This is used to compare to 91 * the return value of getDynamicClassID(). 92 * @return The class ID for all objects of this class. 93 * @stable ICU 4.2 94 */ 95 static UClassID U_EXPORT2 getStaticClassID(); 96 97 98 /** 99 * Get time unit field. 100 * @return time unit field. 101 * @stable ICU 4.2 102 */ 103 UTimeUnitFields getTimeUnitField() const; 104 105 /** 106 * Destructor. 107 * @stable ICU 4.2 108 */ 109 virtual ~TimeUnit(); 110 111 private: 112 UTimeUnitFields fTimeUnitField; 113 114 /** 115 * Constructor 116 * @internal ICU 4.2 117 */ 118 TimeUnit(UTimeUnitFields timeUnitField); 119 120 }; 121 122 123 U_NAMESPACE_END 124 125 #endif /* #if !UCONFIG_NO_FORMATTING */ 126 127 #endif // __TMUNIT_H__ 128 //eof 129 // 130