summaryrefslogtreecommitdiffstats
path: root/src/H5Sselect.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Sselect.c')
-rw-r--r--src/H5Sselect.c75
1 files changed, 39 insertions, 36 deletions
diff --git a/src/H5Sselect.c b/src/H5Sselect.c
index ca6bb7d..891e812 100644
--- a/src/H5Sselect.c
+++ b/src/H5Sselect.c
@@ -1345,15 +1345,28 @@ HDfprintf(stderr,"%s: Entering\n",FUNC);
if (space1->extent.rank!=space2->extent.rank)
HGOTO_DONE(FALSE);
+#ifdef QAK
+HDfprintf(stderr,"%s: Check 0.5\n",FUNC);
+HDfprintf(stderr,"%s: space1 selection type=%d\n",FUNC,(int)H5S_GET_SELECT_TYPE(space1));
+HDfprintf(stderr,"%s: space1->select.num_elem=%Hd\n",FUNC,space1->select.num_elem);
+HDfprintf(stderr,"%s: space2 selection type=%d\n",FUNC,(int)H5S_GET_SELECT_TYPE(space2));
+HDfprintf(stderr,"%s: space2->select.num_elem=%Hd\n",FUNC,space2->select.num_elem);
+#endif /* QAK */
/* Check for different number of elements selected */
if(H5S_GET_SELECT_NPOINTS(space1)!=H5S_GET_SELECT_NPOINTS(space2))
HGOTO_DONE(FALSE);
+#ifdef QAK
+HDfprintf(stderr,"%s: Check 1.0\n",FUNC);
+#endif /* QAK */
/* Check for "easy" cases before getting into generalized block iteration code */
if(H5S_GET_SELECT_TYPE(space1)==H5S_SEL_ALL && H5S_GET_SELECT_TYPE(space2)==H5S_SEL_ALL) {
hsize_t dims1[H5O_LAYOUT_NDIMS]; /* End point of selection block in dataspace #1 */
hsize_t dims2[H5O_LAYOUT_NDIMS]; /* End point of selection block in dataspace #2 */
+#ifdef QAK
+HDfprintf(stderr,"%s: Check 2.0\n",FUNC);
+#endif /* QAK */
if(H5S_get_simple_extent_dims(space1, dims1, NULL)<0)
HGOTO_ERROR (H5E_DATASPACE, H5E_CANTGET, FAIL, "unable to get dimensionality");
if(H5S_get_simple_extent_dims(space2, dims2, NULL)<0)
@@ -1365,11 +1378,17 @@ HDfprintf(stderr,"%s: Entering\n",FUNC);
HGOTO_DONE(FALSE);
} /* end if */
else if(H5S_GET_SELECT_TYPE(space1)==H5S_SEL_NONE || H5S_GET_SELECT_TYPE(space2)==H5S_SEL_NONE) {
+#ifdef QAK
+HDfprintf(stderr,"%s: Check 3.0\n",FUNC);
+#endif /* QAK */
HGOTO_DONE(TRUE);
} /* end if */
else if((H5S_GET_SELECT_TYPE(space1)==H5S_SEL_HYPERSLABS && space1->select.sel_info.hslab->diminfo_valid)
&& (H5S_GET_SELECT_TYPE(space2)==H5S_SEL_HYPERSLABS && space2->select.sel_info.hslab->diminfo_valid)) {
+#ifdef QAK
+HDfprintf(stderr,"%s: Check 4.0\n",FUNC);
+#endif /* QAK */
/* Check that the shapes are the same */
for (u=0; u<space1->extent.rank; u++) {
if(space1->select.sel_info.hslab->opt_diminfo[u].stride!=space2->select.sel_info.hslab->opt_diminfo[u].stride)
@@ -1642,7 +1661,7 @@ done:
herr_t
H5S_select_fscat (H5F_t *f, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id,
H5D_t *dset, const H5D_storage_t *store,
- const H5S_t *space, H5S_sel_iter_t *iter, hsize_t nelmts,
+ const H5S_t *space, H5S_sel_iter_t *iter, size_t nelmts,
const void *_buf)
{
const uint8_t *buf=_buf; /* Alias for pointer arithmetic */
@@ -1654,7 +1673,6 @@ H5S_select_fscat (H5F_t *f, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id,
size_t _len[H5D_XFER_HYPER_VECTOR_SIZE_DEF]; /* Array to store sequence lengths */
size_t *len=NULL; /* Array to store sequence lengths */
size_t orig_mem_len, mem_len; /* Length of sequence in memory */
- size_t maxelem; /* Number of elements in the buffer */
size_t nseq; /* Number of sequences generated */
size_t nelem; /* Number of elements used in sequences */
herr_t ret_value=SUCCEED; /* Return value */
@@ -1683,13 +1701,10 @@ H5S_select_fscat (H5F_t *f, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id,
off=_off;
} /* end else */
- /* Compute the number of bytes available in buffer */
- H5_ASSIGN_OVERFLOW(maxelem,nelmts,hsize_t,size_t);
-
/* Loop until all elements are written */
- while(maxelem>0) {
+ while(nelmts>0) {
/* Get list of sequences for selection to write */
- if(H5S_SELECT_GET_SEQ_LIST(space,H5S_GET_SEQ_LIST_SORTED,iter,dxpl_cache->vec_size,maxelem,&nseq,&nelem,off,len)<0)
+ if(H5S_SELECT_GET_SEQ_LIST(space,H5S_GET_SEQ_LIST_SORTED,iter,dxpl_cache->vec_size,nelmts,&nseq,&nelem,off,len)<0)
HGOTO_ERROR (H5E_INTERNAL, H5E_UNSUPPORTED, FAIL, "sequence length generation failed");
/* Reset the current sequence information */
@@ -1705,7 +1720,7 @@ H5S_select_fscat (H5F_t *f, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id,
buf += orig_mem_len;
/* Decrement number of elements left to process */
- maxelem -= nelem;
+ nelmts -= nelem;
} /* end while */
done:
@@ -1742,10 +1757,10 @@ done:
*
*-------------------------------------------------------------------------
*/
-hsize_t
+size_t
H5S_select_fgath (H5F_t *f, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id,
H5D_t *dset, const H5D_storage_t *store,
- const H5S_t *space, H5S_sel_iter_t *iter, hsize_t nelmts,
+ const H5S_t *space, H5S_sel_iter_t *iter, size_t nelmts,
void *_buf/*out*/)
{
uint8_t *buf=_buf; /* Alias for pointer arithmetic */
@@ -1757,10 +1772,9 @@ H5S_select_fgath (H5F_t *f, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id,
size_t _len[H5D_XFER_HYPER_VECTOR_SIZE_DEF]; /* Array to store sequence lengths */
size_t *len=NULL; /* Pointer to sequence lengths */
size_t orig_mem_len, mem_len; /* Length of sequence in memory */
- size_t maxelem; /* Number of elements in the buffer */
size_t nseq; /* Number of sequences generated */
size_t nelem; /* Number of elements used in sequences */
- hsize_t ret_value=nelmts; /* Return value */
+ size_t ret_value=nelmts; /* Return value */
FUNC_ENTER_NOAPI(H5S_select_fgath, 0);
@@ -1785,13 +1799,10 @@ H5S_select_fgath (H5F_t *f, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id,
off=_off;
} /* end else */
- /* Compute the number of elements available in buffer */
- H5_ASSIGN_OVERFLOW(maxelem,nelmts,hsize_t,size_t);
-
/* Loop until all elements are written */
- while(maxelem>0) {
+ while(nelmts>0) {
/* Get list of sequences for selection to write */
- if(H5S_SELECT_GET_SEQ_LIST(space,H5S_GET_SEQ_LIST_SORTED,iter,dxpl_cache->vec_size,maxelem,&nseq,&nelem,off,len)<0)
+ if(H5S_SELECT_GET_SEQ_LIST(space,H5S_GET_SEQ_LIST_SORTED,iter,dxpl_cache->vec_size,nelmts,&nseq,&nelem,off,len)<0)
HGOTO_ERROR (H5E_INTERNAL, H5E_UNSUPPORTED, 0, "sequence length generation failed");
/* Reset the current sequence information */
@@ -1807,7 +1818,7 @@ H5S_select_fgath (H5F_t *f, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id,
buf += orig_mem_len;
/* Decrement number of elements left to process */
- maxelem -= nelem;
+ nelmts -= nelem;
} /* end while */
done:
@@ -1840,7 +1851,7 @@ done:
*/
herr_t
H5S_select_mscat (const void *_tscat_buf, const H5S_t *space,
- H5S_sel_iter_t *iter, hsize_t nelmts, const H5D_dxpl_cache_t *dxpl_cache,
+ H5S_sel_iter_t *iter, size_t nelmts, const H5D_dxpl_cache_t *dxpl_cache,
void *_buf/*out*/)
{
uint8_t *buf=(uint8_t *)_buf; /* Get local copies for address arithmetic */
@@ -1850,7 +1861,6 @@ H5S_select_mscat (const void *_tscat_buf, const H5S_t *space,
size_t _len[H5D_XFER_HYPER_VECTOR_SIZE_DEF]; /* Array to store sequence lengths */
size_t *len=NULL; /* Pointer to sequence lengths */
size_t curr_len; /* Length of bytes left to process in sequence */
- size_t maxelem; /* Number of elements in the buffer */
size_t nseq; /* Number of sequences generated */
size_t curr_seq; /* Current sequence being processed */
size_t nelem; /* Number of elements used in sequences */
@@ -1877,13 +1887,10 @@ H5S_select_mscat (const void *_tscat_buf, const H5S_t *space,
off=_off;
} /* end else */
- /* Compute the number of elements available in buffer */
- H5_ASSIGN_OVERFLOW(maxelem,nelmts,hsize_t,size_t);
-
/* Loop until all elements are written */
- while(maxelem>0) {
+ while(nelmts>0) {
/* Get list of sequences for selection to write */
- if(H5S_SELECT_GET_SEQ_LIST(space,0,iter,dxpl_cache->vec_size,maxelem,&nseq,&nelem,off,len)<0)
+ if(H5S_SELECT_GET_SEQ_LIST(space,0,iter,dxpl_cache->vec_size,nelmts,&nseq,&nelem,off,len)<0)
HGOTO_ERROR (H5E_INTERNAL, H5E_UNSUPPORTED, 0, "sequence length generation failed");
/* Loop, while sequences left to process */
@@ -1898,7 +1905,7 @@ H5S_select_mscat (const void *_tscat_buf, const H5S_t *space,
} /* end for */
/* Decrement number of elements left to process */
- maxelem -= nelem;
+ nelmts -= nelem;
} /* end while */
done:
@@ -1931,9 +1938,9 @@ done:
*
*-------------------------------------------------------------------------
*/
-hsize_t
+size_t
H5S_select_mgath (const void *_buf, const H5S_t *space,
- H5S_sel_iter_t *iter, hsize_t nelmts, const H5D_dxpl_cache_t *dxpl_cache,
+ H5S_sel_iter_t *iter, size_t nelmts, const H5D_dxpl_cache_t *dxpl_cache,
void *_tgath_buf/*out*/)
{
const uint8_t *buf=(const uint8_t *)_buf; /* Get local copies for address arithmetic */
@@ -1943,11 +1950,10 @@ H5S_select_mgath (const void *_buf, const H5S_t *space,
size_t _len[H5D_XFER_HYPER_VECTOR_SIZE_DEF]; /* Array to store sequence lengths */
size_t *len=NULL; /* Pointer to sequence lengths */
size_t curr_len; /* Length of bytes left to process in sequence */
- size_t maxelem; /* Number of elements in the buffer */
size_t nseq; /* Number of sequences generated */
size_t curr_seq; /* Current sequence being processed */
size_t nelem; /* Number of elements used in sequences */
- hsize_t ret_value=nelmts; /* Number of elements gathered */
+ size_t ret_value=nelmts; /* Number of elements gathered */
FUNC_ENTER_NOAPI(H5S_select_mgath, 0);
@@ -1970,13 +1976,10 @@ H5S_select_mgath (const void *_buf, const H5S_t *space,
off=_off;
} /* end else */
- /* Compute the number of elements available in buffer */
- H5_ASSIGN_OVERFLOW(maxelem,nelmts,hsize_t,size_t);
-
/* Loop until all elements are written */
- while(maxelem>0) {
+ while(nelmts>0) {
/* Get list of sequences for selection to write */
- if(H5S_SELECT_GET_SEQ_LIST(space,0,iter,dxpl_cache->vec_size,maxelem,&nseq,&nelem,off,len)<0)
+ if(H5S_SELECT_GET_SEQ_LIST(space,0,iter,dxpl_cache->vec_size,nelmts,&nseq,&nelem,off,len)<0)
HGOTO_ERROR (H5E_INTERNAL, H5E_UNSUPPORTED, 0, "sequence length generation failed");
/* Loop, while sequences left to process */
@@ -1991,7 +1994,7 @@ H5S_select_mgath (const void *_buf, const H5S_t *space,
} /* end for */
/* Decrement number of elements left to process */
- maxelem -= nelem;
+ nelmts -= nelem;
} /* end while */
done: