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