/* * Assignment.cpp * * Created on: Dec 7, 2012 * Author: attero */ #include "Assignment.h" SenchaObject Assignment::evaluate() { return static_cast(children[1])->evaluate(); } void Assignment::set_name(std::string name) { this->name = name; } void Assignment::execute() { auto left_value = static_cast(children[0])->evaluate(); auto right_value = static_cast(children[1])->evaluate(); static_cast(children[1])->execute_quietly(); if(name != "") { context->set(name, right_value); } } void Assignment::execute_quietly() { auto left_value = static_cast(children[0])->evaluate(); auto right_value = static_cast(children[1])->evaluate(); static_cast(children[1])->execute_quietly(); if(left_value.name != "") { context->set(left_value.name, right_value); } } void Assignment::add_lvalue(ASTExpression * left) { if(children.size()==0) children.push_back(left); else children[0] = left; } void Assignment::add_rvalue(ASTExpression * right) { if(children.size()==1) children.push_back(right); else if(children.size()>1) children[1] = right; } std::string Assignment::debug() { std::string debug_note = static_cast(children[0])->evaluate().repr(); debug_note += " = " + static_cast(children[1])->evaluate().repr() + "\n"; return debug_note; } Assignment::Assignment(ASTNode * parent, Context * context) { this->parent = parent; this->context = context; this->type = "Assignment"; } Assignment::~Assignment() { for(auto it = children.begin(); it != children.end(); ) { delete *it; it = children.erase(it); } }