From 9d4c884434e9591f73b2bb0130ac58159697105c Mon Sep 17 00:00:00 2001 From: John Biddiscombe <biddisco@cscs.ch> Date: Wed, 30 Oct 2024 14:49:48 +0100 Subject: [PATCH] Add support for hdf5 int8 types (int8, uint8) --- src/h5core/private/h5_model.h | 19 +++++++++++++++++++ src/h5core/private/h5_types.h | 2 ++ src/include/h5core/h5_types.h | 2 ++ 3 files changed, 23 insertions(+) diff --git a/src/h5core/private/h5_model.h b/src/h5core/private/h5_model.h index e00aef3b..b429f63e 100644 --- a/src/h5core/private/h5_model.h +++ b/src/h5core/private/h5_model.h @@ -135,6 +135,12 @@ h5priv_map_enum_to_normalized_type ( case H5_STRING_T: ret_value = H5_STRING; break; + case H5_INT8_T: + ret_value = H5_INT8; + break; + case H5_UINT8_T: + ret_value = H5_UINT8; + break; case H5_INT16_T: ret_value = H5_INT16; break; @@ -203,6 +209,12 @@ h5priv_normalize_type ( } else { ret_value = H5_UINT16; } + } else if (tsize==1) { + if (tsign == H5T_SGN_2) { + ret_value = H5_INT8; + } else { + ret_value = H5_UINT8; + } } break; case H5T_FLOAT: @@ -263,6 +275,13 @@ h5priv_map_hdf5_type_to_enum ( } else { ret_value = H5_UINT16_T; } + } else if (tsize==1) { + if (tsign == H5T_SGN_2) { + ret_value = H5_INT8_T; + } + else { + ret_value = H5_UINT8_T; + } } else { ret_value = H5_STRING_T; } diff --git a/src/h5core/private/h5_types.h b/src/h5core/private/h5_types.h index dd88f7ac..35b687b9 100644 --- a/src/h5core/private/h5_types.h +++ b/src/h5core/private/h5_types.h @@ -13,6 +13,8 @@ #include <hdf5.h> #include "h5core/h5_types.h" +#define H5_INT8 H5T_NATIVE_INT8 +#define H5_UINT8 H5T_NATIVE_UINT8 #define H5_INT16 H5T_NATIVE_INT16 #define H5_UINT16 H5T_NATIVE_UINT16 #define H5_INT32 H5T_NATIVE_INT32 diff --git a/src/include/h5core/h5_types.h b/src/include/h5core/h5_types.h index 07d232b6..bdb180c5 100644 --- a/src/include/h5core/h5_types.h +++ b/src/include/h5core/h5_types.h @@ -30,6 +30,8 @@ typedef int MPI_Datatype; typedef enum { H5_STRING_T, + H5_INT8_T, + H5_UINT8_T, H5_INT16_T, H5_UINT16_T, H5_INT32_T, -- GitLab