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

BinaryExpression Class Reference

#include <binaryexpression.h>

Inheritance diagram for BinaryExpression:

Inheritance graph
[legend]
Collaboration diagram for BinaryExpression:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 BinaryExpression (SrcPosition *position, Expression *expression1, Expression *expression2, string op)
 BinaryExpression (const BinaryExpression &binaryExpression)
virtual ~BinaryExpression ()
ExpressiongetLeftExpression ()
ExpressiongetRightExpression ()
string getOp () const
virtual Astoperator= (const Ast &ast)
virtual bool operator== (const Ast &ast) const
virtual VisitorReturnvisit (Visitor &visitor)
virtual Astclone () const

Private Attributes

ExpressionleftExpression
ExpressionrightExpression
string op

Constructor & Destructor Documentation

BinaryExpression::BinaryExpression SrcPosition position,
Expression expression1,
Expression expression2,
string  op
[inline]
 

Definition at line 16 of file binaryexpression.h.

Referenced by clone().

00017                                 : Expression(position), Ast(position), leftExpression(expression1), rightExpression(expression2), op(op) {}

BinaryExpression::BinaryExpression const BinaryExpression &  binaryExpression  )  [inline]
 

Definition at line 19 of file binaryexpression.h.

References Ast::position.

00019                                                                            : Expression(binaryExpression.position), Ast(position) {
00020                         *(this) = binaryExpression;
00021                 }

virtual BinaryExpression::~BinaryExpression  )  [inline, virtual]
 

Definition at line 23 of file binaryexpression.h.

00023                                             {
00024                         delete this->leftExpression;
00025                         delete this->rightExpression;
00026                 }


Member Function Documentation

virtual Ast& BinaryExpression::clone  )  const [inline, virtual]
 

Implements Ast.

Definition at line 48 of file binaryexpression.h.

References BinaryExpression(), and Ast::clone().

00048                                            {
00049                         return *(new BinaryExpression(new SrcPosition(*(this->position)),
00050                                          this->leftExpression ? dynamic_cast<Expression*>(&(this->leftExpression->clone())) : 0,
00051                                          this->rightExpression ? dynamic_cast<Expression*>(&(this->rightExpression->clone())) : 0,
00052                                          this->op));
00053                 }

Expression* BinaryExpression::getLeftExpression  )  [inline]
 

Definition at line 29 of file binaryexpression.h.

Referenced by TypeCheckerVisitor::visitBinaryExpression().

00029                                                 {
00030                         return this->leftExpression;
00031                 }

string BinaryExpression::getOp  )  const [inline]
 

Definition at line 37 of file binaryexpression.h.

Referenced by TypeCheckerVisitor::visitBinaryExpression().

00037                                      {
00038                         return this->op;
00039                 }

Expression* BinaryExpression::getRightExpression  )  [inline]
 

Definition at line 33 of file binaryexpression.h.

Referenced by TypeCheckerVisitor::visitBinaryExpression().

00033                                                  {
00034                         return this->rightExpression;
00035                 }

Ast & BinaryExpression::operator= const Ast ast  )  [virtual]
 

Reimplemented from Expression.

Definition at line 5 of file binaryexpression.cpp.

References Ast::clone(), leftExpression, op, Expression::operator=(), and rightExpression.

00005                                                  {
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 }

bool BinaryExpression::operator== const Ast ast  )  const [virtual]
 

Reimplemented from Expression.

Definition at line 16 of file binaryexpression.cpp.

References leftExpression, op, Expression::operator==(), and rightExpression.

00016                                                         {
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 }

virtual VisitorReturn* BinaryExpression::visit Visitor visitor  )  [inline, virtual]
 

Implements Ast.

Definition at line 44 of file binaryexpression.h.

References Visitor::visitBinaryExpression().

00044                                                                {
00045                         return visitor.visitBinaryExpression(this);
00046                 }


Member Data Documentation

Expression* BinaryExpression::leftExpression [private]
 

Definition at line 11 of file binaryexpression.h.

Referenced by operator=(), and operator==().

string BinaryExpression::op [private]
 

Definition at line 13 of file binaryexpression.h.

Referenced by operator=(), and operator==().

Expression* BinaryExpression::rightExpression [private]
 

Definition at line 12 of file binaryexpression.h.

Referenced by operator=(), and operator==().


The documentation for this class was generated from the following files:
Generated on Mon Dec 1 17:38:58 2003 for Protomake by doxygen1.3