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