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