mirror of
https://git.gfz-potsdam.de/naaice/poet.git
synced 2025-12-16 12:54:50 +01:00
80 lines
1.6 KiB
C++
80 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include <H5Ipublic.h>
|
|
|
|
namespace HighFive {
|
|
namespace detail {
|
|
inline int h5i_inc_ref(hid_t id) {
|
|
auto count = H5Iinc_ref(id);
|
|
|
|
if (count < 0) {
|
|
throw ObjectException("Failed to increase reference count of HID");
|
|
}
|
|
|
|
return count;
|
|
}
|
|
|
|
namespace nothrow {
|
|
|
|
inline int h5i_dec_ref(hid_t id) {
|
|
return H5Idec_ref(id);
|
|
}
|
|
|
|
} // namespace nothrow
|
|
|
|
inline int h5i_dec_ref(hid_t id) {
|
|
int count = H5Idec_ref(id);
|
|
if (count < 0) {
|
|
throw ObjectException("Failed to decrease reference count of HID");
|
|
}
|
|
|
|
return count;
|
|
}
|
|
|
|
namespace nothrow {
|
|
inline htri_t h5i_is_valid(hid_t id) {
|
|
return H5Iis_valid(id);
|
|
}
|
|
|
|
} // namespace nothrow
|
|
|
|
inline htri_t h5i_is_valid(hid_t id) {
|
|
htri_t tri = H5Iis_valid(id);
|
|
if (tri < 0) {
|
|
throw ObjectException("Failed to check if HID is valid");
|
|
}
|
|
|
|
return tri;
|
|
}
|
|
|
|
inline H5I_type_t h5i_get_type(hid_t id) {
|
|
H5I_type_t type = H5Iget_type(id);
|
|
if (type == H5I_BADID) {
|
|
HDF5ErrMapper::ToException<ObjectException>("Failed to get type of HID");
|
|
}
|
|
|
|
return type;
|
|
}
|
|
|
|
template <class Exception>
|
|
inline hid_t h5i_get_file_id(hid_t id) {
|
|
hid_t file_id = H5Iget_file_id(id);
|
|
if (file_id < 0) {
|
|
HDF5ErrMapper::ToException<Exception>("Failed not obtain file HID of object");
|
|
}
|
|
|
|
return file_id;
|
|
}
|
|
|
|
inline ssize_t h5i_get_name(hid_t id, char* name, size_t size) {
|
|
ssize_t n_chars = H5Iget_name(id, name, size);
|
|
if (n_chars < 0) {
|
|
HDF5ErrMapper::ToException<ObjectException>("Failed to get name of HID.");
|
|
}
|
|
|
|
return n_chars;
|
|
}
|
|
|
|
} // namespace detail
|
|
} // namespace HighFive
|