46 my_data_ptr(std::move(data_ptr)),
47 my_full_length(length),
49 assert(my_data_ptr->getSpace().getSimpleExtentNdims() == 1);
51 const auto& plist = my_data_ptr->getCreatePlist();
52 if (plist.getLayout() == H5D_CHUNKED) {
53 plist.getChunk(1, &output);
57 output = sanisizer::min(length, 10000);
61 my_mspace(1, &my_block_size),
62 my_fspace(1, &my_full_length)
65 const auto cls = my_data_ptr->getDataType().getClass();
66 return cls == H5T_INTEGER || cls == H5T_FLOAT;
88 hsize_t
load(Type_* buffer) {
89 static_assert(std::is_arithmetic<Type_>::value);
91 my_last_loaded += my_available;
92 my_available = std::min(my_full_length - my_last_loaded, my_block_size);
93 if (my_available == 0) {
97 constexpr hsize_t zero = 0;
98 my_mspace.selectHyperslab(H5S_SELECT_SET, &my_available, &zero);
99 my_fspace.selectHyperslab(H5S_SELECT_SET, &my_available, &my_last_loaded);
123 static_assert(std::is_base_of<H5::DataSet, I<
decltype(*my_data_ptr)> >::value);