#include #include int main(int argc, char ** argv) { std::cout << "Starting... " << std::endl; short data[3008]; auto size = sizeof(data) / sizeof(data[0]); uint64_t elements_written = 0; H5::DataType data_t(H5::PredType::NATIVE_INT16); H5::H5File hdf_file_handle("test.h5", H5F_ACC_TRUNC); { hsize_t chunk_dims[1] = { 3008 }; hid_t properties = H5Pcreate(H5P_DATASET_CREATE); H5Pset_chunk(properties, 1, chunk_dims); hsize_t dims_value[1]; dims_value[0] = 0; hsize_t max_dims[1]; max_dims[0] = H5S_UNLIMITED; H5Pset_deflate(properties, 1); auto grp = hdf_file_handle.openGroup("/"); // Add a new dataset H5::DataSpace d_space(1, dims_value, max_dims); H5::DataSet d_set = grp.createDataSet("data", data_t, d_space, properties); } while (true) { auto grp = hdf_file_handle.openGroup("/"); for (size_t i = 0; i < 100; ++i) { H5::DataSet d = grp.openDataSet("data"); hsize_t dims_value[1]; d.getSpace().getSimpleExtentDims(dims_value); dims_value[0] = dims_value[0] + size; d.extend(dims_value); H5::DataSpace d2 = d.getSpace(); d2.selectNone(); hsize_t select_dim[1]; select_dim[0] = dims_value[0] - size; hsize_t count_dim[1]; count_dim[0] = size; d2.selectHyperslab(H5S_SELECT_SET, count_dim, select_dim); hsize_t mdims[1]; mdims[0] = size; hsize_t max_dims[1]; max_dims[0] = size; H5::DataSpace dmem(1, mdims, max_dims); d.write(data, data_t, dmem, d2); elements_written += size; } std::cout << "Written " << elements_written << " elements." << std::endl; } return 0; }