20 #ifndef vtkXdmfReaderInternal_h
21 #define vtkXdmfReaderInternal_h
23 #ifndef VTK_WRAPPING_CXX
37 #include "vtk_xdmf2.h"
38 #include VTKXDMF2_HEADER(XdmfArray.h)
39 #include VTKXDMF2_HEADER(XdmfAttribute.h)
40 #include VTKXDMF2_HEADER(XdmfDOM.h)
42 #include VTKXDMF2_HEADER(XdmfDataDesc.h)
44 #include VTKXDMF2_HEADER(XdmfDataItem.h)
45 #include VTKXDMF2_HEADER(XdmfGrid.h)
47 #include VTKXDMF2_HEADER(XdmfTopology.h)
49 #include VTKXDMF2_HEADER(XdmfGeometry.h)
51 #include VTKXDMF2_HEADER(XdmfTime.h)
53 #include VTKXDMF2_HEADER(XdmfSet.h)
63 #include <vtksys/SystemTools.hxx>
76 bool Parse(
const char* xmffilename);
77 bool ParseString(
const char* xmfdata,
size_t length);
84 const std::vector<std::string>&
GetDomains() {
return this->Domains; }
92 bool SetActiveDomain(
const char* domainname);
93 bool SetActiveDomain(
int index);
113 void UpdateDomains();
116 int ActiveDomainIndex;
117 xdmf2::XdmfDOM XMLDOM;
119 std::vector<std::string> Domains;
121 char* LastReadContents;
122 size_t LastReadContentsLength;
133 vtkXdmfArraySelection::const_iterator iter = other.begin();
134 for (; iter != other.end(); ++iter)
136 (*this)[iter->first] = iter->second;
144 vtkXdmfArraySelection::iterator iter = this->find(
name);
145 if (iter != this->end())
156 vtkXdmfArraySelection::iterator iter = this->find(
name);
157 return (iter != this->end());
167 for (vtkXdmfArraySelection::iterator iter = this->begin(); iter != this->end(); ++iter)
172 return iter->first.c_str();
186 XdmfInt64 NumberOfGrids;
187 xdmf2::XdmfGrid* XMFGrids;
189 XdmfXmlNode XMLDomain;
190 xdmf2::XdmfDOM* XMLDOM;
192 unsigned int GridsOverflowCounter;
195 std::map<std::string, vtkIdType> GridCenteredAttrbuteRoots;
196 std::map<vtkIdType, std::map<XdmfInt64, vtkIdType> > GridCenteredAttrbuteValues;
204 std::map<XdmfFloat64, int> TimeSteps;
206 std::map<int, XdmfFloat64> TimeStepsRev;
219 bool IsValid() {
return (this->XMLDomain != 0); }
234 xdmf2::XdmfGrid* GetGrid(XdmfInt64 cc);
243 int GetVTKDataType();
249 const std::map<XdmfFloat64, int>&
GetTimeSteps() {
return this->TimeSteps; }
256 int GetIndexForTime(
double time);
265 std::map<int, XdmfFloat64>::iterator iter = this->TimeStepsRev.find(
index);
266 return (iter != this->TimeStepsRev.end()) ? iter->second : 0.0;
275 xdmf2::XdmfGrid* GetGrid(xdmf2::XdmfGrid* xmfGrid,
double time);
281 bool IsStructured(xdmf2::XdmfGrid*);
289 bool GetWholeExtent(xdmf2::XdmfGrid*,
int extents[6]);
297 bool GetOriginAndSpacing(xdmf2::XdmfGrid*,
double origin[3],
double spacing[3]);
304 int GetVTKDataType(xdmf2::XdmfGrid* xmfGrid);
308 static int GetDataDimensionality(xdmf2::XdmfGrid* xmfGrid);
326 void CollectMetaData();
329 void CollectMetaData(xdmf2::XdmfGrid* xmfGrid,
vtkIdType silParent);
332 void CollectNonLeafMetaData(xdmf2::XdmfGrid* xmfGrid,
vtkIdType silParent);
335 void CollectLeafMetaData(xdmf2::XdmfGrid* xmfGrid,
vtkIdType silParent);
342 bool UpdateGridAttributeInSIL(xdmf2::XdmfAttribute* xmfAttribute,
vtkIdType gridSILId);