9#ifndef vtkHDFReaderImplementation_h
10#define vtkHDFReaderImplementation_h
21VTK_ABI_NAMESPACE_BEGIN
66 const std::array<int, 2>&
GetVersion() {
return this->Version; }
71 bool GetAttribute(
const char* attributeName,
size_t numberOfElements, T* value);
75 bool HasAttribute(
const char* groupName,
const char* attributeName);
108 int attributeType,
const char* name,
const std::vector<hsize_t>& fileExtent);
122 std::vector<vtkIdType>
GetMetadata(
const char* name, hsize_t size, hsize_t offset = 0);
218 unsigned int level,
int attributeType,
const std::string& name, hsize_t& offset);
267 std::string FileName;
273 std::array<hid_t, 3> AttributeDataGroup;
276 std::array<int, 2> Version;
283 struct AMRBlocksInformation
285 std::vector<int> BlocksPerLevel;
286 std::vector<vtkIdType> BlockOffsetsPerLevel;
287 std::map<std::string, std::vector<vtkIdType>> CellOffsetsPerLevel;
288 std::map<std::string, std::vector<vtkIdType>> PointOffsetsPerLevel;
292 this->BlocksPerLevel.clear();
293 this->BlockOffsetsPerLevel.clear();
294 this->PointOffsetsPerLevel.clear();
295 this->CellOffsetsPerLevel.clear();
299 AMRBlocksInformation AMRInformation;
301 bool ReadLevelSpacing(
hid_t levelGroupID,
double* spacing);
302 bool ReadAMRBoxRawValues(
303 hid_t levelGroupID, std::vector<int>& amrBoxRawData,
int level,
bool isTemporalData);
304 bool ReadLevelTopology(
unsigned int level,
const std::string& levelGroupName,
Abstract superclass for all arrays.
dynamic, self-adjusting array of bits
Store on/off settings for data arrays, etc.
hierarchical representation to use with vtkPartitionedDataSetCollection
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()
bool HasDataset(const char *datasetName)
Return true if the dataset exists in the specified group root group.
bool OpenGroupAsVTKGroup(const std::string &groupPath)
Open a sub group of the current file and consider it as the new root file.
bool IsPathSoftLink(const std::string &path)
Return true if current root path is a soft link.
const std::array< int, 2 > & GetVersion()
Returns the version of the VTK HDF implementation.
unsigned int GetAMRNumberOfLevels()
Specific public API for AMR support.
Implementation(vtkHDFReader *reader)
bool GetAMRTemporalOffsetForAttributeType(unsigned int level, int attributeType, const std::string &name, hsize_t &offset)
Get the temporal offset for a specific attribute Return true if the offset arg was set,...
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.
bool Open(vtkResourceStream *stream)
Opens this VTK HDF stream and checks if it is valid.
vtkSmartPointer< vtkDataObject > GetNewDataSet(int dataSetType, int numPieces)
Create a new dataset given its type and the number of pieces.
bool HasAttribute(const char *groupName, const char *attributeName)
Return true if the attribute exists in the specified group.
vtkHDFReader * GetReader()
Return the reader this impl is associated to.
vtkAbstractArray * NewFieldArray(const char *name, vtkIdType offset=-1, vtkIdType size=-1, vtkIdType dimMaxSize=-1)
Reads and returns a new vtkDataArray.
bool ReadHyperTreeGridMetaInfo(vtkHyperTreeGrid *htg)
Read HTG meta-information stored in attributes.
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.
std::array< vtkIdType, 2 > GetFieldArraySize(vtkIdType step, std::string name)
Return the field array size (components, tuples) for the current step.
bool CreateHyperTreeGridCellArrays(vtkHyperTreeGrid *htg, std::vector< vtkSmartPointer< vtkAbstractArray > > &cellArrays, const vtkDataArraySelection *arraySelection, vtkIdType cellCount)
Initialize selected Cell arrays for HyperTreeGrid.
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.
bool ReadHyperTreeGridData(vtkHyperTreeGrid *htg, const vtkDataArraySelection *arraySelection, vtkIdType cellOffset, vtkIdType treeIdsOffset, vtkIdType depthOffset, vtkIdType descriptorOffset, vtkIdType maskOffset, vtkIdType partOffset, vtkIdType verticesPerDepthOffset, vtkIdType depthLimit, vtkIdType step)
Read data and build the HyperTreeGrid from descriptors, mask information and cell data array in the f...
bool FillAssembly(vtkDataAssembly *data)
Fills the given Assembly with the content of the opened HDF file.
vtkDataArray * GetStepValues(hid_t group)
Read the values of the steps from the open file.
bool AppendCellDataForHyperTree(std::vector< vtkSmartPointer< vtkAbstractArray > > &cellArrays, vtkIdType cellOffset, vtkIdType inputCellOffset, vtkIdType step, vtkIdType readableTreeSize)
Read & add cell data for the tree currently processed.
bool ReadAMRTopology(vtkOverlappingAMR *data, double origin[3], bool isTemporalData)
Read the AMR topology based on offset data on AMRBlocks.
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 RetrieveHDFInformation(const std::string &rootName, const std::string &groupPrefix="")
Initialize meta information of the implementation based on root name specified.
bool GetImageAttributes(int WholeExtent[6], double Origin[3], double Spacing[3])
Retrieve ImageData attributes and store them.
std::size_t GetNumberOfSteps()
Read the number of steps from the opened file.
bool ReadHyperTreeGridDimensions(vtkHyperTreeGrid *htg)
Read HTG dimensions and coordinates.
bool FillAssembly(vtkDataAssembly *data, hid_t assemblyHandle, int assemblyID, std::string path)
Fills the given Assembly with the content of the opened HDF file.
bool ComputeAMROffsetsPerLevels(vtkDataArraySelection *dataArraySelection[3], vtkIdType step, unsigned int nLevels)
Retrieve offset for AMRBox, point/cell/field arrays for each level.
bool AppendMaskForHyperTree(vtkHyperTreeGrid *htg, vtkIdType inputCellOffset, vtkIdType maskOffset, vtkIdType readableTreeSize)
Read & add mask data for the current tree.
std::vector< std::string > GetOrderedChildrenOfGroup(const std::string &path)
Return the name of all children of an HDF group given its path.
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.
bool ComputeAMRBlocksPerLevels(unsigned int nLevels)
Retrieve for each required level AMRBlocks size and position.
bool Open(const char *fileName)
Opens this VTK HDF file and checks if it is valid.
A dataset containing a grid of vtkHyperTree instances arranged as a rectilinear grid.
vtkResourceStream implementation for memory input.
Allocate and hold a VTK object.
a multi-resolution dataset based on vtkCartesianGrid allowing overlaps
Abstract class used for custom streams.
Hold a reference to a vtkObjectBase instance.
a vtkAbstractArray subclass for strings