12#include <initializer_list>
31 :
DataSpace(std::vector<size_t>(items)) {}
33template <
typename... Args>
35 :
DataSpace(std::vector<size_t>{dim1,
static_cast<size_t>(dims)...}) {}
37template <
class IT,
typename>
39 std::vector<hsize_t> real_dims(begin, end);
41 if ((
_hid = H5Screate_simple(
int(real_dims.size()), real_dims.data(), NULL)) < 0) {
47 if (dims.size() != maxdims.size()) {
51 std::vector<hsize_t> real_dims(dims.begin(), dims.end());
52 std::vector<hsize_t> real_maxdims(maxdims.begin(), maxdims.end());
55 std::replace(real_maxdims.begin(),
60 if ((
_hid = H5Screate_simple(
int(dims.size()), real_dims.data(), real_maxdims.data())) < 0) {
66 H5S_class_t h5_dataspace_type;
69 h5_dataspace_type = H5S_SCALAR;
72 h5_dataspace_type = H5S_NULL;
76 "Invalid dataspace type: should be "
77 "dataspace_scalar or dataspace_null");
80 if ((
_hid = H5Screate(h5_dataspace_type)) < 0) {
87 if ((res.
_hid = H5Scopy(
_hid)) < 0) {
94 const int ndim = H5Sget_simple_extent_ndims(
_hid);
97 "Unable to get dataspace number of dimensions");
105 if (H5Sget_simple_extent_dims(
_hid, dims.data(), NULL) < 0) {
109 return details::to_vector_size_t(std::move(dims));
114 return std::accumulate(dims.begin(), dims.end(),
size_t{1u}, std::multiplies<size_t>());
119 if (H5Sget_simple_extent_dims(
_hid, NULL, maxdims.data()) < 0) {
123 std::replace(maxdims.begin(),
127 return details::to_vector_size_t(maxdims);
132 auto dims = details::inspector<T>::getDimensions(value);
136template <std::
size_t N, std::
size_t W
idth>
144inline bool checkDimensions(
const DataSpace& mem_space,
size_t n_dim_requested) {
145 return checkDimensions(mem_space.
getDimensions(), n_dim_requested);
Exception specific to HighFive DataSpace interface.
Definition H5Exception.hpp:112
Class representing the space (dimensions) of a dataset.
Definition H5DataSpace.hpp:25
static DataSpace FromCharArrayStrings(const char(&)[N][Width])
Definition H5Dataspace_misc.hpp:137
static DataSpace From(const T &value)
Create a dataspace matching a type accepted by details::inspector.
Definition H5Dataspace_misc.hpp:131
size_t getNumberDimensions() const
getNumberDimensions
Definition H5Dataspace_misc.hpp:93
std::vector< size_t > getMaxDimensions() const
getMaxDimensions
Definition H5Dataspace_misc.hpp:117
DataspaceType
dataspace type
Definition H5DataSpace.hpp:32
@ dataspace_scalar
Definition H5DataSpace.hpp:33
@ dataspace_null
Definition H5DataSpace.hpp:34
size_t getElementCount() const
getElementCount
Definition H5Dataspace_misc.hpp:112
std::vector< size_t > getDimensions() const
getDimensions
Definition H5Dataspace_misc.hpp:102
DataSpace clone() const
Definition H5Dataspace_misc.hpp:85
static const size_t UNLIMITED
Definition H5DataSpace.hpp:29
hid_t _hid
Definition H5Object.hpp:105
Definition H5_definitions.hpp:15
static void ToException(const std::string &prefix_msg)
Definition H5Exception_misc.hpp:42