dtintrv.h revision c73f511526464f8e56c242df80552e9b0d94ae3d
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
24U_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**/
32class U_COMMON_API DateInterval : public UObject {
33public:
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
126private:
127    /**
128     * Default constructor, not implemented.
129     */
130    DateInterval();
131
132    UDate fromDate;
133    UDate toDate;
134
135} ;// end class DateInterval
136
137
138inline UDate
139DateInterval::getFromDate() const {
140    return fromDate;
141}
142
143
144inline UDate
145DateInterval::getToDate() const {
146    return toDate;
147}
148
149
150inline UBool
151DateInterval::operator!=(const DateInterval& other) const {
152    return ( !operator==(other) );
153}
154
155
156U_NAMESPACE_END
157
158#endif
159