#include "ElementData.h" #include "PartitionElementData.h" namespace AMDiS { void ElementData::coarsenElementData(Element* parent, Element* thisChild, Element* otherChild, int elTypeParent) { if (decorated) { PartitionElementData* ped = NULL; ped = dynamic_cast<PartitionElementData*>(thisChild->getElementData(PARTITION_ED)); ped = NULL; ped = dynamic_cast<PartitionElementData*>(otherChild->getElementData(PARTITION_ED)); ped = NULL; ped = dynamic_cast<PartitionElementData*> (parent->getElementData(PARTITION_ED)); decorated->coarsenElementData(parent, thisChild, otherChild, elTypeParent); delete decorated; decorated = NULL; } } bool ElementData::deleteDecorated(int typeID) { if (decorated) { if (decorated->isOfType(typeID)) { ElementData *tmp = decorated; decorated = decorated->decorated; delete tmp; tmp = NULL; return true; } else { return decorated->deleteDecorated(typeID); } } return false; } void ElementData::deleteDecorated() { if (decorated) { decorated->deleteDecorated(); delete decorated; } } ElementData::~ElementData() { } void ElementData::serialize(std::ostream& out) { std::string decoratedType; if (decorated) { decoratedType = decorated->getTypeName(); out << decoratedType << "\n"; decorated->serialize(out); } else { out << "NULL\n"; } } void ElementData::deserialize(std::istream& in) { TEST_EXIT(decorated == NULL) ("there are already decorated element data\n"); std::string decoratedType; in >> decoratedType; in.get(); if (decoratedType != "NULL") { decorated = CreatorMap<ElementData>::getCreator(decoratedType)->create(); decorated->deserialize(in); } else { decorated = NULL; } } }