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