summaryrefslogtreecommitdiffstats
path: root/src/H5V.c
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1998-03-04 16:20:23 (GMT)
committerRobb Matzke <matzke@llnl.gov>1998-03-04 16:20:23 (GMT)
commit7bdea74ca98dbdc90877790d4bc9c1f71f6697b7 (patch)
tree90c2b29eb5397154f1cd586b962854bb5985c31d /src/H5V.c
parent808a5e6be1b7f1025c6b1182e160cefbce0f8e68 (diff)
downloadhdf5-7bdea74ca98dbdc90877790d4bc9c1f71f6697b7.zip
hdf5-7bdea74ca98dbdc90877790d4bc9c1f71f6697b7.tar.gz
hdf5-7bdea74ca98dbdc90877790d4bc9c1f71f6697b7.tar.bz2
[svn-r303] Changes since 19980228
---------------------- ./html/Dataspaces.html ./html/Errors.html ./html/Files.html ./html/H5.api.html ./html/review1.html ./src/H5private.h ./src/H5public.h ./test/dsets.c ./test/dtypes.c Removed all the types like `int32' and `intn' into private headers since they violate the naming scheme and pollute application name space. Besides, our test files only use them in a handful of places and it's probably useless to export them to the app. The app is always written in terms of standard numeric types or its own numeric types and probably never in terms of HDF5 numeric types. If it were, then the user would have to copy from their type to hdf5 type for almost every hdf5 API function call! Same goes for return values. I also removed SUCCEED/FAIL from the API since apps should be checking against zero anyway. if (FAIL==(space=H5Screate_simple(...))) /*wrong*/ if ((space=H5Fcreate_simple(...)<0)) /*right*/ ./src/H5.c Changed arguments of H5version() from `uintn' to `unsigned'. ./src/H5Tpublic.h ./src/H5T.c Changed return type of H5Tget_nmembers() from `intn' to `int' ./src/H5A.c ./src/H5Aprivate.h ./src/H5Apublic.h Changed `H5Asearch_func_t' to `H5A_search_func_t' and moved its definition from the public to the private header file. ./html/H5.format.html Documented changes made to the external file list (H5O_EFL) message. ./src/H5D.c ./src/H5Dprivate.h ./src/H5E.c ./src/H5Epublic.h ./src/H5O.c ./src/H5Oefl.c ./src/H5Oprivate.h ./src/H5P.c ./src/H5Ppublic.h Added partial support for external raw data files. HDF5 can now describe external raw data files by listing the file names, offsets, and size for a dataset. However, we will restrict a dataset to be stored "contiguously" when the external file list is viewed as a single address space. The current implementation is unable to read/write to external files--that will come later this week as will documentation. For now, take a look at ./test/external.c, particularly the calls to H5Pset_external(). ./test/Makefile.in ./test/external.c [NEW] ./MANIFEST Added tests for external storage. Note: the read test is supposed to fail at this point since reading external datasets is not implemented yet. There is no write test. ./src/H5S.c ./src/H5Sprivate.h ./src/H5Ssimp.c Added H5S_get_npoints_max() to return the maximum possible number of data points in a data space. Added an extra argument to H5S_get_dims() which returns the maximum dims. ./src/H5F.c ./src/H5Fprivate.h ./src/H5Fpublic.h ./src/H5M.c [DEPRICATED] ./src/H5Mpublic.h [DEPRICATED] Changed `template' to `property list' in lots of places. ./src/H5Osdspace.c Removed an extra `\n' from a print statement. ./src/H5S_public.h Changed H5S_UNLIMITED to the maximum size_t value. ./test/extend.c "Extendable" is spelled "extendible". ./src/H5Farray.c ./src/H5V.c ./src/H5Vprivate.h ./test/hyperslab.c Strides are now type ssize_t instead of int. These have nothing to do with the sample granularity arguments for hyperslabs, which are also called "strides" in the code. ./test/tstab.c Changed assumptions about default address and length sizes.
Diffstat (limited to 'src/H5V.c')
-rw-r--r--src/H5V.c50
1 files changed, 24 insertions, 26 deletions
diff --git a/src/H5V.c b/src/H5V.c
index 41ed33a..e686e29 100644
--- a/src/H5V.c
+++ b/src/H5V.c
@@ -41,7 +41,7 @@ static hbool_t interface_initialize_g = TRUE;
*/
herr_t
H5V_stride_optimize1(intn *np, size_t *elmt_size, size_t *size,
- intn *stride1)
+ ssize_t *stride1)
{
FUNC_ENTER(H5V_stride_optimize1, FAIL);
@@ -54,10 +54,10 @@ H5V_stride_optimize1(intn *np, size_t *elmt_size, size_t *size,
/*
* Combine adjacent memory accesses
*/
- while (*np && stride1[*np - 1] == *elmt_size) {
- *elmt_size *= size[*np - 1];
+ while (*np && stride1[*np-1] == *elmt_size) {
+ *elmt_size *= size[*np-1];
if (--*np) {
- stride1[*np - 1] += size[*np] * stride1[*np];
+ stride1[*np-1] += size[*np] * stride1[*np];
}
}
@@ -88,7 +88,7 @@ H5V_stride_optimize1(intn *np, size_t *elmt_size, size_t *size,
*/
herr_t
H5V_stride_optimize2(intn *np, size_t *elmt_size, size_t *size,
- intn *stride1, intn *stride2)
+ ssize_t *stride1, ssize_t *stride2)
{
FUNC_ENTER(H5V_stride_optimize2, FAIL);
@@ -101,12 +101,12 @@ H5V_stride_optimize2(intn *np, size_t *elmt_size, size_t *size,
/*
* Combine adjacent memory accesses
*/
- while (*np && stride1[*np - 1] == *elmt_size &&
- stride2[*np - 1] == *elmt_size) {
- *elmt_size *= size[*np - 1];
+ while (*np && stride1[*np-1] == *elmt_size &&
+ stride2[*np-1] == *elmt_size) {
+ *elmt_size *= size[*np-1];
if (--*np) {
- stride1[*np - 1] += size[*np] * stride1[*np];
- stride2[*np - 1] += size[*np] * stride2[*np];
+ stride1[*np-1] += size[*np] * stride1[*np];
+ stride2[*np-1] += size[*np] * stride2[*np];
}
}
@@ -145,7 +145,7 @@ H5V_stride_optimize2(intn *np, size_t *elmt_size, size_t *size,
size_t
H5V_hyper_stride(intn n, const size_t *size,
const size_t *total_size, const size_t *offset,
- intn *stride/*out*/)
+ ssize_t *stride/*out*/)
{
size_t skip; /*starting point byte offset */
size_t acc; /*accumulator */
@@ -165,9 +165,9 @@ H5V_hyper_stride(intn n, const size_t *size,
/* others */
for (i = n - 2, acc = 1; i >= 0; --i) {
size_t tmp = acc * (total_size[i+1] - size[i+1]);
- assert (tmp<((size_t)1<<(8*sizeof(intn)-1)));
- stride[i] = (intn)tmp;
- acc *= total_size[i + 1];
+ assert (tmp<((size_t)1<<(8*sizeof(ssize_t)-1)));
+ stride[i] = (size_t)tmp; /*overflow checked*/
+ acc *= total_size[i+1];
skip += acc * (offset ? offset[i] : 0);
}
@@ -290,7 +290,7 @@ H5V_hyper_fill(intn n, const size_t *_size,
{
uint8 *dst = (uint8 *) _dst; /*cast for ptr arithmetic */
size_t size[H5V_HYPER_NDIMS]; /*a modifiable copy of _size */
- intn dst_stride[H5V_HYPER_NDIMS]; /*destination stride info */
+ ssize_t dst_stride[H5V_HYPER_NDIMS]; /*destination stride info */
size_t dst_start; /*byte offset to start of stride*/
size_t elmt_size = 1; /*bytes per element */
herr_t status; /*function return status */
@@ -373,8 +373,8 @@ H5V_hyper_copy(intn n, const size_t *_size,
const uint8 *src = (const uint8 *)_src; /*cast for ptr arithmtc */
uint8 *dst = (uint8 *) _dst; /*cast for ptr arithmtc */
size_t size[H5V_HYPER_NDIMS]; /*a modifiable _size */
- intn src_stride[H5V_HYPER_NDIMS]; /*source stride info */
- intn dst_stride[H5V_HYPER_NDIMS]; /*dest stride info */
+ ssize_t src_stride[H5V_HYPER_NDIMS]; /*source stride info */
+ ssize_t dst_stride[H5V_HYPER_NDIMS]; /*dest stride info */
size_t dst_start, src_start; /*offset to start at */
size_t elmt_size = 1; /*element size in bytes */
herr_t status; /*return status */
@@ -436,7 +436,7 @@ H5V_hyper_copy(intn n, const size_t *_size,
*/
herr_t
H5V_stride_fill(intn n, size_t elmt_size, const size_t *size,
- const intn *stride, void *_dst, uint8 fill_value)
+ const ssize_t *stride, void *_dst, uint8 fill_value)
{
uint8 *dst = (uint8 *) _dst; /*cast for ptr arithmetic */
size_t idx[H5V_HYPER_NDIMS]; /*1-origin indices */
@@ -457,10 +457,8 @@ H5V_stride_fill(intn n, size_t elmt_size, const size_t *size,
for (j = n - 1, carry = TRUE; j >= 0 && carry; --j) {
dst += stride[j];
- if (--idx[j])
- carry = FALSE;
- else
- idx[j] = size[j];
+ if (--idx[j]) carry = FALSE;
+ else idx[j] = size[j];
}
}
@@ -492,8 +490,8 @@ H5V_stride_fill(intn n, size_t elmt_size, const size_t *size,
*/
herr_t
H5V_stride_copy(intn n, size_t elmt_size, const size_t *size,
- const intn *dst_stride, void *_dst,
- const intn *src_stride, const void *_src)
+ const ssize_t *dst_stride, void *_dst,
+ const ssize_t *src_stride, const void *_src)
{
uint8 *dst = (uint8 *) _dst; /*cast for ptr arithmetic*/
const uint8 *src = (const uint8 *) _src; /*cast for ptr arithmetic*/
@@ -547,11 +545,11 @@ herr_t
H5V_stride_copy2(size_t nelmts, size_t elmt_size,
/* destination */
- intn dst_n, const size_t *dst_size, const intn *dst_stride,
+ intn dst_n, const size_t *dst_size, const ssize_t *dst_stride,
void *_dst,
/* source */
- intn src_n, const size_t *src_size, const intn *src_stride,
+ intn src_n, const size_t *src_size, const ssize_t *src_stride,
const void *_src)
{
uint8 *dst = (uint8 *) _dst;