-
Thomas Witkowski authoredThomas Witkowski authored
ElementData.cc 1.55 KiB
#include "MemoryManager.h"
#include "ElementData.h"
namespace AMDiS {
void ElementData::coarsenElementData(Element* parent,
Element* thisChild,
Element* otherChild,
int elTypeParent)
{
if (decorated_) {
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;
}
}
}