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