diff options
Diffstat (limited to 'hw2/include/interval.h')
-rw-r--r-- | hw2/include/interval.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/hw2/include/interval.h b/hw2/include/interval.h new file mode 100644 index 0000000..ccb720a --- /dev/null +++ b/hw2/include/interval.h @@ -0,0 +1,77 @@ +/******************************************************************/ +/* This file is part of the homework assignments for CSCI-427/527 */ +/* at The College of William & Mary and authored by Pieter Peers. */ +/* No part of this file, whether altered or in original form, can */ +/* be distributed or used outside the context of CSCI-427/527 */ +/* without consent of either the College of William & Mary or */ +/* Pieter Peers. */ +/******************************************************************/ +#ifndef _INTERVAL_H_ +#define _INTERVAL_H_ + +#include <ostream> + +#include "constants.h" + +class interval +{ + public: + ////////////////// + // Constrructor // + ////////////////// + interval(float lower=-LARGE, float upper=+LARGE); + interval(const interval& i); + + /////////////// + // Operators // + /////////////// + interval& operator=(const interval& i); + + interval operator+(float v) const; + interval operator-(float v) const; + interval operator*(float v) const; + interval operator/(float v) const; + + interval& operator+=(float v); + interval& operator-=(float v); + interval& operator*=(float v); + interval& operator/=(float v); + + //////////////// + // Inspectors // + //////////////// + float lower(void) const; + float upper(void) const; + + bool empty(void) const; + + ////////////// + // Mutators // + ////////////// + void intersect(const interval& i); + + ///////////// + // Friends // + ///////////// + friend void swap(interval& a, interval& b) { a._swap(b); } + + friend std::ostream& operator<<(std::ostream& s, const interval& i) + { + s << "[" << i.lower() << ", " << i.upper() << "]"; + return s; + } + + private: + ///////////////////// + // Private Methods // + ///////////////////// + void _assign(const interval& i); + void _swap(interval& i); + + ////////////////////////// + // Private Data Members // + ////////////////////////// + float _lower, _upper; +}; + +#endif /* _INTERVAL_H_ */ |