------------------------------------------------------------------------------
| 726 | |
| 727 | //------------------------------------------------------------------------------ |
| 728 | bool vtkHDFWriter::Implementation::AddArrayToDataset( |
| 729 | hid_t dataset, vtkAbstractArray* dataArray, int trim) |
| 730 | { |
| 731 | if (dataArray == nullptr) |
| 732 | { |
| 733 | return true; |
| 734 | } |
| 735 | |
| 736 | if (dataset == -1) |
| 737 | { |
| 738 | return false; |
| 739 | } |
| 740 | |
| 741 | if (dataArray->GetNumberOfValues() == 0) |
| 742 | { |
| 743 | return true; |
| 744 | } |
| 745 | |
| 746 | hid_t source_type = |
| 747 | dataArray ? vtkHDFUtilities::getH5TypeFromVtkType(dataArray->GetDataType()) : H5T_STD_I64LE; |
| 748 | if (source_type == H5I_INVALID_HID) |
| 749 | { |
| 750 | return H5I_INVALID_HID; |
| 751 | } |
| 752 | |
| 753 | // Create dataspace from array |
| 754 | vtkHDF::ScopedH5SHandle dataspace = this->CreateDataspaceFromArray(dataArray); |
| 755 | if (dataspace == H5I_INVALID_HID) |
| 756 | { |
| 757 | return H5I_INVALID_HID; |
| 758 | } |
| 759 | |
| 760 | // Recover dataspace |
| 761 | vtkHDF::ScopedH5SHandle currentDataspace = H5Dget_space(dataset); |
| 762 | if (currentDataspace == H5I_INVALID_HID) |
| 763 | { |
| 764 | return false; |
| 765 | } |
| 766 | |
| 767 | // Retrieve current dataspace dimensions |
| 768 | const int nComp = dataArray ? dataArray->GetNumberOfComponents() : 0; |
| 769 | const vtkIdType nTuples = dataArray ? dataArray->GetNumberOfTuples() : 0; |
| 770 | const int numDim = nComp == 1 ? 1 : 2; |
| 771 | |
| 772 | std::vector<hsize_t> addedDims{ (hsize_t)nTuples }; |
| 773 | std::vector<hsize_t> currentdims(numDim, 0); |
| 774 | if (numDim == 2) |
| 775 | { |
| 776 | addedDims.emplace_back(nComp); |
| 777 | } |
| 778 | |
| 779 | H5Sget_simple_extent_dims(currentDataspace, currentdims.data(), nullptr); |
| 780 | std::vector<hsize_t> newdims = { currentdims[0] + addedDims[0] }; |
| 781 | if (numDim == 2) |
| 782 | { |
| 783 | newdims.emplace_back(currentdims[1]); |
| 784 | |
| 785 | if (currentdims[1] != addedDims[1]) |
no test coverage detected