HDF5 C++ API  1.10.1
 All Classes Namespaces Functions Variables Typedefs Friends Pages
H5DataSpace.h
1 // C++ informative line for the emacs editor: -*- C++ -*-
2 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
3  * Copyright by The HDF Group. *
4  * Copyright by the Board of Trustees of the University of Illinois. *
5  * All rights reserved. *
6  * *
7  * This file is part of HDF5. The full HDF5 copyright notice, including *
8  * terms governing use, modification, and redistribution, is contained in *
9  * the COPYING file, which can be found at the root of the source code *
10  * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
11  * If you do not have access to either file, you may request a copy from *
12  * help@hdfgroup.org. *
13  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
14 
15 #ifndef __H5DataSpace_H
16 #define __H5DataSpace_H
17 
18 namespace H5 {
19 
24 class H5_DLLCPP DataSpace : public IdComponent {
25  public:
27  static const DataSpace& ALL;
28 
29  // Creates a dataspace object given the space type
30  DataSpace(H5S_class_t type = H5S_SCALAR);
31 
32  // Creates a simple dataspace
33  DataSpace(int rank, const hsize_t * dims, const hsize_t * maxdims = NULL);
34 
35  // Creates a DataSpace object using an existing dataspace id.
36  DataSpace(const hid_t space_id);
37 
38  // Copy constructor: makes a copy of the original DataSpace object.
39  DataSpace(const DataSpace& original);
40 
41  // Assignment operator
42  DataSpace& operator=(const DataSpace& rhs);
43 
44  // Closes this dataspace.
45  virtual void close();
46 
47  // Makes copy of an existing dataspace.
48  void copy(const DataSpace& like_space);
49 
50  // Copies the extent of this dataspace.
51  void extentCopy(const DataSpace& dest_space) const;
52  // removed from 1.8.18 and 1.10.1
53  //void extentCopy(DataSpace& dest_space) const;
54 
55  // Gets the bounding box containing the current selection.
56  void getSelectBounds(hsize_t* start, hsize_t* end) const;
57 
58  // Gets the number of element points in the current selection.
59  hssize_t getSelectElemNpoints() const;
60 
61  // Retrieves the list of element points currently selected.
62  void getSelectElemPointlist(hsize_t startpoint, hsize_t numpoints, hsize_t *buf) const;
63 
64  // Gets the list of hyperslab blocks currently selected.
65  void getSelectHyperBlocklist(hsize_t startblock, hsize_t numblocks, hsize_t *buf) const;
66 
67  // Get number of hyperslab blocks.
68  hssize_t getSelectHyperNblocks() const;
69 
70  // Gets the number of elements in this dataspace selection.
71  hssize_t getSelectNpoints() const;
72 
73  // Retrieves dataspace dimension size and maximum size.
74  int getSimpleExtentDims(hsize_t *dims, hsize_t *maxdims = NULL) const;
75 
76  // Gets the dimensionality of this dataspace.
77  int getSimpleExtentNdims() const;
78 
79  // Gets the number of elements in this dataspace.
80  // 12/05/00 - changed return type to hssize_t from hsize_t - C API
81  hssize_t getSimpleExtentNpoints() const;
82 
83  // Gets the current class of this dataspace.
84  H5S_class_t getSimpleExtentType() const;
85 
86  // Determines if this dataspace is a simple one.
87  bool isSimple() const;
88 
89  // Sets the offset of this simple dataspace.
90  void offsetSimple(const hssize_t* offset) const;
91 
92  // Selects the entire dataspace.
93  void selectAll() const;
94 
95  // Selects array elements to be included in the selection for
96  // this dataspace.
97  void selectElements(H5S_seloper_t op, const size_t num_elements, const hsize_t *coord) const;
98 
99  // Selects a hyperslab region to add to the current selected region.
100  void selectHyperslab(H5S_seloper_t op, const hsize_t *count, const hsize_t *start, const hsize_t *stride = NULL, const hsize_t *block = NULL) const;
101 
102  // Resets the selection region to include no elements.
103  void selectNone() const;
104 
105  // Verifies that the selection is within the extent of the dataspace.
106  bool selectValid() const;
107 
108  // Removes the extent from this dataspace.
109  void setExtentNone() const;
110 
111  // Sets or resets the size of this dataspace.
112  void setExtentSimple(int rank, const hsize_t *current_size, const hsize_t *maximum_size = NULL) const;
113 
115  virtual H5std_string fromClass () const { return("DataSpace"); }
116 
117  // Gets the dataspace id.
118  virtual hid_t getId() const;
119 
120  // Deletes the global constant
121  static void deleteConstants();
122 
123  // Destructor: properly terminates access to this dataspace.
124  virtual ~DataSpace();
125 
126 #ifndef DOXYGEN_SHOULD_SKIP_THIS
127 
128  protected:
129  // Sets the dataspace id.
130  virtual void p_setId(const hid_t new_id);
131 
132 #endif // DOXYGEN_SHOULD_SKIP_THIS
133 
134  private:
135  hid_t id; // HDF5 dataspace id
136 
137 #ifndef DOXYGEN_SHOULD_SKIP_THIS
138 
139  static DataSpace* ALL_;
140 
141  // Creates the global constant
142  static DataSpace* getConstant();
143 
144  // Friend function to set DataSpace id. For library use only.
145  friend void f_DataSpace_setId(DataSpace *dspace, hid_t new_id);
146 
147 #endif // DOXYGEN_SHOULD_SKIP_THIS
148 
149 }; // end of DataSpace
150 } // namespace H5
151 
152 #endif // __H5DataSpace_H
Class IdComponent provides wrappers of the C functions that operate on an HDF5 identifier.
Definition: H5IdComponent.h:27
Class DataSpace inherits from IdComponent and provides wrappers for the HDF5's dataspaces.
Definition: H5DataSpace.h:24
virtual H5std_string fromClass() const
Returns this class name.
Definition: H5DataSpace.h:115
static const DataSpace & ALL
Default DataSpace objects.
Definition: H5DataSpace.h:27


The HDF Group Help Desk:
  Copyright by The HDF Group
and the Board of Trustees of the University of Illinois