HighFive 2.3.1
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#ifndef H5DATASPACE_HPP
10#define H5DATASPACE_HPP
11
12#include <vector>
13#include <array>
14#include <cstdint>
15#include <type_traits>
16#include <initializer_list>
17
18#ifdef H5_USE_BOOST
19// starting Boost 1.64, serialization header must come before ublas
20#include <boost/serialization/vector.hpp>
21#include <boost/multi_array.hpp>
22#include <boost/numeric/ublas/matrix.hpp>
23#endif
24
25#ifdef H5_USE_EIGEN
26#include <Eigen/Eigen>
27#endif
28
29#include "H5Object.hpp"
31
32namespace HighFive {
33
37class DataSpace : public Object {
38 public:
39
41
42 static const size_t UNLIMITED = SIZE_MAX;
43
48 // simple dataspace are handle directly from their dimensions
49 };
50
56 explicit DataSpace(const std::vector<size_t>& dims);
57
58 // create a dataspace of N-dimensions
59 template <size_t N>
60 explicit DataSpace(const std::array<size_t, N>& dims);
61
65 DataSpace(const std::initializer_list<size_t>& items);
66
69 template<typename... Args>
70 explicit DataSpace(size_t dim1, Args... dims);
71
75 template <typename IT, typename = typename std::enable_if<!std::is_integral<IT>::value,IT>::type>
76 DataSpace(const IT begin,
77 const IT end);
78
82 explicit DataSpace(const std::vector<size_t>& dims,
83 const std::vector<size_t>& maxdims);
84
88 explicit DataSpace(DataspaceType dtype);
89
92 DataSpace clone() const;
93
98 size_t getNumberDimensions() const;
99
103 std::vector<size_t> getDimensions() const;
104
107 size_t getElementCount() const;
108
112 std::vector<size_t> getMaxDimensions() const;
113
115 template <typename T>
116 static DataSpace From(const T& value);
117
118 template <std::size_t N, std::size_t Width>
119 static DataSpace FromCharArrayStrings(const char(&)[N][Width]);
120
121 protected:
122 DataSpace() = default;
123
124 friend class Attribute;
125 friend class File;
126 friend class DataSet;
127};
128
129} // namespace HighFive
130
131// We include bits right away since DataSpace is user-constructible
133
134#endif // H5DATASPACE_HPP
Class representing an attribute of a dataset or group.
Definition H5Attribute.hpp:25
Class representing a dataset.
Definition H5DataSet.hpp:31
Class representing the space (dimensions) of a dataset.
Definition H5DataSpace.hpp:37
static DataSpace FromCharArrayStrings(const char(&)[N][Width])
Definition H5Dataspace_misc.hpp:139
static const ObjectType type
Definition H5DataSpace.hpp:40
static DataSpace From(const T &value)
Create a dataspace matching a type accepted by details::inspector.
Definition H5Dataspace_misc.hpp:133
size_t getNumberDimensions() const
getNumberDimensions
Definition H5Dataspace_misc.hpp:94
std::vector< size_t > getMaxDimensions() const
getMaxDimensions
Definition H5Dataspace_misc.hpp:120
DataspaceType
dataspace type
Definition H5DataSpace.hpp:45
@ datascape_null
Definition H5DataSpace.hpp:47
@ datascape_scalar
Definition H5DataSpace.hpp:46
size_t getElementCount() const
getElementCount
Definition H5Dataspace_misc.hpp:114
std::vector< size_t > getDimensions() const
getDimensions
Definition H5Dataspace_misc.hpp:103
DataSpace clone() const
Definition H5Dataspace_misc.hpp:86
static const size_t UNLIMITED
Definition H5DataSpace.hpp:42
File class.
Definition H5File.hpp:26
Definition H5Object.hpp:36
Definition H5_definitions.hpp:15
ObjectType
Enum of the types of objects (H5O api)
Definition H5Object.hpp:25