// // Created by quentin on 2/5/23. // #include "money.h" long long Budget::Models::Money::getDollars() const { return dollars; } long long Budget::Models::Money::getCents() const { return cents; } Budget::Models::Money Budget::Models::operator+(const Budget::Models::Money &lhs, const Budget::Models::Money &rhs) { long long total_cents = lhs.cents + rhs.cents; long long total_dollars = lhs.dollars + rhs.dollars + total_cents / 100; total_cents = total_cents % 100; return {total_dollars, total_cents}; } Budget::Models::Money Budget::Models::operator-(const Budget::Models::Money &lhs, const Budget::Models::Money &rhs) { long long total_cents = lhs.dollars * 100 + lhs.cents - rhs.dollars * 100 - rhs.cents; return {total_cents / 100, std::abs(total_cents % 100)}; } bool Budget::Models::operator==(const Budget::Models::Money &lhs, const Budget::Models::Money &rhs) { return lhs.dollars == rhs.dollars && lhs.cents == rhs.cents; } bool Budget::Models::operator<(const Budget::Models::Money &lhs, const Budget::Models::Money &rhs) { return lhs.dollars * 100 + lhs.cents < rhs.dollars * 100 + rhs.cents; } bool Budget::Models::Money::operator>(const Budget::Models::Money &rhs) const { return rhs < *this; } bool Budget::Models::Money::operator<=(const Budget::Models::Money &rhs) const { return !(rhs < *this); } bool Budget::Models::Money::operator>=(const Budget::Models::Money &rhs) const { return !(*this < rhs); } std::ostream &operator<<(std::ostream &os, const Budget::Models::Money &money) { os << "$" << money.getDollars() << "."; if (money.getCents() < 10) { os << "0"; } os << money.getCents(); return os; }