diff --git a/Julian.cpp b/Julian.cpp index a2bc81b..e59175e 100644 --- a/Julian.cpp +++ b/Julian.cpp @@ -80,6 +80,9 @@ Julian::Julian(int year, int mon, int day, int hour, int min, double sec) { Initialize(year, mon, day, hour, min, sec); } +/* + * comparison + */ bool Julian::operator==(const Julian &date) const { return date_ == date.date_ ? true : false; } @@ -104,6 +107,34 @@ bool Julian::operator<=(const Julian &date) const { return date_ <= date.date_ ? true : false; } +/* + * assignment + */ +Julian& Julian::operator=(const Julian& b) { + date_ = b.date_; + return (*this); +} + +Julian& Julian::operator=(const double b) { + date_ = b; + return (*this); +} + +/* + * arithmetic + */ +Julian Julian::operator+(const Timespan& b) const { + Julian result(*this); + result.date_ += b.GetTotalDays(); + return result; +} + +Julian Julian::operator-(const Timespan& b) const { + Julian result(*this); + result.date_ -= b.GetTotalDays(); + return result; +} + /* * create julian date from year and day of year */ diff --git a/Julian.h b/Julian.h index 90c4a09..6d363ab 100644 --- a/Julian.h +++ b/Julian.h @@ -2,6 +2,7 @@ #define JULIAN_H_ #include "Globals.h" +#include "Timespan.h" #include @@ -23,6 +24,11 @@ public: bool operator>=(const Julian &date) const; bool operator<=(const Julian &date) const; + Julian& operator=(const Julian& b); +Julian& operator=(const double b); +Julian operator+(const Timespan& b) const; +Julian operator-(const Timespan& b) const; + ~Julian() { }; diff --git a/Rewrite.vcxproj b/Rewrite.vcxproj index 2659507..6fafd62 100644 --- a/Rewrite.vcxproj +++ b/Rewrite.vcxproj @@ -81,6 +81,7 @@ + @@ -92,6 +93,7 @@ + diff --git a/Rewrite.vcxproj.filters b/Rewrite.vcxproj.filters index 6a3137c..1b568a0 100644 --- a/Rewrite.vcxproj.filters +++ b/Rewrite.vcxproj.filters @@ -42,6 +42,9 @@ Source Files + + Source Files + @@ -71,5 +74,8 @@ Header Files + + Header Files + \ No newline at end of file diff --git a/Timespan.cpp b/Timespan.cpp new file mode 100644 index 0000000..023ff76 --- /dev/null +++ b/Timespan.cpp @@ -0,0 +1,118 @@ +#include "Timespan.h" + +#include "Globals.h" + +Timespan::Timespan(void) { +} + +Timespan::Timespan(const double time_span) { +} + +Timespan::Timespan(const Timespan& b) { + + time_span_ = b.time_span_; +} + +Timespan::~Timespan(void) { +} + +Timespan& Timespan::operator =(const Timespan& b) { + + if (this != &b) { + time_span_ = b.time_span_; + + } + return (*this); +} + +Timespan Timespan::operator +(const Timespan& b) const { + + Timespan result(*this); + result.time_span_ += b.GetTotalDays(); + return result; +} + +Timespan Timespan::operator -(const Timespan& b) const { + + Timespan result(*this); + result.time_span_ -= b.GetTotalDays(); + return result; +} + +const Timespan & Timespan::operator+=(const Timespan& b) { + + time_span_ += b.time_span_; + return (*this); +} + +const Timespan & Timespan::operator-=(const Timespan& b) { + + time_span_ -= b.time_span_; + return (*this); +} + +Timespan Timespan::operator +() const { + + Timespan result(*this); + result.time_span_ = +result.time_span_; + return result; +} + +Timespan Timespan::operator -() const { + + Timespan result(*this); + result.time_span_ = -result.time_span_; + return result; +} + +bool Timespan::operator ==(const Timespan& b) const { + + if (time_span_ == b.time_span_) + return true; + else + return false; +} + +bool Timespan::operator !=(const Timespan& b) const { + + if (time_span_ == b.time_span_) + return false; + else + return true; +} + +bool Timespan::operator>(const Timespan& b) const { + + if (time_span_ > b.time_span_) + return true; + else + return false; +} + +bool Timespan::operator<(const Timespan& b) const { + + if (time_span_ < b.time_span_) + return true; + else + return false; +} + +bool Timespan::operator >=(const Timespan& b) const { + + if (time_span_ >= b.time_span_) + return true; + else + return false; +} + +bool Timespan::operator <=(const Timespan & b) const { + + if (time_span_ <= b.time_span_) + return true; + else + return false; +} + +double Timespan::GetTotalDays() const{ + return time_span_ / Globals::MIN_PER_DAY(); +} \ No newline at end of file diff --git a/Timespan.h b/Timespan.h new file mode 100644 index 0000000..236bab4 --- /dev/null +++ b/Timespan.h @@ -0,0 +1,38 @@ +#ifndef TIMESPAN_H_ +#define TIMESPAN_H_ + +class Timespan { +public: + Timespan(void); + Timespan(const double time_span); + Timespan(const Timespan& b); + virtual ~Timespan(void); + + double GetTotalDays() const; + + /* + * overloaded operators + */ + Timespan & operator=(const Timespan& b); + Timespan operator+(const Timespan& b) const; + Timespan operator-(const Timespan& b) const; + Timespan operator+() const; + Timespan operator-() const; + const Timespan & operator+=(const Timespan& b); + const Timespan & operator-=(const Timespan& b); + bool operator==(const Timespan& b) const; + bool operator!=(const Timespan& b) const; + bool operator>(const Timespan& b) const; + bool operator<(const Timespan& b) const; + bool operator>=(const Timespan& b) const; + bool operator<=(const Timespan& b) const; + +private: + /* + * stores value in minutes + */ + double time_span_; +}; + +#endif +