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