text: /*
  *******************************************************************************
  * Copyright (C) 2008-2009, International Business Machines Corporation and
  * others. All Rights Reserved.
  *******************************************************************************
  *
  * File DTINTRV.H
  *
  *******************************************************************************
  */
  
  #ifndef __DTINTRV_H__
  #define __DTINTRV_H__
  
  #include "unicode/utypes.h"
  #include "unicode/uobject.h"
  
  /**
   * \file
   * \brief C++ API: Date Interval data type
   */
  
  U_NAMESPACE_BEGIN
  
  /**
   * This class represents a date interval.
   * It is a pair of UDate representing from UDate 1 to UDate 2.
   * @stable ICU 4.0
  **/
  class U_COMMON_API DateInterval : public UObject {
  public:
      /**
       * Construct a DateInterval given a from date and a to date.
       * @param fromDate  The from date in date interval.
       * @param toDate    The to date in date interval.
       * @stable ICU 4.0
       */
      DateInterval(UDate fromDate, UDate toDate);
  
      /**
       * destructor
       * @stable ICU 4.0
       */
      virtual ~DateInterval();
  
      /**
       * Get the from date.
       * @return  the from date in dateInterval.
       * @stable ICU 4.0
       */
      UDate getFromDate() const;
  
      /**
       * Get the to date.
       * @return  the to date in dateInterval.
       * @stable ICU 4.0
       */
      UDate getToDate() const;
  
      /**
       * Return the class ID for this class. This is useful only for comparing to
       * a return value from getDynamicClassID(). For example:
       * <pre>
       * .   Base* polymorphic_pointer = createPolymorphicObject();
       * .   if (polymorphic_pointer->getDynamicClassID() ==
       * .       erived::getStaticClassID()) ...
       * </pre>
       * @return          The class ID for all objects of this class.
       * @stable ICU 4.0
       */
      static UClassID U_EXPORT2 getStaticClassID(void);
  
      /**
       * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
       * method is to implement a simple version of RTTI, since not all C++
       * compilers support genuine RTTI. Polymorphic operator==() and clone()
       * methods call this method.
       *
       * @return          The class ID for this object. All objects of a
       *                  given class have the same class ID.  Objects of
       *                  other classes have different class IDs.
       * @stable ICU 4.0
       */
      virtual UClassID getDynamicClassID(void) const;
  
      /**
       * Copy constructor.
       * @stable ICU 4.0
       */
      DateInterval(const DateInterval& other);
  
      /**
       * Default assignment operator
       * @stable ICU 4.0
       */
      DateInterval& operator=(const DateInterval&);
  
      /**
       * Equality operator.
       * @return TRUE if the two DateIntervals are the same
       * @stable ICU 4.0
       */
      virtual UBool operator==(const DateInterval& other) const;
  
      /**
       * Non-equality operator
       * @return TRUE if the two DateIntervals are not the same
       * @stable ICU 4.0
       */
      UBool operator!=(const DateInterval& other) const;
  
      /**
       * clone this object.
       * The caller owns the result and should delete it when done.
       * @return a cloned DateInterval
       * @stable ICU 4.0
       */
      virtual DateInterval* clone() const;
  
  private:
      /**
       * Default constructor, not implemented.
       */
      DateInterval();
  
      UDate fromDate;
      UDate toDate;
  
  }; // end class DateInterval
  
  inline UDate DateInterval::getFromDate() const {
      return fromDate;
  }
  
  inline UDate DateInterval::getToDate() const {
      return toDate;
  }
  
  inline UBool DateInterval::operator!=(const DateInterval& other) const {
      return (!operator==(other));
  }
  
  U_NAMESPACE_END
  
  #endif
  