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

multiplearrayreference.h

Go to the documentation of this file.
00001 #ifndef MULTIPLE_ARRAY_REFERENCE_H
00002 #define MULTIPLE_ARRAY_REFERENCE_H
00003 
00004 #include "arrayreference.h"
00005 #include "expression.h"
00006 
00007 class MultipleArrayReference : public ArrayReference {
00008         private:
00009                 ArrayReference *arrayReference;
00010                 Expression *expression;
00011 
00012         public:
00013                 MultipleArrayReference(SrcPosition *position, ArrayReference *arrayReference, Expression *expression)
00014                                 : ArrayReference(position), Ast(position), arrayReference(arrayReference), expression(expression) {}
00015 
00016                 MultipleArrayReference(const MultipleArrayReference& multipleArrayReference) : ArrayReference(multipleArrayReference.position), Ast(position) {
00017                         *(this) = multipleArrayReference;
00018                 }
00019 
00020                 virtual ~MultipleArrayReference() {
00021                         delete this->arrayReference;
00022                         delete this->expression;
00023                 }
00024 
00025                 ArrayReference *getArrayReference() {
00026                         return this->arrayReference;
00027                 }
00028 
00029                 Expression *getExpression() {
00030                         return this->expression;
00031                 }
00032 
00033                 virtual Ast& operator = (const Ast& ast);
00034                 virtual bool operator == (const Ast& ast) const;
00035 
00036                 virtual VisitorReturn *visit(Visitor& visitor) {
00037                         return visitor.visitMultipleArrayReference(this);
00038                 }
00039 
00040                 virtual Ast& clone() const {
00041                         return *(new MultipleArrayReference(new SrcPosition(*(this->position)),
00042                                          this->arrayReference ? dynamic_cast<ArrayReference*>(&(this->arrayReference->clone())) : 0,
00043                                          this->expression ? dynamic_cast<Expression*>(&(this->expression->clone())) : 0));
00044                 }
00045 };
00046 
00047 #endif

Generated on Mon Dec 1 17:00:23 2003 for Protomake by doxygen1.3