summaryrefslogtreecommitdiffstats
path: root/src/H5Vprivate.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Vprivate.h')
-rw-r--r--src/H5Vprivate.h161
1 files changed, 113 insertions, 48 deletions
diff --git a/src/H5Vprivate.h b/src/H5Vprivate.h
index 76c638f..64f085a 100644
--- a/src/H5Vprivate.h
+++ b/src/H5Vprivate.h
@@ -11,49 +11,57 @@
#include <H5private.h>
/* Vector comparison functions like Fortran66 comparison operators */
-#define H5V_vector_eq(N,V1,V2) (H5V_vector_cmp (N, V1, V2)==0)
-#define H5V_vector_lt(N,V1,V2) (H5V_vector_cmp (N, V1, V2)<0)
-#define H5V_vector_gt(N,V1,V2) (H5V_vector_cmp (N, V1, V2)>0)
-#define H5V_vector_le(N,V1,V2) (H5V_vector_cmp (N, V1, V2)<=0)
-#define H5V_vector_ge(N,V1,V2) (H5V_vector_cmp (N, V1, V2)>=0)
+#define H5V_vector_eq_s(N,V1,V2) (H5V_vector_cmp_s (N, V1, V2)==0)
+#define H5V_vector_lt_s(N,V1,V2) (H5V_vector_cmp_s (N, V1, V2)<0)
+#define H5V_vector_gt_s(N,V1,V2) (H5V_vector_cmp_s (N, V1, V2)>0)
+#define H5V_vector_le_s(N,V1,V2) (H5V_vector_cmp_s (N, V1, V2)<=0)
+#define H5V_vector_ge_s(N,V1,V2) (H5V_vector_cmp_s (N, V1, V2)>=0)
+#define H5V_vector_eq_u(N,V1,V2) (H5V_vector_cmp_u (N, V1, V2)==0)
+#define H5V_vector_lt_u(N,V1,V2) (H5V_vector_cmp_u (N, V1, V2)<0)
+#define H5V_vector_gt_u(N,V1,V2) (H5V_vector_cmp_u (N, V1, V2)>0)
+#define H5V_vector_le_u(N,V1,V2) (H5V_vector_cmp_u (N, V1, V2)<=0)
+#define H5V_vector_ge_u(N,V1,V2) (H5V_vector_cmp_u (N, V1, V2)>=0)
/* Other functions */
#define H5V_vector_cpy(N,DST,SRC) { \
- if (SRC) HDmemcpy (DST, SRC, (N)*sizeof(size_t)); \
- else HDmemset (DST, 0, (N)*sizeof(size_t)); \
+ assert (sizeof(*(DST))==sizeof(*(SRC))); \
+ if (SRC) HDmemcpy (DST, SRC, (N)*sizeof(*(DST))); \
+ else HDmemset (DST, 0, (N)*sizeof(*(DST))); \
}
-#define H5V_vector_zero(N,DST) HDmemset(DST,0,(N)*sizeof(size_t))
+#define H5V_vector_zero(N,DST) HDmemset(DST,0,(N)*sizeof(*(DST)))
/* A null pointer is equivalent to a zero vector */
#define H5V_ZERO NULL
-size_t H5V_hyper_stride(intn n, const size_t *size, const size_t *total_size,
- const size_t *offset, ssize_t *stride);
-hbool_t H5V_hyper_disjointp(intn n, const size_t *offset1,
- const size_t *size1, const size_t *offset2,
- const size_t *size2);
-hbool_t H5V_hyper_eq(intn n, const size_t *offset1, const size_t *size1,
- const size_t *offset2, const size_t *size2);
-herr_t H5V_hyper_fill(intn n, const size_t *total_size, const size_t *offset,
- const size_t *size, void *buf, uintn val);
-herr_t H5V_hyper_copy(intn n, const size_t *size,
- const size_t *dst_total_size, const size_t *dst_offset,
- void *_dst, const size_t *src_total_size,
- const size_t *src_offset, const void *_src);
-herr_t H5V_stride_fill(intn n, size_t elmt_size, const size_t *size,
- const ssize_t *stride, void *_dst, uintn fill_value);
-herr_t H5V_stride_copy(intn n, size_t elmt_size, const size_t *_size,
- const ssize_t *dst_stride, void *_dst,
- const ssize_t *src_stride, const void *_src);
-herr_t H5V_stride_copy2(size_t nelmts, size_t elmt_size, intn dst_n,
- const size_t *dst_size, const ssize_t *dst_stride,
- void *_dst, intn src_n, const size_t *src_size,
- const ssize_t *src_stride, const void *_src);
-herr_t H5V_stride_optimize1(intn *np, size_t *elmt_size, size_t *size,
- ssize_t *stride1);
-herr_t H5V_stride_optimize2(intn *np, size_t *elmt_size, size_t *size,
- ssize_t *stride1, ssize_t *stride2);
+hsize_t H5V_hyper_stride(intn n, const hsize_t *size,
+ const hsize_t *total_size, const hssize_t *offset,
+ hssize_t *stride);
+hbool_t H5V_hyper_disjointp(intn n, const hssize_t *offset1,
+ const hsize_t *size1, const hssize_t *offset2,
+ const hsize_t *size2);
+hbool_t H5V_hyper_eq(intn n, const hssize_t *offset1, const hsize_t *size1,
+ const hssize_t *offset2, const hsize_t *size2);
+herr_t H5V_hyper_fill(intn n, const hsize_t *_size, const hsize_t *total_size,
+ const hssize_t *offset, void *_dst, uintn fill_value);
+herr_t H5V_hyper_copy(intn n, const hsize_t *size,
+ const hsize_t *dst_total_size,
+ const hssize_t *dst_offset, void *_dst,
+ const hsize_t *src_total_size,
+ const hssize_t *src_offset, const void *_src);
+herr_t H5V_stride_fill(intn n, hsize_t elmt_size, const hsize_t *size,
+ const hssize_t *stride, void *_dst, uintn fill_value);
+herr_t H5V_stride_copy(intn n, hsize_t elmt_size, const hsize_t *_size,
+ const hssize_t *dst_stride, void *_dst,
+ const hssize_t *src_stride, const void *_src);
+herr_t H5V_stride_copy2(hsize_t nelmts, hsize_t elmt_size, intn dst_n,
+ const hsize_t *dst_size, const hssize_t *dst_stride,
+ void *_dst, intn src_n, const hsize_t *src_size,
+ const hssize_t *src_stride, const void *_src);
+herr_t H5V_stride_optimize1(intn *np, hsize_t *elmt_size, hsize_t *size,
+ hssize_t *stride1);
+herr_t H5V_stride_optimize2(intn *np, hsize_t *elmt_size, hsize_t *size,
+ hssize_t *stride1, hssize_t *stride2);
/*-------------------------------------------------------------------------
@@ -75,9 +83,8 @@ herr_t H5V_stride_optimize2(intn *np, size_t *elmt_size, size_t *size,
*
*-------------------------------------------------------------------------
*/
-static inline size_t
-__attribute__((unused))
-H5V_vector_reduce_product(intn n, const size_t *v)
+static inline hsize_t __unused__
+H5V_vector_reduce_product(intn n, const hsize_t *v)
{
size_t ans = 1;
@@ -87,7 +94,7 @@ H5V_vector_reduce_product(intn n, const size_t *v)
}
/*-------------------------------------------------------------------------
- * Function: H5V_vector_zerop
+ * Function: H5V_vector_zerop_u
*
* Purpose: Determines if all elements of a vector are zero.
*
@@ -103,9 +110,8 @@ H5V_vector_reduce_product(intn n, const size_t *v)
*
*-------------------------------------------------------------------------
*/
-static inline hbool_t
-__attribute__((unused))
-H5V_vector_zerop(intn n, const size_t *v)
+static inline hbool_t __unused__
+H5V_vector_zerop_u(intn n, const hsize_t *v)
{
if (!v) return TRUE;
while (n--) {
@@ -115,7 +121,34 @@ H5V_vector_zerop(intn n, const size_t *v)
}
/*-------------------------------------------------------------------------
- * Function: H5V_vector_cmp
+ * Function: H5V_vector_zerop_s
+ *
+ * Purpose: Determines if all elements of a vector are zero.
+ *
+ * Return: Success: TRUE if all elements are zero,
+ * FALSE otherwise
+ *
+ * Failure: TRUE if N is zero
+ *
+ * Programmer: Robb Matzke
+ * Friday, October 10, 1997
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+static inline hbool_t __unused__
+H5V_vector_zerop_s(intn n, const hssize_t *v)
+{
+ if (!v) return TRUE;
+ while (n--) {
+ if (*v++) return FALSE;
+ }
+ return TRUE;
+}
+
+/*-------------------------------------------------------------------------
+ * Function: H5V_vector_cmp_u
*
* Purpose: Compares two vectors of the same size and determines if V1 is
* lexicographically less than, equal, or greater than V2.
@@ -133,9 +166,8 @@ H5V_vector_zerop(intn n, const size_t *v)
*
*-------------------------------------------------------------------------
*/
-static inline intn
-__attribute__((unused))
-H5V_vector_cmp(intn n, const size_t *v1, const size_t *v2)
+static inline intn __unused__
+H5V_vector_cmp_u (intn n, const hsize_t *v1, const hsize_t *v2)
{
if (v1 == v2) return 0;
while (n--) {
@@ -146,6 +178,40 @@ H5V_vector_cmp(intn n, const size_t *v1, const size_t *v2)
}
return 0;
}
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5V_vector_cmp_s
+ *
+ * Purpose: Compares two vectors of the same size and determines if V1 is
+ * lexicographically less than, equal, or greater than V2.
+ *
+ * Return: Success: -1 if V1 is less than V2
+ * 0 if they are equal
+ * 1 if V1 is greater than V2
+ *
+ * Failure: 0 if N is zero
+ *
+ * Programmer: Robb Matzke
+ * Wednesday, April 8, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+static inline intn __unused__
+H5V_vector_cmp_s (intn n, const hssize_t *v1, const hssize_t *v2)
+{
+ if (v1 == v2) return 0;
+ while (n--) {
+ if ((v1 ? *v1 : 0) < (v2 ? *v2 : 0)) return -1;
+ if ((v1 ? *v1 : 0) > (v2 ? *v2 : 0)) return 1;
+ if (v1) v1++;
+ if (v2) v2++;
+ }
+ return 0;
+}
+
/*-------------------------------------------------------------------------
* Function: H5V_vector_inc
@@ -161,9 +227,8 @@ H5V_vector_cmp(intn n, const size_t *v1, const size_t *v2)
*
*-------------------------------------------------------------------------
*/
-static inline void
-__attribute__((unused))
-H5V_vector_inc(intn n, size_t *v1, const size_t *v2)
+static inline void __unused__
+H5V_vector_inc(intn n, hsize_t *v1, const hsize_t *v2)
{
while (n--) *v1++ += *v2++;
}