XdmfGridCollection.cpp 2.5 KB
Newer Older
1
2
3
4
5
6
7
8
/*
 * XdmfGridCollection.cpp
 *
 *  Created on: Jan 25, 2010
 *      Author: kleiter
 */

#include "XdmfGridCollection.hpp"
9
#include "XdmfGridCollectionType.hpp"
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

XdmfGridCollection::XdmfGridCollection() :
	mCollectionType(XdmfGridCollectionType::NoCollectionType())
{
	mName = "Collection";
	std::cout << "Created Collection " << this << std::endl;
}

XdmfGridCollection::~XdmfGridCollection()
{
  std::cout << "Deleted Collection " << this << std::endl;
}

std::string XdmfGridCollection::ItemTag = "Grid";

boost::shared_ptr<XdmfGrid> XdmfGridCollection::getGrid(unsigned int index)
{
	if(index >= mGrids.size())
	{
		assert(false);
	}
	return mGrids[index];
}

boost::shared_ptr<const XdmfGrid> XdmfGridCollection::getGrid(unsigned int index) const
{
	if(index >= mGrids.size())
	{
		assert(false);
	}
	return mGrids[index];
}

43
boost::shared_ptr<const XdmfGridCollectionType> XdmfGridCollection::getGridCollectionType() const
44
45
46
47
48
49
50
51
52
{
	return mCollectionType;
}

std::map<std::string, std::string> XdmfGridCollection::getItemProperties() const
{
	std::map<std::string, std::string> collectionProperties;
	collectionProperties["Name"] = mName;
	collectionProperties["GridType"] = "Collection";
53
	mCollectionType->getProperties(collectionProperties);
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
	return collectionProperties;
}

unsigned int XdmfGridCollection::getNumberOfGrids() const
{
	return mGrids.size();
}

void XdmfGridCollection::insert(boost::shared_ptr<XdmfGrid> grid)
{
	mGrids.push_back(grid);
}

void XdmfGridCollection::populateItem(const std::map<std::string, std::string> & itemProperties, std::vector<boost::shared_ptr<XdmfItem> > & childItems)
{
69
	mCollectionType = XdmfGridCollectionType::New(itemProperties);
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
	for(std::vector<boost::shared_ptr<XdmfItem> >::const_iterator iter = childItems.begin(); iter != childItems.end(); ++iter)
	{
		if(boost::shared_ptr<XdmfGrid> grid = boost::shared_dynamic_cast<XdmfGrid>(*iter))
		{
			this->insert(grid);
		}
		else
		{
			assert(false);
		}
	}
	XdmfGrid::populateItem(itemProperties, childItems);
}

void XdmfGridCollection::removeGrid(const unsigned int index)
{
	if(index >= mGrids.size())
	{
		assert(false);
	}
	mGrids.erase(mGrids.begin() + index);
}

93
void XdmfGridCollection::setGridCollectionType(const boost::shared_ptr<const XdmfGridCollectionType> collectionType)
94
95
96
97
{
	mCollectionType = collectionType;
}

98
void XdmfGridCollection::traverse(boost::shared_ptr<XdmfBaseVisitor> visitor)
99
100
101
102
103
104
{
	for(std::vector<boost::shared_ptr<XdmfGrid> >::const_iterator iter = mGrids.begin(); iter != mGrids.end(); ++iter)
	{
		(*iter)->accept(visitor);
	}
}