Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

celx::AssignmentExpression Class Reference

#include <expression.h>

Inheritance diagram for celx::AssignmentExpression:

Inheritance graph
Collaboration diagram for celx::AssignmentExpression:

Collaboration graph
List of all members.

Public Member Functions

 AssignmentExpression (Expression *, Expression *)
virtual Value eval (ExecutionContext &)
virtual bool isLValue () const
virtual Valueleval (ExecutionContext &)
virtual ~AssignmentExpression ()

Private Attributes

Expressionleft
Expressionright

Constructor & Destructor Documentation

AssignmentExpression::AssignmentExpression Expression ,
Expression
 

Definition at line 169 of file expression.cpp.

00170                                                                :
00171     left(_left), right(_right)
00172 {
00173 }

AssignmentExpression::~AssignmentExpression  )  [virtual]
 

Definition at line 175 of file expression.cpp.

References left, and right.

00176 {
00177     delete left;
00178     delete right;
00179 }


Member Function Documentation

Value AssignmentExpression::eval ExecutionContext  )  [virtual]
 

Implements celx::Expression.

Definition at line 186 of file expression.cpp.

References celx::Expression::eval(), left, celx::Expression::leval(), and right.

00187 {
00188     Value* v = left->leval(context);
00189     if (v == NULL)
00190     {
00191         context.runtimeError();
00192         return Value();
00193     }
00194 
00195     *v = right->eval(context);
00196 
00197     return *v;
00198 }

bool AssignmentExpression::isLValue  )  const [virtual]
 

Reimplemented from celx::Expression.

Definition at line 181 of file expression.cpp.

00182 {
00183     return true;
00184 }

Value * AssignmentExpression::leval ExecutionContext  )  [virtual]
 

Reimplemented from celx::Expression.

Definition at line 200 of file expression.cpp.

References celx::Expression::eval(), left, celx::Expression::leval(), and right.

00201 {
00202     Value* v = left->leval(context);
00203     if (v == NULL)
00204     {
00205         context.runtimeError();
00206         return NULL;
00207     }
00208 
00209     *v = right->eval(context);
00210 
00211     return v;
00212 }


Member Data Documentation

Expression* celx::AssignmentExpression::left [private]
 

Definition at line 121 of file expression.h.

Referenced by eval(), leval(), and ~AssignmentExpression().

Expression* celx::AssignmentExpression::right [private]
 

Definition at line 122 of file expression.h.

Referenced by eval(), leval(), and ~AssignmentExpression().


The documentation for this class was generated from the following files:
Generated on Sat Jan 14 22:33:44 2006 for Celestia by  doxygen 1.4.1