xref: /aosp_15_r20/external/icu/libicu/cts_headers/unicode/dtintrv.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) 2008-2009, International Business Machines Corporation and
6*0e209d39SAndroid Build Coastguard Worker * others. All Rights Reserved.
7*0e209d39SAndroid Build Coastguard Worker *******************************************************************************
8*0e209d39SAndroid Build Coastguard Worker *
9*0e209d39SAndroid Build Coastguard Worker * File DTINTRV.H
10*0e209d39SAndroid Build Coastguard Worker *
11*0e209d39SAndroid Build Coastguard Worker *******************************************************************************
12*0e209d39SAndroid Build Coastguard Worker */
13*0e209d39SAndroid Build Coastguard Worker 
14*0e209d39SAndroid Build Coastguard Worker #ifndef __DTINTRV_H__
15*0e209d39SAndroid Build Coastguard Worker #define __DTINTRV_H__
16*0e209d39SAndroid Build Coastguard Worker 
17*0e209d39SAndroid Build Coastguard Worker #include "unicode/utypes.h"
18*0e209d39SAndroid Build Coastguard Worker 
19*0e209d39SAndroid Build Coastguard Worker #if U_SHOW_CPLUSPLUS_API
20*0e209d39SAndroid Build Coastguard Worker 
21*0e209d39SAndroid Build Coastguard Worker #include "unicode/uobject.h"
22*0e209d39SAndroid Build Coastguard Worker 
23*0e209d39SAndroid Build Coastguard Worker /**
24*0e209d39SAndroid Build Coastguard Worker  * \file
25*0e209d39SAndroid Build Coastguard Worker  * \brief C++ API: Date Interval data type
26*0e209d39SAndroid Build Coastguard Worker  */
27*0e209d39SAndroid Build Coastguard Worker 
28*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_BEGIN
29*0e209d39SAndroid Build Coastguard Worker 
30*0e209d39SAndroid Build Coastguard Worker 
31*0e209d39SAndroid Build Coastguard Worker /**
32*0e209d39SAndroid Build Coastguard Worker  * This class represents a date interval.
33*0e209d39SAndroid Build Coastguard Worker  * It is a pair of UDate representing from UDate 1 to UDate 2.
34*0e209d39SAndroid Build Coastguard Worker  * @stable ICU 4.0
35*0e209d39SAndroid Build Coastguard Worker **/
36*0e209d39SAndroid Build Coastguard Worker class U_COMMON_API DateInterval : public UObject {
37*0e209d39SAndroid Build Coastguard Worker public:
38*0e209d39SAndroid Build Coastguard Worker 
39*0e209d39SAndroid Build Coastguard Worker     /**
40*0e209d39SAndroid Build Coastguard Worker      * Construct a DateInterval given a from date and a to date.
41*0e209d39SAndroid Build Coastguard Worker      * @param fromDate  The from date in date interval.
42*0e209d39SAndroid Build Coastguard Worker      * @param toDate    The to date in date interval.
43*0e209d39SAndroid Build Coastguard Worker      * @stable ICU 4.0
44*0e209d39SAndroid Build Coastguard Worker      */
45*0e209d39SAndroid Build Coastguard Worker     DateInterval(UDate fromDate, UDate toDate);
46*0e209d39SAndroid Build Coastguard Worker 
47*0e209d39SAndroid Build Coastguard Worker     /**
48*0e209d39SAndroid Build Coastguard Worker      * destructor
49*0e209d39SAndroid Build Coastguard Worker      * @stable ICU 4.0
50*0e209d39SAndroid Build Coastguard Worker      */
51*0e209d39SAndroid Build Coastguard Worker     virtual ~DateInterval();
52*0e209d39SAndroid Build Coastguard Worker 
53*0e209d39SAndroid Build Coastguard Worker     /**
54*0e209d39SAndroid Build Coastguard Worker      * Get the from date.
55*0e209d39SAndroid Build Coastguard Worker      * @return  the from date in dateInterval.
56*0e209d39SAndroid Build Coastguard Worker      * @stable ICU 4.0
57*0e209d39SAndroid Build Coastguard Worker      */
58*0e209d39SAndroid Build Coastguard Worker     inline UDate getFromDate() const;
59*0e209d39SAndroid Build Coastguard Worker 
60*0e209d39SAndroid Build Coastguard Worker     /**
61*0e209d39SAndroid Build Coastguard Worker      * Get the to date.
62*0e209d39SAndroid Build Coastguard Worker      * @return  the to date in dateInterval.
63*0e209d39SAndroid Build Coastguard Worker      * @stable ICU 4.0
64*0e209d39SAndroid Build Coastguard Worker      */
65*0e209d39SAndroid Build Coastguard Worker     inline UDate getToDate() const;
66*0e209d39SAndroid Build Coastguard Worker 
67*0e209d39SAndroid Build Coastguard Worker 
68*0e209d39SAndroid Build Coastguard Worker     /**
69*0e209d39SAndroid Build Coastguard Worker      * Return the class ID for this class. This is useful only for comparing to
70*0e209d39SAndroid Build Coastguard Worker      * a return value from getDynamicClassID(). For example:
71*0e209d39SAndroid Build Coastguard Worker      * <pre>
72*0e209d39SAndroid Build Coastguard Worker      * .   Base* polymorphic_pointer = createPolymorphicObject();
73*0e209d39SAndroid Build Coastguard Worker      * .   if (polymorphic_pointer->getDynamicClassID() ==
74*0e209d39SAndroid Build Coastguard Worker      * .       derived::getStaticClassID()) ...
75*0e209d39SAndroid Build Coastguard Worker      * </pre>
76*0e209d39SAndroid Build Coastguard Worker      * @return          The class ID for all objects of this class.
77*0e209d39SAndroid Build Coastguard Worker      * @stable ICU 4.0
78*0e209d39SAndroid Build Coastguard Worker      */
79*0e209d39SAndroid Build Coastguard Worker     static UClassID U_EXPORT2 getStaticClassID();
80*0e209d39SAndroid Build Coastguard Worker 
81*0e209d39SAndroid Build Coastguard Worker     /**
82*0e209d39SAndroid Build Coastguard Worker      * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
83*0e209d39SAndroid Build Coastguard Worker      * method is to implement a simple version of RTTI, since not all C++
84*0e209d39SAndroid Build Coastguard Worker      * compilers support genuine RTTI. Polymorphic operator==() and clone()
85*0e209d39SAndroid Build Coastguard Worker      * methods call this method.
86*0e209d39SAndroid Build Coastguard Worker      *
87*0e209d39SAndroid Build Coastguard Worker      * @return          The class ID for this object. All objects of a
88*0e209d39SAndroid Build Coastguard Worker      *                  given class have the same class ID.  Objects of
89*0e209d39SAndroid Build Coastguard Worker      *                  other classes have different class IDs.
90*0e209d39SAndroid Build Coastguard Worker      * @stable ICU 4.0
91*0e209d39SAndroid Build Coastguard Worker      */
92*0e209d39SAndroid Build Coastguard Worker     virtual UClassID getDynamicClassID() const override;
93*0e209d39SAndroid Build Coastguard Worker 
94*0e209d39SAndroid Build Coastguard Worker     /**
95*0e209d39SAndroid Build Coastguard Worker      * Copy constructor.
96*0e209d39SAndroid Build Coastguard Worker      * @stable ICU 4.0
97*0e209d39SAndroid Build Coastguard Worker      */
98*0e209d39SAndroid Build Coastguard Worker     DateInterval(const DateInterval& other);
99*0e209d39SAndroid Build Coastguard Worker 
100*0e209d39SAndroid Build Coastguard Worker     /**
101*0e209d39SAndroid Build Coastguard Worker      * Default assignment operator
102*0e209d39SAndroid Build Coastguard Worker      * @stable ICU 4.0
103*0e209d39SAndroid Build Coastguard Worker      */
104*0e209d39SAndroid Build Coastguard Worker     DateInterval& operator=(const DateInterval&);
105*0e209d39SAndroid Build Coastguard Worker 
106*0e209d39SAndroid Build Coastguard Worker     /**
107*0e209d39SAndroid Build Coastguard Worker      * Equality operator.
108*0e209d39SAndroid Build Coastguard Worker      * @return true if the two DateIntervals are the same
109*0e209d39SAndroid Build Coastguard Worker      * @stable ICU 4.0
110*0e209d39SAndroid Build Coastguard Worker      */
111*0e209d39SAndroid Build Coastguard Worker     virtual bool operator==(const DateInterval& other) const;
112*0e209d39SAndroid Build Coastguard Worker 
113*0e209d39SAndroid Build Coastguard Worker     /**
114*0e209d39SAndroid Build Coastguard Worker      * Non-equality operator
115*0e209d39SAndroid Build Coastguard Worker      * @return true if the two DateIntervals are not the same
116*0e209d39SAndroid Build Coastguard Worker      * @stable ICU 4.0
117*0e209d39SAndroid Build Coastguard Worker      */
118*0e209d39SAndroid Build Coastguard Worker     inline bool operator!=(const DateInterval& other) const;
119*0e209d39SAndroid Build Coastguard Worker 
120*0e209d39SAndroid Build Coastguard Worker 
121*0e209d39SAndroid Build Coastguard Worker     /**
122*0e209d39SAndroid Build Coastguard Worker      * clone this object.
123*0e209d39SAndroid Build Coastguard Worker      * The caller owns the result and should delete it when done.
124*0e209d39SAndroid Build Coastguard Worker      * @return a cloned DateInterval
125*0e209d39SAndroid Build Coastguard Worker      * @stable ICU 4.0
126*0e209d39SAndroid Build Coastguard Worker      */
127*0e209d39SAndroid Build Coastguard Worker      virtual DateInterval* clone() const;
128*0e209d39SAndroid Build Coastguard Worker 
129*0e209d39SAndroid Build Coastguard Worker private:
130*0e209d39SAndroid Build Coastguard Worker     /**
131*0e209d39SAndroid Build Coastguard Worker      * Default constructor, not implemented.
132*0e209d39SAndroid Build Coastguard Worker      */
133*0e209d39SAndroid Build Coastguard Worker     DateInterval() = delete;
134*0e209d39SAndroid Build Coastguard Worker 
135*0e209d39SAndroid Build Coastguard Worker     UDate fromDate;
136*0e209d39SAndroid Build Coastguard Worker     UDate toDate;
137*0e209d39SAndroid Build Coastguard Worker 
138*0e209d39SAndroid Build Coastguard Worker } ;// end class DateInterval
139*0e209d39SAndroid Build Coastguard Worker 
140*0e209d39SAndroid Build Coastguard Worker 
141*0e209d39SAndroid Build Coastguard Worker inline UDate
getFromDate()142*0e209d39SAndroid Build Coastguard Worker DateInterval::getFromDate() const {
143*0e209d39SAndroid Build Coastguard Worker     return fromDate;
144*0e209d39SAndroid Build Coastguard Worker }
145*0e209d39SAndroid Build Coastguard Worker 
146*0e209d39SAndroid Build Coastguard Worker 
147*0e209d39SAndroid Build Coastguard Worker inline UDate
getToDate()148*0e209d39SAndroid Build Coastguard Worker DateInterval::getToDate() const {
149*0e209d39SAndroid Build Coastguard Worker     return toDate;
150*0e209d39SAndroid Build Coastguard Worker }
151*0e209d39SAndroid Build Coastguard Worker 
152*0e209d39SAndroid Build Coastguard Worker 
153*0e209d39SAndroid Build Coastguard Worker inline bool
154*0e209d39SAndroid Build Coastguard Worker DateInterval::operator!=(const DateInterval& other) const {
155*0e209d39SAndroid Build Coastguard Worker     return ( !operator==(other) );
156*0e209d39SAndroid Build Coastguard Worker }
157*0e209d39SAndroid Build Coastguard Worker 
158*0e209d39SAndroid Build Coastguard Worker 
159*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_END
160*0e209d39SAndroid Build Coastguard Worker 
161*0e209d39SAndroid Build Coastguard Worker #endif /* U_SHOW_CPLUSPLUS_API */
162*0e209d39SAndroid Build Coastguard Worker 
163*0e209d39SAndroid Build Coastguard Worker #endif
164