diff options
Diffstat (limited to 'Sencha-lang/AST/SenchaObject.cpp')
-rw-r--r-- | Sencha-lang/AST/SenchaObject.cpp | 78 |
1 files changed, 77 insertions, 1 deletions
diff --git a/Sencha-lang/AST/SenchaObject.cpp b/Sencha-lang/AST/SenchaObject.cpp index 46694f3..ed86bf4 100644 --- a/Sencha-lang/AST/SenchaObject.cpp +++ b/Sencha-lang/AST/SenchaObject.cpp @@ -63,7 +63,6 @@ SenchaObject SenchaObject::operator+(const SenchaObject& right)const result.set_value(this->number + right.number); break; } - } else { @@ -73,3 +72,80 @@ SenchaObject SenchaObject::operator+(const SenchaObject& right)const return result; } + +SenchaObject SenchaObject::operator-(const SenchaObject& right)const +{ + SenchaObject result; + if(type == right.type) + { + switch(type){ + case string_literal: + result.type = invalid; + break; + case integer_number: + result.set_value(this->integer - right.integer); + break; + case float_number: + result.set_value(this->number - right.number); + break; + } + } + else + { + result.type = invalid; + } + + return result; +} + +SenchaObject SenchaObject::operator*(const SenchaObject& right)const +{ + SenchaObject result; + if(type == right.type) + { + switch(type){ + case string_literal: + result.type = invalid; + break; + case integer_number: + result.set_value(this->integer * right.integer); + break; + case float_number: + result.set_value(this->number * right.number); + break; + } + } + else + { + result.type = invalid; + } + + return result; +} + +SenchaObject SenchaObject::operator/(const SenchaObject& right)const +{ + SenchaObject result; + if(type == right.type) + { + switch(type){ + case string_literal: + result.type = invalid; + break; + case integer_number: + result.set_value(this->integer / right.integer); + break; + case float_number: + result.set_value(this->number / right.number); + break; + } + } + else + { + result.type = invalid; + } + + return result; +} + +//TODO change code above to something more generic |