xref: /aosp_15_r20/external/icu/libicu/cts_headers/unicode/tmunit.h (revision 0e209d3975ff4a8c132096b14b0e9364a753506e)
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