Technical test for a job interview.
1#include "numeral_modifier.hpp"
2
3NumeralModifier::~NumeralModifier()
4{
5 if (_left != nullptr)
6 {
7 delete _left;
8 }
9
10 if (_right != nullptr)
11 {
12 delete _right;
13 }
14}
15
16void NumeralModifier::setChild(NumeralWord *child)
17{
18 if (_right != nullptr)
19 {
20 _right->setChild(child);
21 }
22 else
23 {
24 _right = child;
25 }
26}
27
28int NumeralModifier::evaluate(NumeralWord *child)
29{
30 if (child == nullptr)
31 {
32 return 0;
33 }
34
35 return child->evaluate();
36}
37
38int NumeralModifier::evaluate()
39{
40 switch (_joiner)
41 {
42 case ADD:
43 return evaluate(_left) + evaluate(_right);
44 //break;
45
46 case SUBSTRACT:
47 return evaluate(_left) - evaluate(_right);
48 //break;
49
50 default:
51 return 0;
52 //break;
53 }
54}
55
56std::string NumeralModifier::to_string()
57{
58 std::string out = _repr + "(";
59 if (_left != nullptr)
60 {
61 out += _left->to_string();
62 }
63 else
64 {
65 out += "null";
66 }
67 out += std::string(",");
68 if (_right != nullptr)
69 {
70 out += _right->to_string();
71 }
72 else
73 {
74 out += "null";
75 }
76 out += std::string(")");
77 return out;
78}