• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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