#ifndef __INTERVAL_H__
#define __INTERVAL_H__

#include <iostream>

class Interval
{
 public:
  Interval();
  Interval(double a, double b);
  Interval(double a, double b, bool includesA, bool IncludesB);

  bool isEmpty() const;
  Interval close() const;
  Interval intersect(const Interval& i) const;
  bool contains(double x) const;
  bool contains(const Interval& i) const;
  bool intersects(const Interval& i) const;
  void writeTo(ostream&) const;
  
  void readFrom(istream&);

 private:
  double start, end;
  bool startClosed, endClosed;
};

#endif
