VTK  9.3.0
vtkHDF5ScopedHandle.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
3 #ifndef vtkHDF5ScopedHandle_h
4 #define vtkHDF5ScopedHandle_h
5 
6 namespace vtkHDF
7 {
8 VTK_ABI_NAMESPACE_BEGIN
9 
13 #define DefineScopedHandle(name) \
14  class ScopedH5##name##Handle \
15  { \
16  public: \
17  ScopedH5##name##Handle(const ScopedH5##name##Handle& other) { this->Handle = other.Handle; } \
18  ScopedH5##name##Handle(hid_t handle) \
19  : Handle(handle) \
20  { \
21  } \
22  virtual ~ScopedH5##name##Handle() \
23  { \
24  if (this->Handle >= 0) \
25  { \
26  H5##name##close(this->Handle); \
27  } \
28  } \
29  \
30  operator hid_t() const { return this->Handle; } \
31  \
32  private: \
33  hid_t Handle; \
34  };
35 
36 // Defines ScopedH5AHandle closed with H5Aclose
38 
39 // Defines ScopedH5DHandle closed with H5Dclose
41 
42 // Defines ScopedH5FHandle closed with H5Fclose
44 
45 // Defines ScopedH5GHandle closed with H5Gclose
47 
48 // Defines ScopedH5SHandle closed with H5Sclose
50 
51 // Defines ScopedH5THandle closed with H5Tclose
53 
54 VTK_ABI_NAMESPACE_END
55 }
56 
57 #endif
58 // VTK-HeaderTest-Exclude: vtkHDF5ScopedHandle.h
DefineScopedHandle(A)