51 lines
1.6 KiB
C++
51 lines
1.6 KiB
C++
|
//
|
||
|
// 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;
|
||
|
}
|