diff options
Diffstat (limited to 'src/H5Tarray.c')
-rw-r--r-- | src/H5Tarray.c | 172 |
1 files changed, 71 insertions, 101 deletions
diff --git a/src/H5Tarray.c b/src/H5Tarray.c index 71c80b8..3fdf3a5 100644 --- a/src/H5Tarray.c +++ b/src/H5Tarray.c @@ -57,57 +57,54 @@ H5T_init_array_interface(void) * Purpose: Create a new array data type based on the specified BASE_TYPE. * The type is an array with NDIMS dimensionality and the size of the * array is DIMS. The total member size should be relatively small. - * PERM is currently unimplemented and unused, but is designed to contain - * the dimension permutation from C order. * Array datatypes are currently limited to H5S_MAX_RANK number of * dimensions and must have the number of dimensions set greater than * 0. (i.e. 0 > ndims <= H5S_MAX_RANK) All dimensions sizes must be greater * than 0 also. * * Return: Success: ID of new array data type - * * Failure: Negative * * Programmer: Quincey Koziol * Thursday, Oct 26, 2000 * - * Modifications: - * *------------------------------------------------------------------------- */ hid_t -H5Tarray_create(hid_t base_id, int ndims, const hsize_t dim[/* ndims */], - const int perm[/* ndims */]) +H5Tarray_create(hid_t base_id, unsigned ndims, const hsize_t dim[/* ndims */], + const int UNUSED perm[/* ndims */]) { - H5T_t *base = NULL; /* base data type */ - H5T_t *dt = NULL; /* new array data type */ - int i; /* local index variable */ - hid_t ret_value; /* return value */ + H5T_t *base; /* base data type */ + H5T_t *dt; /* new array data type */ + unsigned u; /* local index variable */ + hid_t ret_value; /* return value */ - FUNC_ENTER_API(H5Tarray_create, FAIL); - H5TRACE4("i","iIs*h*Is",base_id,ndims,dim,perm); + FUNC_ENTER_API(H5Tarray_create, FAIL) + H5TRACE3("i","iIs*h",base_id,ndims,dim); /* Check args */ - if (ndims<1 || ndims>H5S_MAX_RANK) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid dimensionality"); - if (ndims>0 && !dim) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no dimensions specified"); - for(i=0; i<ndims; i++) - if(!(dim[i]>0)) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "zero-sized dimension specified"); - if (NULL==(base=H5I_object_verify(base_id,H5I_DATATYPE))) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an valid base datatype"); + if(ndims < 1 || ndims > H5S_MAX_RANK) + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid dimensionality") + if(!dim) + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no dimensions specified") + for(u = 0; u < ndims; u++) + if(!(dim[u] > 0)) + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "zero-sized dimension specified") + if(NULL == (base = H5I_object_verify(base_id, H5I_DATATYPE))) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an valid base datatype") + if(perm) + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "dimension permutations not supported") /* Create the actual array datatype */ - if ((dt=H5T_array_create(base,ndims,dim,perm))==NULL) - HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, "unable to create datatype"); + if((dt = H5T_array_create(base, ndims, dim)) == NULL) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, "unable to create datatype") /* Atomize the type */ - if ((ret_value=H5I_register(H5I_DATATYPE, dt))<0) - HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, "unable to register datatype"); + if((ret_value = H5I_register(H5I_DATATYPE, dt)) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, "unable to register datatype") done: - FUNC_LEAVE_API(ret_value); + FUNC_LEAVE_API(ret_value) } /* end H5Tarray_create */ @@ -116,34 +113,29 @@ done: * * Purpose: Internal routine to create a new array data type based on the * specified BASE_TYPE. The type is an array with NDIMS dimensionality - * and the size of the array is DIMS. PERM is currently unimplemented - * and unused, but is designed to contain the dimension permutation from - * C order. Array datatypes are currently limited to H5S_MAX_RANK number - * of * dimensions. + * and the size of the array is DIMS. + * Array datatypes are currently limited to H5S_MAX_RANK number + * of dimensions. * * Return: Success: ID of new array data type - * * Failure: Negative * * Programmer: Quincey Koziol * Thursday, Oct 26, 2000 * - * Modifications: - * *------------------------------------------------------------------------- */ H5T_t * -H5T_array_create(H5T_t *base, int ndims, const hsize_t dim[/* ndims */], - const int perm[/* ndims */]) +H5T_array_create(H5T_t *base, unsigned ndims, const hsize_t dim[/* ndims */]) { - H5T_t *ret_value = NULL; /*new array data type */ - int i; /* local index variable */ + H5T_t *ret_value; /* new array data type */ + unsigned u; /* local index variable */ - FUNC_ENTER_NOAPI(H5T_array_create, NULL); + FUNC_ENTER_NOAPI(H5T_array_create, NULL) - assert(base); - assert(ndims>0 && ndims<=H5S_MAX_RANK); - assert(dim); + HDassert(base); + HDassert(ndims <= H5S_MAX_RANK); + HDassert(dim); /* Build new type */ if(NULL == (ret_value = H5T_alloc())) @@ -157,26 +149,22 @@ H5T_array_create(H5T_t *base, int ndims, const hsize_t dim[/* ndims */], ret_value->shared->u.array.ndims = ndims; /* Copy the array dimensions & compute the # of elements in the array */ - for(i=0, ret_value->shared->u.array.nelem=1; i<ndims; i++) { - H5_ASSIGN_OVERFLOW(ret_value->shared->u.array.dim[i],dim[i],hsize_t,size_t); - ret_value->shared->u.array.nelem *= (size_t)dim[i]; + for(u = 0, ret_value->shared->u.array.nelem = 1; u < ndims; u++) { + H5_ASSIGN_OVERFLOW(ret_value->shared->u.array.dim[u], dim[u], hsize_t, size_t); + ret_value->shared->u.array.nelem *= (size_t)dim[u]; } /* end for */ - /* Copy the dimension permutations */ - for(i=0; i<ndims; i++) - ret_value->shared->u.array.perm[i] = perm ? perm[i] : i; - /* Set the array's size (number of elements * element datatype's size) */ ret_value->shared->size = ret_value->shared->parent->shared->size * ret_value->shared->u.array.nelem; /* * Set the "force conversion" flag if the base datatype indicates */ - if(base->shared->force_conv==TRUE) - ret_value->shared->force_conv=TRUE; + if(base->shared->force_conv == TRUE) + ret_value->shared->force_conv = TRUE; done: - FUNC_LEAVE_NOAPI(ret_value); + FUNC_LEAVE_NOAPI(ret_value) } /* end H5T_array_create */ @@ -191,30 +179,28 @@ done: * Programmer: Quincey Koziol * Monday, November 6, 2000 * - * Modifications: - * *------------------------------------------------------------------------- */ int H5Tget_array_ndims(hid_t type_id) { - H5T_t *dt = NULL; /* pointer to array data type */ + H5T_t *dt; /* pointer to array data type */ int ret_value; /* return value */ - FUNC_ENTER_API(H5Tget_array_ndims, FAIL); + FUNC_ENTER_API(H5Tget_array_ndims, FAIL) H5TRACE1("Is","i",type_id); /* Check args */ - if (NULL==(dt=H5I_object_verify(type_id,H5I_DATATYPE))) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype object"); - if(dt->shared->type!=H5T_ARRAY) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an array datatype"); + if(NULL == (dt = H5I_object_verify(type_id,H5I_DATATYPE))) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype object") + if(dt->shared->type != H5T_ARRAY) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an array datatype") /* Retrieve the number of dimensions */ ret_value = H5T_get_array_ndims(dt); done: - FUNC_LEAVE_API(ret_value); + FUNC_LEAVE_API(ret_value) } /* end H5Tget_array_ndims */ @@ -230,25 +216,18 @@ done: * Programmer: Raymond Lu * October 10, 2002 * - * Modifications: - * *------------------------------------------------------------------------- */ int H5T_get_array_ndims(H5T_t *dt) { - int ret_value; /* return value */ - - FUNC_ENTER_NOAPI(H5T_get_array_ndims, FAIL); + FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5T_get_array_ndims) - assert(dt); - assert(dt->shared->type==H5T_ARRAY); + HDassert(dt); + HDassert(dt->shared->type == H5T_ARRAY); /* Retrieve the number of dimensions */ - ret_value=dt->shared->u.array.ndims; - -done: - FUNC_LEAVE_NOAPI(ret_value); + FUNC_LEAVE_NOAPI(dt->shared->u.array.ndims) } /* end H5T_get_array_ndims */ @@ -263,30 +242,28 @@ done: * Programmer: Quincey Koziol * Monday, November 6, 2000 * - * Modifications: - * *------------------------------------------------------------------------- */ int -H5Tget_array_dims(hid_t type_id, hsize_t dims[], int perm[]) +H5Tget_array_dims(hid_t type_id, hsize_t dims[], int UNUSED perm[]) { - H5T_t *dt = NULL; /* pointer to array data type */ + H5T_t *dt; /* pointer to array data type */ int ret_value; /* return value */ - FUNC_ENTER_API(H5Tget_array_dims, FAIL); - H5TRACE3("Is","i*h*Is",type_id,dims,perm); + FUNC_ENTER_API(H5Tget_array_dims, FAIL) + H5TRACE2("Is","i*h",type_id,dims); /* Check args */ - if (NULL==(dt=H5I_object_verify(type_id,H5I_DATATYPE))) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype object"); - if(dt->shared->type!=H5T_ARRAY) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an array datatype"); + if(NULL == (dt = H5I_object_verify(type_id,H5I_DATATYPE))) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype object") + if(dt->shared->type != H5T_ARRAY) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an array datatype") /* Retrieve the sizes of the dimensions */ - if((ret_value=H5T_get_array_dims(dt, dims, perm))<0) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "unable to get dimension sizes"); + if((ret_value = H5T_get_array_dims(dt, dims)) < 0) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "unable to get dimension sizes") done: - FUNC_LEAVE_API(ret_value); + FUNC_LEAVE_API(ret_value) } /* end H5Tget_array_dims */ @@ -302,35 +279,28 @@ done: * Programmer: Raymond Lu * October 10, 2002 * - * Modifications: - * *------------------------------------------------------------------------- */ int -H5T_get_array_dims(H5T_t *dt, hsize_t dims[], int perm[]) +H5T_get_array_dims(H5T_t *dt, hsize_t dims[]) { + unsigned u; /* Local index variable */ int ret_value; /* return value */ - int i; /* Local index variable */ - FUNC_ENTER_NOAPI(H5T_get_array_dims, FAIL); + FUNC_ENTER_NOAPI(H5T_get_array_dims, FAIL) - assert(dt); - assert(dt->shared->type==H5T_ARRAY); + HDassert(dt); + HDassert(dt->shared->type == H5T_ARRAY); /* Retrieve the sizes of the dimensions */ if(dims) - for(i=0; i<dt->shared->u.array.ndims; i++) - dims[i]=dt->shared->u.array.dim[i]; - - /* Retrieve the dimension permutations */ - if(perm) - for(i=0; i<dt->shared->u.array.ndims; i++) - perm[i]=dt->shared->u.array.perm[i]; + for(u = 0; u < dt->shared->u.array.ndims; u++) + dims[u] = dt->shared->u.array.dim[u]; /* Pass along the array rank as the return value */ - ret_value=dt->shared->u.array.ndims; + ret_value = dt->shared->u.array.ndims; done: - FUNC_LEAVE_NOAPI(ret_value); + FUNC_LEAVE_NOAPI(ret_value) } /* end H5T_get_array_dims */ |