/home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/hdf5lib/file.hh Source File#

DiFfRG: /home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/hdf5lib/file.hh Source File
DiFfRG
file.hh
Go to the documentation of this file.
1#pragma once
2
3#include <hdf5lib/group.hh>
4#include <hdf5lib/handle.hh>
5
6#include <string>
7
8namespace DiFfRG::hdf5
9{
11
12 class File
13 {
14 public:
15 File() = default;
16
17 static File open(const std::string &path, Access mode)
18 {
19 hid_t f = H5I_INVALID_HID;
20 switch (mode) {
22 f = H5Fopen(path.c_str(), H5F_ACC_RDONLY, H5P_DEFAULT);
23 break;
25 f = H5Fopen(path.c_str(), H5F_ACC_RDWR, H5P_DEFAULT);
26 break;
28 f = H5Fcreate(path.c_str(), H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
29 break;
30 }
31 throw_if_negative(f, mode == Access::Truncate ? "H5Fcreate failed" : "H5Fopen failed");
32 File out;
33 out.h_ = Handle::take(f);
34 return out;
35 }
36
37 bool is_open() const noexcept { return h_.valid(); }
38 hid_t id() const noexcept { return h_.get(); }
39
40 void close() noexcept { h_.reset(); }
41
42 void flush()
43 {
44 if (h_.valid()) throw_if_negative(H5Fflush(h_.get(), H5F_SCOPE_GLOBAL), "H5Fflush failed");
45 }
46
48 {
49 hid_t g = H5Gopen2(h_.get(), "/", H5P_DEFAULT);
50 throw_if_negative(g, "H5Gopen2(\"/\") failed");
51 return Group::take(g);
52 }
53
54 private:
56 };
57} // namespace DiFfRG::hdf5
Definition file.hh:13
static File open(const std::string &path, Access mode)
Definition file.hh:17
void flush()
Definition file.hh:42
hid_t id() const noexcept
Definition file.hh:38
Group root()
Definition file.hh:47
bool is_open() const noexcept
Definition file.hh:37
Handle h_
Definition file.hh:55
void close() noexcept
Definition file.hh:40
Definition group.hh:16
static Group take(hid_t id)
Definition group.hh:20
Definition handle.hh:25
bool valid() const noexcept
Definition handle.hh:80
void reset() noexcept
Definition handle.hh:71
hid_t get() const noexcept
Definition handle.hh:79
static Handle take(hid_t id)
Definition handle.hh:37
Definition hdf5.hh:12
Access
Definition file.hh:10
void throw_if_negative(hid_t id, const char *what)
Definition handle.hh:11