9#ifndef vtkHDFReaderImplementation_h
10#define vtkHDFReaderImplementation_h
19VTK_ABI_NAMESPACE_BEGIN
49 const std::array<int, 2>&
GetVersion() {
return this->Version; }
54 bool GetAttribute(
const char* attributeName,
size_t numberOfElements, T* value);
59 bool GetAttribute(hid_t group,
const char* attributeName,
size_t numberOfElements, T* value);
84 int attributeType,
const char* name,
const std::vector<hsize_t>& fileExtent);
97 std::vector<vtkIdType>
GetMetadata(
const char* name, hsize_t size, hsize_t offset = 0);
145 :
Class(H5T_NO_CLASS)
147 ,
Sign(H5T_SGN_ERROR)
162 hid_t
OpenDataSet(hid_t group,
const char* name, hid_t* nativeType, std::vector<hsize_t>& dims);
167 template <
typename T>
174 template <
typename T>
191 hid_t group,
const char* name,
const std::vector<hsize_t>& fileExtent);
193 const std::vector<hsize_t>& fileExtent);
194 template <
typename T>
196 hid_t dataset,
const std::vector<hsize_t>& fileExtent, hsize_t numberOfComponents);
197 template <
typename T>
199 hid_t dataset,
const std::vector<hsize_t>& fileExtent, hsize_t numberOfComponents, T* data);
213 std::string FileName;
217 std::array<hid_t, 3> AttributeDataGroup;
220 std::array<int, 2> Version;
223 const std::vector<hsize_t>& fileExtent, hsize_t numberOfComponents);
224 std::map<TypeDescription, ArrayReader> TypeReaderMap;
226 bool ReadDataSetType();
232 bool ComputeAMRBlocksPerLevels(std::vector<int>& levels);
233 bool ReadLevelSpacing(hid_t levelGroupID,
double* spacing);
234 bool ReadAMRBoxRawValues(hid_t levelGroupID, std::vector<int>& amrBoxRawData);
235 bool ReadLevelTopology(
unsigned int level,
const std::string& levelGroupName,
237 bool ReadLevelData(
unsigned int level,
const std::string& levelGroupName,
vtkOverlappingAMR* data,
Abstract superclass for all arrays.
Store on/off settings for data arrays, etc.
abstract superclass for arrays of numeric data
Implementation for the vtkHDFReader.
vtkDataArray * NewMetadataArray(const char *name, hsize_t offset, hsize_t size)
Reads a 1D metadata array in a DataArray or a vector of vtkIdType.
bool GetPartitionExtent(hsize_t partitionIndex, int *extent)
For an ImageData, sets the extent for 'partitionIndex'.
virtual ~Implementation()
TypeDescription GetTypeDescription(hid_t type)
Associates a struc of three integers with HDF type.
const std::array< int, 2 > & GetVersion()
Returns the version of the VTK HDF implementation.
bool Open(VTK_FILEPATH const char *fileName)
Opens this VTK HDF file and checks if it is valid.
Implementation(vtkHDFReader *reader)
vtkDataArray * NewArray(int attributeType, const char *name, const std::vector< hsize_t > &fileExtent)
Reads and returns a new vtkDataArray.
vtkIdType GetArrayOffset(vtkIdType step, int attributeType, std::string name)
Methods to query for array offsets when steps are present.
std::vector< hsize_t > GetDimensions(const char *dataset)
Returns the dimensions of a HDF dataset.
vtkDataArray * NewArrayForGroup(hid_t dataset, hid_t nativeType, const std::vector< hsize_t > &dims, const std::vector< hsize_t > &fileExtent)
Reads a vtkDataArray of type T from the attributeType, dataset The array has type 'T' and 'numberOfCo...
hid_t OpenDataSet(hid_t group, const char *name, hid_t *nativeType, std::vector< hsize_t > &dims)
Opens the hdf5 dataset given the 'group' and 'name'.
std::vector< std::string > GetArrayNames(int attributeType)
Returns the names of arrays for 'attributeType' (point or cell).
vtkDataArray * GetStepValues()
Read the values of the steps from the open file.
void BuildTypeReaderMap()
Builds a map between native types and GetArray routines for that type.
int GetDataSetType()
Type of vtkDataSet stored by the HDF file, such as VTK_IMAGE_DATA or VTK_UNSTRUCTURED_GRID,...
int GetNumberOfPieces(vtkIdType step=-1)
Returns the number of partitions for this dataset at the time step step if applicable.
vtkDataArray * GetStepValues(hid_t group)
Read the values of the steps from the open file.
bool GetAttribute(hid_t group, const char *attributeName, size_t numberOfElements, T *value)
Reads an attribute from the group passed to it.
bool FillAMR(vtkOverlappingAMR *data, unsigned int maximumLevelsToReadByDefault, double origin[3], vtkDataArraySelection *dataArraySelection[3])
Fills the given AMR data with the content of the opened HDF file.
void Close()
Closes the VTK HDF file and releases any allocated resources.
bool GetAttribute(const char *attributeName, size_t numberOfElements, T *value)
Reads an attribute from the /VTKHDF group.
bool NewArray(hid_t dataset, const std::vector< hsize_t > &fileExtent, hsize_t numberOfComponents, T *data)
Reads a vtkDataArray of type T from the attributeType, dataset The array has type 'T' and 'numberOfCo...
vtkDataArray * NewVtkDataArray()
Create a vtkDataArray based on the C++ template type T.
std::size_t GetNumberOfSteps(hid_t group)
Read the number of steps from the opened file.
std::size_t GetNumberOfSteps()
Read the number of steps from the opened file.
vtkDataArray * NewArray(hid_t dataset, const std::vector< hsize_t > &fileExtent, hsize_t numberOfComponents)
Reads a vtkDataArray of type T from the attributeType, dataset The array has type 'T' and 'numberOfCo...
vtkStringArray * NewStringArray(hid_t dataset, hsize_t size)
Reads a vtkDataArray of type T from the attributeType, dataset The array has type 'T' and 'numberOfCo...
hid_t TemplateTypeToHdfNativeType()
Convert C++ template type T to HDF5 native type this can be constexpr in C++17 standard.
vtkDataArray * NewArrayForGroup(hid_t group, const char *name, const std::vector< hsize_t > &fileExtent)
Reads a vtkDataArray of type T from the attributeType, dataset The array has type 'T' and 'numberOfCo...
vtkAbstractArray * NewFieldArray(const char *name, vtkIdType offset=-1, vtkIdType size=-1)
Reads and returns a new vtkDataArray.
std::vector< vtkIdType > GetMetadata(const char *name, hsize_t size, hsize_t offset=0)
Reads a 1D metadata array in a DataArray or a vector of vtkIdType.
vtkDataArray * NewArray(int attributeType, const char *name, hsize_t offset, hsize_t size)
Reads and returns a new vtkDataArray.
hierarchical dataset of vtkUniformGrids
a vtkAbstractArray subclass for strings
Used to store HDF native types in a map.
bool operator<(const TypeDescription &other) const