-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSpreadSheetCell.cpp
More file actions
114 lines (93 loc) · 2.52 KB
/
Copy pathSpreadSheetCell.cpp
File metadata and controls
114 lines (93 loc) · 2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include "SpreadSheetCell.h"
#include <stdexcept>
using namespace std;
SpreadSheetCell::SpreadSheetCell(double initialValue)
: mValue(initialValue)
{
}
SpreadSheetCell::SpreadSheetCell(string_view initialValue)
: mValue(stringToDouble(initialValue))
{
}
void SpreadSheetCell::set(double inValue)
{
mValue = inValue;
}
void SpreadSheetCell::set(string_view inString)
{
mValue = stringToDouble(inString);
}
string SpreadSheetCell::doubleToString(double inValue)
{
return to_string(inValue);
}
double SpreadSheetCell::stringToDouble(string_view inString)
{
return strtod(inString.data(), nullptr);
}
SpreadSheetCell operator+(const SpreadSheetCell& lhs, const SpreadSheetCell& rhs)
{
return SpreadSheetCell(lhs.getValue() + rhs.getValue());
}
SpreadSheetCell operator-(const SpreadSheetCell& lhs, const SpreadSheetCell& rhs)
{
return SpreadSheetCell(lhs.getValue() - rhs.getValue());
}
SpreadSheetCell operator*(const SpreadSheetCell& lhs, const SpreadSheetCell& rhs)
{
return SpreadSheetCell(lhs.getValue() * rhs.getValue());
}
SpreadSheetCell operator/(const SpreadSheetCell& lhs, const SpreadSheetCell& rhs)
{
if (rhs.getValue() == 0) {
throw invalid_argument("Divide by zero.");
}
return SpreadSheetCell(lhs.getValue() / rhs.getValue());
}
SpreadSheetCell& SpreadSheetCell::operator+=(const SpreadSheetCell& rhs)
{
set(getValue() + rhs.getValue());
return *this;
}
SpreadSheetCell& SpreadSheetCell::operator-=(const SpreadSheetCell& rhs)
{
set(getValue() - rhs.getValue());
return *this;
}
SpreadSheetCell& SpreadSheetCell::operator*=(const SpreadSheetCell& rhs)
{
set(getValue() * rhs.getValue());
return *this;
}
SpreadSheetCell& SpreadSheetCell::operator/=(const SpreadSheetCell& rhs)
{
if (rhs.getValue() == 0) {
throw invalid_argument("Divide by zero.");
}
set(getValue() / rhs.getValue());
return *this;
}
bool operator==(const SpreadSheetCell& lhs, const SpreadSheetCell& rhs)
{
return (lhs.getValue() == rhs.getValue());
}
bool operator<(const SpreadSheetCell& lhs, const SpreadSheetCell& rhs)
{
return (lhs.getValue() < rhs.getValue());
}
bool operator>(const SpreadSheetCell& lhs, const SpreadSheetCell& rhs)
{
return (lhs.getValue() > rhs.getValue());
}
bool operator!=(const SpreadSheetCell& lhs, const SpreadSheetCell& rhs)
{
return (lhs.getValue() != rhs.getValue());
}
bool operator<=(const SpreadSheetCell& lhs, const SpreadSheetCell& rhs)
{
return (lhs.getValue() <= rhs.getValue());
}
bool operator>=(const SpreadSheetCell& lhs, const SpreadSheetCell& rhs)
{
return (lhs.getValue() >= rhs.getValue());
}