Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

binaryexpression.cpp

Go to the documentation of this file.
00001 #include <typeinfo>
00002 #include "binaryexpression.h"
00003 using namespace std;
00004 
00005 Ast& BinaryExpression::operator = (const Ast& ast) {
00006         const BinaryExpression& binaryExpression = dynamic_cast<const BinaryExpression&>(ast);
00007 
00008         Expression::operator=(ast);
00009         this->leftExpression = binaryExpression.leftExpression ? dynamic_cast<Expression*>(&(binaryExpression.leftExpression->clone())) : 0;
00010         this->rightExpression = binaryExpression.rightExpression ? dynamic_cast<Expression*>(&(binaryExpression.rightExpression->clone())) : 0;
00011         this->op = binaryExpression.op;
00012 
00013         return *(this);
00014 }
00015 
00016 bool BinaryExpression::operator == (const Ast& ast) const {
00017         bool result = false;
00018         const BinaryExpression& binaryExpression = dynamic_cast<const BinaryExpression&>(ast);
00019 
00020         if (typeid(ast) != typeid(BinaryExpression))
00021                 return false;
00022 
00023         if (this->leftExpression && this->rightExpression)
00024                 result = (*(this->leftExpression) == *(binaryExpression.leftExpression)) &&
00025                          (*(this->rightExpression) == *(binaryExpression.rightExpression));
00026 
00027         return result && (this->op == binaryExpression.op) && Expression::operator==(ast);
00028 }
00029 

Generated on Mon Dec 1 17:36:37 2003 for Protomake by doxygen1.3