23 #ifndef DATACONTAINER_HPP 24 #define DATACONTAINER_HPP 28 #include "splash/DCException.hpp" 29 #include "splash/Dimensions.hpp" 30 #include "splash/domains/DomainData.hpp" 60 for (std::vector<DomainData* >::iterator iter = subdomains.begin();
61 iter != subdomains.end(); ++iter)
76 throw DCException(
"Entry in DataContainer must not be NULL.");
79 throw DCException(
"Data in entry in DataContainer must not be NULL.");
84 for (uint32_t i = 0; i < DSP_DIM_MAX; ++i)
86 if (subdomains.empty())
87 offset[i] = entryOffset[i];
89 offset[i] = std::min(entryOffset[i], offset[i]);
90 size[i] = std::max(entryBack[i] + 1 - offset[i], size[i]);
93 subdomains.push_back(entry);
103 return subdomains.size();
113 size_t num_elements = 0;
115 for (std::vector<DomainData* >::const_iterator iter = subdomains.begin();
116 iter != subdomains.end(); ++iter)
118 num_elements += (*iter)->getElements().getScalarSize();
163 if (subdomains.size() > index)
164 return subdomains[index];
166 throw DCException(
"Invalid index in DataContainer");
178 return subdomains[x];
180 throw DCException(
"Invalid entry in DataContainer (1)");
192 if (x < size[0] && y < size[1])
193 return subdomains[y * size[0] + x];
195 throw DCException(
"Invalid entry in DataContainer (2)");
208 if (x < size[0] && y < size[1] && z < size[2])
209 return subdomains[z * size[0] * size[1] + y * size[0] + x];
211 throw DCException(
"Invalid entry in DataContainer (3)");
223 if (subdomains.size() == 0)
228 for (
size_t i = 0; i < subdomains.size(); ++i)
233 if (elements + subdomain_elements > index)
236 size_t local_index = index - elements;
238 assert(subdomain->
getData() != NULL);
239 if (subdomain->
getData() == NULL)
242 return (((uint8_t*) (subdomain->
getData())) + (type_size * local_index));
244 elements += subdomain_elements;
251 std::vector<DomainData* > subdomains;
Dimensions getOffset() const
Dimensions getBack() const
size_t getScalarSize() const
DomainData * getIndex(size_t index)
void add(DomainData *entry)
void * getElement(size_t index)
Dimensions getBack() const
Dimensions & getElements()
Dimensions getSize() const
size_t getNumSubdomains()