MCPcopy Create free account
hub / github.com/Kitware/VTK / CreateDataArray

Method CreateDataArray

IO/ERF/vtkHDF5Helper.cxx:109–230  ·  view source on GitHub ↗

----------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

107
108//----------------------------------------------------------------------------
109vtkAbstractArray* vtkHDF5Helper::CreateDataArray(const hid_t& fileId, const std::string& pathName)
110{
111 vtkSmartPointer<vtkAbstractArray> dataArray;
112
113 if (!vtkHDF5Helper::ArrayExists(fileId, pathName.c_str()))
114 {
115 vtkWarningWithObjectMacro(nullptr, "Array name '" << pathName << "' isn't available.");
116 return nullptr;
117 }
118
119 vtkHDF::ScopedH5DHandle arrayId = H5Dopen(fileId, pathName.c_str());
120 if (arrayId < 0)
121 {
122 vtkWarningWithObjectMacro(nullptr, "No array named " << pathName << " available");
123 return nullptr;
124 }
125
126 hsize_t length = vtkHDF5Helper::GetDataLength(arrayId);
127 if (length <= 0)
128 {
129 return nullptr;
130 }
131
132 std::vector<hsize_t> dims = vtkHDF5Helper::GetDataDimensions(arrayId);
133 if (dims.size() > 2)
134 {
135 vtkWarningWithObjectMacro(nullptr, "Only 1D or 2D array are supported.");
136 return nullptr;
137 }
138
139 // Now the type
140 hid_t rawType = H5Dget_type(arrayId);
141 hid_t dataType = H5Tget_native_type(rawType, H5T_DIR_ASCEND);
142
143 if (H5Tequal(dataType, H5T_NATIVE_INT))
144 {
145 dataArray = vtkIntArray::New();
146 dataArray->SetNumberOfTuples(dims[0]);
147 if (dims.size() == 2)
148 {
149 dataArray->SetNumberOfComponents(dims[1]);
150 dataArray->SetNumberOfTuples(dims[0]);
151 }
152
153 int* arrayPtr = static_cast<int*>(vtkArrayDownCast<vtkIntArray>(dataArray)->GetPointer(0));
154 H5Dread(arrayId, dataType, H5S_ALL, H5S_ALL, H5P_DEFAULT, arrayPtr);
155 }
156 else if (H5Tequal(dataType, H5T_NATIVE_FLOAT))
157 {
158 dataArray = vtkFloatArray::New();
159 dataArray->SetNumberOfTuples(dims[0]);
160 if (dims.size() == 2)
161 {
162 dataArray->SetNumberOfComponents(dims[1]);
163 dataArray->SetNumberOfTuples(dims[0]);
164 }
165 else
166 {

Callers 1

create_vtk_arrayFunction · 0.45

Calls 14

ArrayExistsFunction · 0.85
GetDataLengthFunction · 0.85
H5Dget_typeFunction · 0.85
H5Tget_native_typeFunction · 0.85
NewFunction · 0.50
CreateDataArrayFunction · 0.50
c_strMethod · 0.45
sizeMethod · 0.45
SetNumberOfTuplesMethod · 0.45
SetNumberOfComponentsMethod · 0.45
GetPointerMethod · 0.45

Tested by

no test coverage detected