Change month_weekday_last to store a {month, weekday_last}

* from storing a {month, weekday}.
* Change constructor from {month, weekday} to {month, week_last}.
* Change getter from weekday() to weekday_last().
* Fix up operator/() as required.
* This is an API change, but not a functionality change.
* Rationale: consistency.
This commit is contained in:
Howard Hinnant
2015-08-09 16:30:42 -04:00
parent 71d54735b5
commit e701a42ced

34
date.h
View File

@@ -505,14 +505,15 @@ std::ostream& operator<<(std::ostream& os, const month_weekday& mwd);
class month_weekday_last class month_weekday_last
{ {
date::month m_; date::month m_;
date::weekday wd_; date::weekday_last wdl_;
public: public:
CONSTCD11 month_weekday_last(const date::month& m, const date::weekday& wd) noexcept; CONSTCD11 month_weekday_last(const date::month& m,
const date::weekday_last& wd) noexcept;
CONSTCD11 date::month month() const noexcept; CONSTCD11 date::month month() const noexcept;
CONSTCD11 date::weekday weekday() const noexcept; CONSTCD11 date::weekday_last weekday_last() const noexcept;
CONSTCD11 bool ok() const noexcept; CONSTCD11 bool ok() const noexcept;
}; };
@@ -1912,20 +1913,27 @@ operator<<(std::ostream& os, const month_weekday& mwd)
CONSTCD11 CONSTCD11
inline inline
month_weekday_last::month_weekday_last(const date::month& m, month_weekday_last::month_weekday_last(const date::month& m,
const date::weekday& wd) noexcept const date::weekday_last& wdl) noexcept
: m_(m) : m_(m)
, wd_(wd) , wdl_(wdl)
{} {}
CONSTCD11 inline month month_weekday_last::month() const noexcept {return m_;} CONSTCD11 inline month month_weekday_last::month() const noexcept {return m_;}
CONSTCD11 inline weekday month_weekday_last::weekday() const noexcept {return wd_;}
CONSTCD11
inline
weekday_last
month_weekday_last::weekday_last() const noexcept
{
return wdl_;
}
CONSTCD11 CONSTCD11
inline inline
bool bool
month_weekday_last::ok() const noexcept month_weekday_last::ok() const noexcept
{ {
return m_.ok() && wd_.ok(); return m_.ok() && wdl_.ok();
} }
CONSTCD11 CONSTCD11
@@ -1933,7 +1941,7 @@ inline
bool bool
operator==(const month_weekday_last& x, const month_weekday_last& y) noexcept operator==(const month_weekday_last& x, const month_weekday_last& y) noexcept
{ {
return x.month() == y.month() && x.weekday() == y.weekday(); return x.month() == y.month() && x.weekday_last() == y.weekday_last();
} }
CONSTCD11 CONSTCD11
@@ -1948,7 +1956,7 @@ inline
std::ostream& std::ostream&
operator<<(std::ostream& os, const month_weekday_last& mwdl) operator<<(std::ostream& os, const month_weekday_last& mwdl)
{ {
return os << mwdl.month() << '/' << mwdl.weekday() << "[last]"; return os << mwdl.month() << '/' << mwdl.weekday_last();
} }
// year_month_day_last // year_month_day_last
@@ -2787,7 +2795,7 @@ inline
month_weekday_last month_weekday_last
operator/(const month& m, const weekday_last& wdl) noexcept operator/(const month& m, const weekday_last& wdl) noexcept
{ {
return {m, wdl.weekday()}; return {m, wdl};
} }
CONSTCD11 CONSTCD11
@@ -2963,7 +2971,7 @@ inline
year_month_weekday_last year_month_weekday_last
operator/(const year& y, const month_weekday_last& mwdl) noexcept operator/(const year& y, const month_weekday_last& mwdl) noexcept
{ {
return {y, mwdl.month(), mwdl.weekday()[last]}; return {y, mwdl.month(), mwdl.weekday_last()};
} }
CONSTCD11 CONSTCD11