summaryrefslogtreecommitdiffstats
path: root/src/H5private.h
diff options
context:
space:
mode:
authorDana Robinson <43805+derobins@users.noreply.github.com>2023-06-05 15:04:56 (GMT)
committerGitHub <noreply@github.com>2023-06-05 15:04:56 (GMT)
commit7ecf1d09afa9379186c2ace158fb60d4afd96f0e (patch)
tree529564764b9cc063dcf0f8741ce45d5c2fd11095 /src/H5private.h
parente3559c7b64e7963e3515c2ebfd7f1abad810ed19 (diff)
downloadhdf5-7ecf1d09afa9379186c2ace158fb60d4afd96f0e.zip
hdf5-7ecf1d09afa9379186c2ace158fb60d4afd96f0e.tar.gz
hdf5-7ecf1d09afa9379186c2ace158fb60d4afd96f0e.tar.bz2
Convert H5F haddr_t macros to H5 (#3039)
Several macros for handling haddr_t values exist in H5Fprivate.h and have H5F prefixes, even though they have nothing to do with a particular file (e.g., H5F_addr_lt()). These macros have been moved to H5private.h and renamed to have an H5 prefix. Affected macros: H5F_addr_overflow H5F_addr_defined H5F_addr_eq H5F_addr_ne H5F_addr_lt H5F_addr_le H5F_addr_gt H5F_addr_ge H5F_addr_cmp H5F_addr_overlap H5F_addr_pow2 was unused and removed instead of converted.
Diffstat (limited to 'src/H5private.h')
-rw-r--r--src/H5private.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/H5private.h b/src/H5private.h
index 91a4780..327e2c9 100644
--- a/src/H5private.h
+++ b/src/H5private.h
@@ -413,6 +413,35 @@
*/
#define H5_REQUEST_NULL NULL
+/* clang-format off */
+/* Address-related macros */
+#define H5_addr_overflow(X,Z) (HADDR_UNDEF == (X) || \
+ HADDR_UNDEF == (X) + (haddr_t)(Z) || \
+ (X) + (haddr_t)(Z) < (X))
+#define H5_addr_defined(X) ((X) != HADDR_UNDEF)
+/* The H5_addr_eq() macro guarantees that Y is not HADDR_UNDEF by making
+ * certain that X is not HADDR_UNDEF and then checking that X equals Y
+ */
+#define H5_addr_eq(X,Y) ((X) != HADDR_UNDEF && (X) == (Y))
+#define H5_addr_ne(X,Y) (!H5_addr_eq((X),(Y)))
+#define H5_addr_lt(X,Y) ((X) != HADDR_UNDEF && \
+ (Y) != HADDR_UNDEF && \
+ (X) < (Y))
+#define H5_addr_le(X,Y) ((X) != HADDR_UNDEF && \
+ (Y) != HADDR_UNDEF && \
+ (X) <= (Y))
+#define H5_addr_gt(X,Y) ((X) != HADDR_UNDEF && \
+ (Y) != HADDR_UNDEF && \
+ (X) > (Y))
+#define H5_addr_ge(X,Y) ((X) != HADDR_UNDEF && \
+ (Y) != HADDR_UNDEF && \
+ (X) >= (Y))
+#define H5_addr_cmp(X,Y) (H5_addr_eq((X), (Y)) ? 0 : \
+ (H5_addr_lt((X), (Y)) ? -1 : 1))
+#define H5_addr_overlap(O1,L1,O2,L2) (((O1) < (O2) && ((O1) + (L1)) > (O2)) || \
+ ((O1) >= (O2) && (O1) < ((O2) + (L2))))
+/* clang-format on */
+
/*
* Methods to compare the equality of floating-point values:
*