/*****************************************************************************/ /* XDMF */ /* eXtensible Data Model and Format */ /* */ /* Id : XdmfAttributeCenter.cpp */ /* */ /* Author: */ /* Kenneth Leiter */ /* kenneth.leiter@arl.army.mil */ /* US Army Research Laboratory */ /* Aberdeen Proving Ground, MD */ /* */ /* Copyright @ 2011 US Army Research Laboratory */ /* All Rights Reserved */ /* See Copyright.txt for details */ /* */ /* This software is distributed WITHOUT ANY WARRANTY; without */ /* even the implied warranty of MERCHANTABILITY or FITNESS */ /* FOR A PARTICULAR PURPOSE. See the above copyright notice */ /* for more information. */ /* */ /*****************************************************************************/ #include #include "XdmfAttributeCenter.hpp" #include "XdmfError.hpp" // Supported XdmfAttributeCenters shared_ptr XdmfAttributeCenter::Grid() { static shared_ptr p(new XdmfAttributeCenter("Grid")); return p; } shared_ptr XdmfAttributeCenter::Cell() { static shared_ptr p(new XdmfAttributeCenter("Cell")); return p; } shared_ptr XdmfAttributeCenter::Face() { static shared_ptr p(new XdmfAttributeCenter("Face")); return p; } shared_ptr XdmfAttributeCenter::Edge() { static shared_ptr p(new XdmfAttributeCenter("Edge")); return p; } shared_ptr XdmfAttributeCenter::Node() { static shared_ptr p(new XdmfAttributeCenter("Node")); return p; } XdmfAttributeCenter::XdmfAttributeCenter(const std::string & name) : mName(name) { } XdmfAttributeCenter::~XdmfAttributeCenter() { } shared_ptr XdmfAttributeCenter::New(const std::map & itemProperties) { std::map::const_iterator center = itemProperties.find("Center"); if(center == itemProperties.end()) { try { XdmfError::message(XdmfError::FATAL, "'Center' not found in itemProperties in " "XdmfAttributeCenter::New"); } catch (XdmfError e) { throw e; } } const std::string & centerVal = center->second; if(centerVal.compare("Node") == 0) { return Node(); } else if(centerVal.compare("Cell") == 0) { return Cell(); } else if(centerVal.compare("Grid") == 0) { return Grid(); } else if(centerVal.compare("Face") == 0) { return Face(); } else if(centerVal.compare("Edge") == 0) { return Edge(); } try { XdmfError::message(XdmfError::FATAL, "Center not of 'Grid','Cell','Face','Edge','Node' " "in XdmfAttributeCenter::New"); } catch (XdmfError e) { throw e; } return shared_ptr(); } void XdmfAttributeCenter::getProperties(std::map & collectedProperties) const { collectedProperties.insert(std::make_pair("Center", mName)); }