summaryrefslogtreecommitdiffstats
path: root/Sencha-lang/AST/SenchaObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Sencha-lang/AST/SenchaObject.cpp')
-rw-r--r--Sencha-lang/AST/SenchaObject.cpp78
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