HighFive 2.9.0
HighFive - Header-only C++ HDF5 interface
Loading...
Searching...
No Matches
H5DataSpace.hpp
Go to the documentation of this file.
1/*
2 * Copyright (c), 2017, Adrien Devresse <adrien.devresse@epfl.ch>
3 *
4 * Distributed under the Boost Software License, Version 1.0.
5 * (See accompanying file LICENSE_1_0.txt or copy at
6 * http://www.boost.org/LICENSE_1_0.txt)
7 *
8 */
9#pragma once
10
11#include <vector>
12#include <array>
13#include <cstdint>
14#include <type_traits>
15#include <initializer_list>
16
17#include "H5Object.hpp"
19
20namespace HighFive {
21
31class DataSpace: public Object {
32 public:
34
41 static const size_t UNLIMITED = SIZE_MAX;
42
51 // simple dataspace are handle directly from their dimensions
52 };
53
62 explicit DataSpace(const std::vector<size_t>& dims);
63
72 template <size_t N>
73 explicit DataSpace(const std::array<size_t, N>& dims);
74
83 DataSpace(const std::initializer_list<size_t>& dims);
84
94 template <typename... Args>
95 explicit DataSpace(size_t dim1, Args... dims);
96
108 // Attention: Explicitly disable DataSpace(int_like, int_like) from trying
109 // to use this constructor
110 template <typename IT,
111 typename = typename std::enable_if<!std::is_integral<IT>::value, IT>::type>
112 DataSpace(const IT begin, const IT end);
113
126 explicit DataSpace(const std::vector<size_t>& dims, const std::vector<size_t>& maxdims);
127
146 explicit DataSpace(DataspaceType space_type);
147
155 static DataSpace Scalar();
156
164 static DataSpace Null();
165
174 DataSpace clone() const;
175
182 size_t getNumberDimensions() const;
183
197 std::vector<size_t> getDimensions() const;
198
206 size_t getElementCount() const;
207
220 std::vector<size_t> getMaxDimensions() const;
221
235 template <typename T>
236 static DataSpace From(const T& value);
237
247 template <std::size_t N, std::size_t Width>
248 static DataSpace FromCharArrayStrings(const char (&string_array)[N][Width]);
249
250 protected:
251 DataSpace() = default;
252
253 friend class Attribute;
254 friend class File;
255 friend class DataSet;
256};
257
258} // namespace HighFive
259
260// We include bits right away since DataSpace is user-constructible
Class representing an Attribute of a DataSet or Group.
Definition H5Attribute.hpp:46
Class representing a dataset.
Definition H5DataSet.hpp:30
Class representing the space (dimensions) of a DataSet.
Definition H5DataSpace.hpp:31
static DataSpace FromCharArrayStrings(const char(&string_array)[N][Width])
Create a DataSpace from a value of type string array.
Definition H5Dataspace_misc.hpp:128
static const ObjectType type
Definition H5DataSpace.hpp:33
static DataSpace From(const T &value)
Automatically deduce the DataSpace from a container/value.
Definition H5Dataspace_misc.hpp:122
size_t getNumberDimensions() const
Returns the number of dimensions of a DataSpace.
Definition H5Dataspace_misc.hpp:94
std::vector< size_t > getMaxDimensions() const
Returns the maximum size of the dataset in each dimension.
Definition H5Dataspace_misc.hpp:110
DataspaceType
An enum to create scalar and null DataSpace with DataSpace::DataSpace(DataspaceType dtype).
Definition H5DataSpace.hpp:48
@ dataspace_scalar
Value to create scalar DataSpace.
Definition H5DataSpace.hpp:49
@ dataspace_null
Value to create null DataSpace.
Definition H5DataSpace.hpp:50
static DataSpace Scalar()
Create a scalar DataSpace.
Definition H5Dataspace_misc.hpp:45
size_t getElementCount() const
Return the number of elements in this DataSpace.
Definition H5Dataspace_misc.hpp:106
std::vector< size_t > getDimensions() const
Returns the size of the dataset in each dimension.
Definition H5Dataspace_misc.hpp:98
DataSpace clone() const
Create a copy of the DataSpace which will have different id.
Definition H5Dataspace_misc.hpp:88
static DataSpace Null()
Create a null DataSpace.
Definition H5Dataspace_misc.hpp:49
static const size_t UNLIMITED
Magic value to specify that a DataSpace can grow without limit.
Definition H5DataSpace.hpp:41
File class.
Definition H5File.hpp:24
Definition H5Object.hpp:54
Definition H5_definitions.hpp:22
ObjectType
Enum of the types of objects (H5O api)
Definition H5Object.hpp:24