Commit 250eac6b authored by Ken Leiter (Civ's avatar Ken Leiter (Civ

ENH: Add XdmfAttributeCenter to XdmfAttribute to specify how the attribute...

ENH: Add XdmfAttributeCenter to XdmfAttribute to specify how the attribute values are attached to the grid.
parent ab806f9f
......@@ -106,8 +106,11 @@ class XdmfAttributePtr(_object):
def getName(self): return _Xdmf.XdmfAttributePtr_getName(self)
def setName(self, *args): return _Xdmf.XdmfAttributePtr_setName(self, *args)
def getAttributeType(self): return _Xdmf.XdmfAttributePtr_getAttributeType(self)
def getAttributeTypeAsString(self): return _Xdmf.XdmfAttributePtr_getAttributeTypeAsString(self)
def setAttributeType(self, *args): return _Xdmf.XdmfAttributePtr_setAttributeType(self, *args)
def getAttributeTypeAsString(self): return _Xdmf.XdmfAttributePtr_getAttributeTypeAsString(self)
def getAttributeCenter(self): return _Xdmf.XdmfAttributePtr_getAttributeCenter(self)
def setAttributeCenter(self, *args): return _Xdmf.XdmfAttributePtr_setAttributeCenter(self, *args)
def getAttributeCenterAsString(self): return _Xdmf.XdmfAttributePtr_getAttributeCenterAsString(self)
def write(self, *args): return _Xdmf.XdmfAttributePtr_write(self, *args)
def printSelf(self): return _Xdmf.XdmfAttributePtr_printSelf(self)
XdmfAttributePtr_swigregister = _Xdmf.XdmfAttributePtr_swigregister
......@@ -287,6 +290,54 @@ def XdmfVisitor_New():
return _Xdmf.XdmfVisitor_New()
XdmfVisitor_New = _Xdmf.XdmfVisitor_New
class XdmfAttributeCenter(_object):
__swig_setmethods__ = {}
__setattr__ = lambda self, name, value: _swig_setattr(self, XdmfAttributeCenter, name, value)
__swig_getmethods__ = {}
__getattr__ = lambda self, name: _swig_getattr(self, XdmfAttributeCenter, name)
__repr__ = _swig_repr
__swig_getmethods__["Grid"] = lambda x: _Xdmf.XdmfAttributeCenter_Grid
if _newclass:Grid = staticmethod(_Xdmf.XdmfAttributeCenter_Grid)
__swig_getmethods__["Cell"] = lambda x: _Xdmf.XdmfAttributeCenter_Cell
if _newclass:Cell = staticmethod(_Xdmf.XdmfAttributeCenter_Cell)
__swig_getmethods__["Face"] = lambda x: _Xdmf.XdmfAttributeCenter_Face
if _newclass:Face = staticmethod(_Xdmf.XdmfAttributeCenter_Face)
__swig_getmethods__["Edge"] = lambda x: _Xdmf.XdmfAttributeCenter_Edge
if _newclass:Edge = staticmethod(_Xdmf.XdmfAttributeCenter_Edge)
__swig_getmethods__["Node"] = lambda x: _Xdmf.XdmfAttributeCenter_Node
if _newclass:Node = staticmethod(_Xdmf.XdmfAttributeCenter_Node)
def getName(self): return _Xdmf.XdmfAttributeCenter_getName(self)
def __eq__(self, *args): return _Xdmf.XdmfAttributeCenter___eq__(self, *args)
def __ne__(self, *args): return _Xdmf.XdmfAttributeCenter___ne__(self, *args)
def __init__(self, *args):
this = _Xdmf.new_XdmfAttributeCenter(*args)
try: self.this.append(this)
except: self.this = this
__swig_destroy__ = _Xdmf.delete_XdmfAttributeCenter
__del__ = lambda self : None;
XdmfAttributeCenter_swigregister = _Xdmf.XdmfAttributeCenter_swigregister
XdmfAttributeCenter_swigregister(XdmfAttributeCenter)
def XdmfAttributeCenter_Grid():
return _Xdmf.XdmfAttributeCenter_Grid()
XdmfAttributeCenter_Grid = _Xdmf.XdmfAttributeCenter_Grid
def XdmfAttributeCenter_Cell():
return _Xdmf.XdmfAttributeCenter_Cell()
XdmfAttributeCenter_Cell = _Xdmf.XdmfAttributeCenter_Cell
def XdmfAttributeCenter_Face():
return _Xdmf.XdmfAttributeCenter_Face()
XdmfAttributeCenter_Face = _Xdmf.XdmfAttributeCenter_Face
def XdmfAttributeCenter_Edge():
return _Xdmf.XdmfAttributeCenter_Edge()
XdmfAttributeCenter_Edge = _Xdmf.XdmfAttributeCenter_Edge
def XdmfAttributeCenter_Node():
return _Xdmf.XdmfAttributeCenter_Node()
XdmfAttributeCenter_Node = _Xdmf.XdmfAttributeCenter_Node
class XdmfAttributeType(_object):
__swig_setmethods__ = {}
__setattr__ = lambda self, name, value: _swig_setattr(self, XdmfAttributeType, name, value)
......@@ -361,8 +412,11 @@ class XdmfAttribute(XdmfItem):
def getName(self): return _Xdmf.XdmfAttribute_getName(self)
def setName(self, *args): return _Xdmf.XdmfAttribute_setName(self, *args)
def getAttributeType(self): return _Xdmf.XdmfAttribute_getAttributeType(self)
def getAttributeTypeAsString(self): return _Xdmf.XdmfAttribute_getAttributeTypeAsString(self)
def setAttributeType(self, *args): return _Xdmf.XdmfAttribute_setAttributeType(self, *args)
def getAttributeTypeAsString(self): return _Xdmf.XdmfAttribute_getAttributeTypeAsString(self)
def getAttributeCenter(self): return _Xdmf.XdmfAttribute_getAttributeCenter(self)
def setAttributeCenter(self, *args): return _Xdmf.XdmfAttribute_setAttributeCenter(self, *args)
def getAttributeCenterAsString(self): return _Xdmf.XdmfAttribute_getAttributeCenterAsString(self)
def write(self, *args): return _Xdmf.XdmfAttribute_write(self, *args)
def printSelf(self): return _Xdmf.XdmfAttribute_printSelf(self)
XdmfAttribute_swigregister = _Xdmf.XdmfAttribute_swigregister
......
......@@ -8,31 +8,82 @@
#include "XdmfAttribute.hpp"
#include "XdmfVisitor.hpp"
// Supported XdmfAttribut
XdmfAttributeCenter XdmfAttributeCenter::Grid()
{
return XdmfAttributeCenter("Grid");
}
XdmfAttributeCenter XdmfAttributeCenter::Cell()
{
return XdmfAttributeCenter("Cell");
}
XdmfAttributeCenter XdmfAttributeCenter::Face()
{
return XdmfAttributeCenter("Face");
}
XdmfAttributeCenter XdmfAttributeCenter::Edge()
{
return XdmfAttributeCenter("Edge");
}
XdmfAttributeCenter XdmfAttributeCenter::Node()
{
return XdmfAttributeCenter("Node");
}
XdmfAttributeCenter::XdmfAttributeCenter(const XdmfAttributeCenter& attributeCenter):
mName(attributeCenter.mName)
{
}
XdmfAttributeCenter& XdmfAttributeCenter::operator=(const XdmfAttributeCenter& attributeCenter)
{
if(this != &attributeCenter)
{
mName = attributeCenter.mName;
}
return *this;
}
std::string XdmfAttributeCenter::getName() const
{
return mName;
}
// Supported XdmfAttributeTypes
XdmfAttributeType XdmfAttributeType::NoAttributeType()
{
return XdmfAttributeType("None");
}
XdmfAttributeType XdmfAttributeType::Scalar()
{
return XdmfAttributeType("Scalar");
}
XdmfAttributeType XdmfAttributeType::Vector()
{
return XdmfAttributeType("Vector");
}
XdmfAttributeType XdmfAttributeType::Tensor()
{
return XdmfAttributeType("Tensor");
}
XdmfAttributeType XdmfAttributeType::Matrix()
{
return XdmfAttributeType("Matrix");
}
XdmfAttributeType XdmfAttributeType::Tensor6()
{
return XdmfAttributeType("Tensor6");
}
XdmfAttributeType XdmfAttributeType::GlobalId()
{
return XdmfAttributeType("GlobalId");
......@@ -58,7 +109,9 @@ std::string XdmfAttributeType::getName() const
}
XdmfAttribute::XdmfAttribute() :
mAttributeType(XdmfAttributeType::NoAttributeType())
mName(""),
mAttributeType(XdmfAttributeType::NoAttributeType()),
mAttributeCenter(XdmfAttributeCenter::Grid())
{
std::cout << "Created Attribute " << this << std::endl;
}
......@@ -73,14 +126,29 @@ XdmfAttributeType XdmfAttribute::getAttributeType() const
return mAttributeType;
}
void XdmfAttribute::setAttributeType(const XdmfAttributeType& attributeType)
{
mAttributeType = attributeType;
}
std::string XdmfAttribute::getAttributeTypeAsString() const
{
return mAttributeType.getName();
}
void XdmfAttribute::setAttributeType(const XdmfAttributeType& attributeType)
XdmfAttributeCenter XdmfAttribute::getAttributeCenter() const
{
mAttributeType = attributeType;
return mAttributeCenter;
}
void XdmfAttribute::setAttributeCenter(const XdmfAttributeCenter& attributeCenter)
{
mAttributeCenter = attributeCenter;
}
std::string XdmfAttribute::getAttributeCenterAsString() const
{
return mAttributeCenter.getName();
}
std::string XdmfAttribute::getName() const
......
......@@ -10,6 +10,64 @@
#include "XdmfItem.hpp"
class XdmfAttributeCenter {
public:
// Supported Xdmf Attribute Centers
static XdmfAttributeCenter Grid();
static XdmfAttributeCenter Cell();
static XdmfAttributeCenter Face();
static XdmfAttributeCenter Edge();
static XdmfAttributeCenter Node();
/**
* Get the name of this center type
*
* @return a string containing the name.
*/
std::string getName() const;
/*
* Compare two XdmfAttributeCenters for equality.
*
* @param an XdmfAttributeCenter to compare equality to.
* @return true iff the XdmfAttributeCenters are equal.
*/
bool operator==(const XdmfAttributeCenter& attributeCenter) const
{
return mName.compare(attributeCenter.mName) == 0;
}
/**
* Compare two XdmfAttributeCenters for inequality.
*
* @param XdmfAttributeCenter to compare inequality to.
* @return true iff the XdmfAttributeCenters are not equal.
*/
bool operator!=(const XdmfAttributeCenter& attributeCenter) const
{
return !this->operator==(attributeCenter);
}
XdmfAttributeCenter(const XdmfAttributeCenter&);
XdmfAttributeCenter& operator=(const XdmfAttributeCenter&);
protected:
/**
* Protected constructor for XdmfAttributeCenter. The constructor is protected because all attribute centers supported
* by Xdmf should be accessed through more specific static methods that construct XdmfAttributeCenters - i.e. XdmfAttributeCenter::Node().
*/
XdmfAttributeCenter(const std::string& name) :
mName(name)
{};
private:
std::string mName;
};
class XdmfAttributeType {
public:
......@@ -97,6 +155,13 @@ public:
*/
XdmfAttributeType getAttributeType() const;
/**
* Set the XdmfAttributeType associated with this Attribute.
*
* @param XdmfAttributeType to set.
*/
void setAttributeType(const XdmfAttributeType&);
/**
* Get the name of the AttributeType associated with this Attribute.
*
......@@ -105,11 +170,25 @@ public:
std::string getAttributeTypeAsString() const;
/**
* Set the XdmfAttributeType associated with this Attribute.
* Get the XdmfAttributeCenter associated with this Attribute.
*
* @param XdmfAttributeType to set.
* @return XdmfAttributeCenter.
*/
void setAttributeType(const XdmfAttributeType&);
XdmfAttributeCenter getAttributeCenter() const;
/**
* Set the XdmfAttributeCenter associated with this Attribute.
*
* @param XdmfAttributeCenter to set.
*/
void setAttributeCenter(const XdmfAttributeCenter&);
/**
* Get the name of the AttributeCenter associated with this Attribute.
*
* @return std::string containing name of the AttributeCenter.
*/
std::string getAttributeCenterAsString() const;
void write(boost::shared_ptr<XdmfVisitor> visitor) const;
......@@ -127,6 +206,7 @@ private:
std::string mName;
XdmfAttributeType mAttributeType;
XdmfAttributeCenter mAttributeCenter;
};
......
This diff is collapsed.
......@@ -23,7 +23,7 @@ XdmfVisitor::~XdmfVisitor()
void XdmfVisitor::visit(const XdmfAttribute * const attribute)
{
xmlData << std::setw(mTabIndex) << "" << "<Attribute> Name=\"" << attribute->getName() << "\" AttributeType=\"" << attribute->getAttributeTypeAsString() << "\" Center=\"Node\">\n";
xmlData << std::setw(mTabIndex) << "" << "<Attribute> Name=\"" << attribute->getName() << "\" AttributeType=\"" << attribute->getAttributeTypeAsString() << "\" Center=\"" << attribute->getAttributeCenterAsString() << "\">\n";
xmlData << std::setw(mTabIndex) << "" << "</Attribute>\n";
}
......
......@@ -6,16 +6,6 @@
int main(int argc, char* argv[])
{
boost::shared_ptr<XdmfVisitor> visitor = XdmfVisitor::New();
boost::shared_ptr<XdmfTopology> top = XdmfTopology::New();
top->write(visitor);
std::cout << visitor->printSelf() << std::endl;
boost::shared_ptr<XdmfVisitor> visitor2 = XdmfVisitor::New();
boost::shared_ptr<XdmfGeometry> geom = XdmfGeometry::New();
geom->write(visitor2);
std::cout << visitor2->printSelf() << std::endl;
boost::shared_ptr<XdmfVisitor> visitor3 = XdmfVisitor::New();
boost::shared_ptr<XdmfGrid> grid = XdmfGrid::New();
grid->setName("test");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment