00001 #include <typeinfo> 00002 #include "unaryexpression.h" 00003 using namespace std; 00004 00005 Ast& UnaryExpression::operator = (const Ast& ast) { 00006 const UnaryExpression& unaryExpression = dynamic_cast<const UnaryExpression&>(ast); 00007 00008 Ast::operator=(ast); 00009 this->expression = this->expression ? dynamic_cast<Expression*>(&(unaryExpression.expression->clone())) : 0; 00010 this->op = unaryExpression.op; 00011 00012 return *(this); 00013 } 00014 00015 bool UnaryExpression::operator == (const Ast& ast) const { 00016 bool result = false; 00017 const UnaryExpression& unaryExpression = dynamic_cast<const UnaryExpression&>(ast); 00018 00019 if (typeid(ast) != typeid(UnaryExpression)) 00020 return false; 00021 00022 if (this->expression) 00023 result = (*(this->expression) == *(unaryExpression.expression)); 00024 00025 return result && (this->op == unaryExpression.op) && Ast::operator==(ast); 00026 } 00027