mirror of
https://github.com/SatDump/SatDump
synced 2026-08-13 17:47:30 -04:00
88 lines
No EOL
2.4 KiB
C++
88 lines
No EOL
2.4 KiB
C++
#include "hdf5_utils.h"
|
|
|
|
namespace nc2pro
|
|
{
|
|
std::string hdf5_get_string_attr_FILE_fixed(hid_t &file, std::string attr)
|
|
{
|
|
std::string val;
|
|
|
|
if (file < 0)
|
|
return "";
|
|
hid_t att = H5Aopen(file, attr.c_str(), H5P_DEFAULT);
|
|
hid_t att_type = H5Aget_type(att);
|
|
char str[10000] = {0};
|
|
H5Aread(att, att_type, &str);
|
|
val = std::string(str);
|
|
H5Tclose(att_type);
|
|
H5Aclose(att);
|
|
return val;
|
|
}
|
|
|
|
int hdf5_get_int(hid_t &file, std::string path)
|
|
{
|
|
int32_t val = 0;
|
|
hid_t dataset = H5Dopen1(file, path.c_str());
|
|
if (dataset < 0)
|
|
return -1e6;
|
|
H5Dread(dataset, H5T_NATIVE_INT32, H5S_ALL, H5S_ALL, H5P_DEFAULT, &val);
|
|
H5Dclose(dataset);
|
|
return val;
|
|
}
|
|
|
|
float hdf5_get_float(hid_t &file, std::string path)
|
|
{
|
|
float val = 0.0;
|
|
hid_t dataset = H5Dopen1(file, path.c_str());
|
|
if (dataset < 0)
|
|
return -1e6;
|
|
H5Dread(dataset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &val);
|
|
H5Dclose(dataset);
|
|
return val;
|
|
}
|
|
|
|
float hdf5_get_float_attr(hid_t &file, std::string path, std::string attr)
|
|
{
|
|
float val = -1e6;
|
|
hid_t dataset = H5Dopen1(file, path.c_str());
|
|
if (dataset < 0)
|
|
return -1e6;
|
|
hid_t att = H5Aopen(dataset, attr.c_str(), H5P_DEFAULT);
|
|
if (att < 0)
|
|
return -1e6;
|
|
H5Aread(att, H5T_NATIVE_FLOAT, &val);
|
|
H5Aclose(att);
|
|
H5Dclose(dataset);
|
|
return val;
|
|
}
|
|
|
|
double hdf5_get_double_attr_FILE(hid_t &file, std::string attr)
|
|
{
|
|
double val = 0.0;
|
|
if (file < 0)
|
|
return -1e6;
|
|
|
|
hid_t att = H5Aopen(file, attr.c_str(), H5P_DEFAULT);
|
|
hid_t att_type = H5Aget_type(att);
|
|
H5Aread(att, att_type, &val);
|
|
H5Tclose(att_type);
|
|
H5Aclose(att);
|
|
return val;
|
|
}
|
|
|
|
std::string hdf5_get_string_attr_FILE(hid_t &file, std::string attr)
|
|
{
|
|
std::string val;
|
|
|
|
if (file < 0)
|
|
return "";
|
|
hid_t att = H5Aopen(file, attr.c_str(), H5P_DEFAULT);
|
|
hid_t att_type = H5Aget_type(att);
|
|
char *str;
|
|
H5Aread(att, att_type, &str);
|
|
val = std::string(str);
|
|
H5free_memory(str);
|
|
H5Tclose(att_type);
|
|
H5Aclose(att);
|
|
return val;
|
|
}
|
|
} // namespace nc2pro
|