XdmfAttributeType.cpp 2.87 KB
Newer Older
1
/*
2
 * XdmfAttributeType.cpp
3 4 5 6 7 8 9 10
 *
 *  Created on: Jan 29, 2010
 *      Author: kleiter
 */

#include "XdmfAttributeType.hpp"

// Supported XdmfAttributeTypes
11
boost::shared_ptr<const XdmfAttributeType> XdmfAttributeType::NoAttributeType()
12
{
13 14
	static boost::shared_ptr<const XdmfAttributeType> p(new XdmfAttributeType("None"));
	return p;
15 16
}

17
boost::shared_ptr<const XdmfAttributeType> XdmfAttributeType::Scalar()
18
{
19 20
	static boost::shared_ptr<const XdmfAttributeType> p(new XdmfAttributeType("Scalar"));
	return p;
21 22
}

23
boost::shared_ptr<const XdmfAttributeType> XdmfAttributeType::Vector()
24
{
25 26
	static boost::shared_ptr<const XdmfAttributeType> p(new XdmfAttributeType("Vector"));
	return p;
27 28
}

29
boost::shared_ptr<const XdmfAttributeType> XdmfAttributeType::Tensor()
30
{
31 32
	static boost::shared_ptr<const XdmfAttributeType> p(new XdmfAttributeType("Tensor"));
	return p;
33 34
}

35
boost::shared_ptr<const XdmfAttributeType> XdmfAttributeType::Matrix()
36
{
37 38
	static boost::shared_ptr<const XdmfAttributeType> p(new XdmfAttributeType("Matrix"));
	return p;
39 40
}

41
boost::shared_ptr<const XdmfAttributeType> XdmfAttributeType::Tensor6()
42
{
43 44
	static boost::shared_ptr<const XdmfAttributeType> p(new XdmfAttributeType("Tensor6"));
	return p;
45 46
}

47
boost::shared_ptr<const XdmfAttributeType> XdmfAttributeType::GlobalId()
48
{
49 50
	static boost::shared_ptr<const XdmfAttributeType> p(new XdmfAttributeType("GlobalId"));
	return p;
51 52
}

53
XdmfAttributeType::XdmfAttributeType(const std::string & name) :
54
	mName(name)
55
{
56
	std::cout << "CRRRRREATED" << std::endl;
57
}
58

59
XdmfAttributeType::~XdmfAttributeType()
60
{
61
	std::cout << "DEEEELETED" << std::endl;
62 63
}

64
boost::shared_ptr<const XdmfAttributeType> XdmfAttributeType::New(const std::map<std::string, std::string> & itemProperties)
65
{
66 67 68 69 70
	std::map<std::string, std::string>::const_iterator type = itemProperties.find("Type");
	if(type == itemProperties.end())
	{
		type = itemProperties.find("AttributeType");
	}
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
	if(type != itemProperties.end())
	{
		const std::string typeVal = type->second;
		if(typeVal.compare("None") == 0)
		{
			return NoAttributeType();
		}
		else if(typeVal.compare("Scalar") == 0)
		{
			return Scalar();
		}
		else if(typeVal.compare("Vector") == 0)
		{
			return Vector();
		}
		else if(typeVal.compare("Tensor") == 0)
		{
			return Tensor();
		}
		else if(typeVal.compare("Matrix") == 0)
		{
			return Matrix();
		}
		else if(typeVal.compare("Tensor6") == 0)
		{
			return Tensor6();
		}
		else if(typeVal.compare("GlobalId") == 0)
		{
			return GlobalId();
		}
		else
		{
			assert(false);
		}
	}
	assert(false);
}

110
bool XdmfAttributeType::operator==(const XdmfAttributeType & attributeType) const
111 112 113 114
{
	return mName.compare(attributeType.mName) == 0;
}

115
bool XdmfAttributeType::operator!=(const XdmfAttributeType & attributeType) const
116 117 118 119
{
	return !this->operator==(attributeType);
}

120 121
void XdmfAttributeType::getProperties(std::map<std::string, std::string> & collectedProperties) const
{
122
	collectedProperties["Type"] = mName;
123
}