Improved performance for binary calculations
This commit is contained in:
parent
f1fbf7044b
commit
ce3be6a039
|
@ -2,49 +2,65 @@
|
||||||
#include "NumericEvalValue.hpp"
|
#include "NumericEvalValue.hpp"
|
||||||
|
|
||||||
NumericEvalValue *NumericEvalValue::operator+(NumericEvalValue *b) {
|
NumericEvalValue *NumericEvalValue::operator+(NumericEvalValue *b) {
|
||||||
if (this->IsFloat() && b->IsFloat()){
|
if (this->IsFloat()){
|
||||||
return new FloatEvalValue(this->GetFloatValue() + b->GetFloatValue());
|
if (b->IsFloat()){
|
||||||
} else if (this->IsFloat()){
|
return new FloatEvalValue(this->GetFloatValue() + b->GetFloatValue());
|
||||||
return new FloatEvalValue(this->GetFloatValue() + b->GetIntegerValue());
|
} else{
|
||||||
} else if (b->IsFloat()){
|
return new FloatEvalValue(this->GetFloatValue() + b->GetIntegerValue());
|
||||||
return new FloatEvalValue(this->GetIntegerValue() + b->GetFloatValue());
|
}
|
||||||
} else{
|
} else {
|
||||||
return new IntegerEvalValue(this->GetIntegerValue() + b->GetIntegerValue());
|
if (b->IsFloat()){
|
||||||
|
return new FloatEvalValue(this->GetIntegerValue() + b->GetFloatValue());
|
||||||
|
} else{
|
||||||
|
return new IntegerEvalValue(this->GetIntegerValue() + b->GetIntegerValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NumericEvalValue *NumericEvalValue::operator-(NumericEvalValue *b) {
|
NumericEvalValue *NumericEvalValue::operator-(NumericEvalValue *b) {
|
||||||
if (this->IsFloat() && b->IsFloat()){
|
if (this->IsFloat()){
|
||||||
return new FloatEvalValue(this->GetFloatValue() - b->GetFloatValue());
|
if (b->IsFloat()){
|
||||||
} else if (this->IsFloat()){
|
return new FloatEvalValue(this->GetFloatValue() - b->GetFloatValue());
|
||||||
return new FloatEvalValue(this->GetFloatValue() - b->GetIntegerValue());
|
} else{
|
||||||
} else if (b->IsFloat()){
|
return new FloatEvalValue(this->GetFloatValue() - b->GetIntegerValue());
|
||||||
return new FloatEvalValue(this->GetIntegerValue() - b->GetFloatValue());
|
}
|
||||||
} else{
|
} else {
|
||||||
return new IntegerEvalValue(this->GetIntegerValue() - b->GetIntegerValue());
|
if (b->IsFloat()){
|
||||||
|
return new FloatEvalValue(this->GetIntegerValue() - b->GetFloatValue());
|
||||||
|
} else{
|
||||||
|
return new IntegerEvalValue(this->GetIntegerValue() - b->GetIntegerValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NumericEvalValue *NumericEvalValue::operator*(NumericEvalValue *b) {
|
NumericEvalValue *NumericEvalValue::operator*(NumericEvalValue *b) {
|
||||||
if (this->IsFloat() && b->IsFloat()){
|
if (this->IsFloat()){
|
||||||
return new FloatEvalValue(this->GetFloatValue() * b->GetFloatValue());
|
if (b->IsFloat()){
|
||||||
} else if (this->IsFloat()){
|
return new FloatEvalValue(this->GetFloatValue() * b->GetFloatValue());
|
||||||
return new FloatEvalValue(this->GetFloatValue() * b->GetIntegerValue());
|
} else{
|
||||||
} else if (b->IsFloat()){
|
return new FloatEvalValue(this->GetFloatValue() * b->GetIntegerValue());
|
||||||
return new FloatEvalValue(this->GetIntegerValue() * b->GetFloatValue());
|
}
|
||||||
} else{
|
} else {
|
||||||
return new IntegerEvalValue(this->GetIntegerValue() * b->GetIntegerValue());
|
if (b->IsFloat()){
|
||||||
|
return new FloatEvalValue(this->GetIntegerValue() * b->GetFloatValue());
|
||||||
|
} else{
|
||||||
|
return new IntegerEvalValue(this->GetIntegerValue() * b->GetIntegerValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NumericEvalValue *NumericEvalValue::operator/(NumericEvalValue *b) {
|
NumericEvalValue *NumericEvalValue::operator/(NumericEvalValue *b) {
|
||||||
if (this->IsFloat() && b->IsFloat()){
|
if (this->IsFloat()){
|
||||||
return new FloatEvalValue(this->GetFloatValue() / b->GetFloatValue());
|
if (b->IsFloat()){
|
||||||
} else if (this->IsFloat()){
|
return new FloatEvalValue(this->GetFloatValue() / b->GetFloatValue());
|
||||||
return new FloatEvalValue(this->GetFloatValue() / b->GetIntegerValue());
|
} else{
|
||||||
} else if (b->IsFloat()){
|
return new FloatEvalValue(this->GetFloatValue() / b->GetIntegerValue());
|
||||||
return new FloatEvalValue(this->GetIntegerValue() / b->GetFloatValue());
|
}
|
||||||
} else{
|
} else {
|
||||||
return new IntegerEvalValue(this->GetIntegerValue() / b->GetIntegerValue());
|
if (b->IsFloat()){
|
||||||
|
return new FloatEvalValue(this->GetIntegerValue() / b->GetFloatValue());
|
||||||
|
} else{
|
||||||
|
return new IntegerEvalValue(this->GetIntegerValue() / b->GetIntegerValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue