HighFive  2.3.1
HighFive - Header-only C++ HDF5 interface
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"
30 #include "bits/H5_definitions.hpp"
31 
32 namespace HighFive {
33 
37 class 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
132 #include "bits/H5Dataspace_misc.hpp"
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