From c7741d35374aa20a2bb7e25f2511228e8a8fcfb5 Mon Sep 17 00:00:00 2001 From: Pedro Vicente Nunes Date: Wed, 13 May 2009 11:19:44 -0500 Subject: [svn-r16945] bug fix. call free on a string allocated by HD5f2cstring tested: linux, windows --- hl/fortran/src/H5IMfc.c | 1249 ++++++++++++++------------ hl/fortran/src/H5LTfc.c | 2287 +++++++++++++++++++++++++---------------------- hl/fortran/src/H5TBfc.c | 1678 ++++++++++++++++++---------------- 3 files changed, 2824 insertions(+), 2390 deletions(-) diff --git a/hl/fortran/src/H5IMfc.c b/hl/fortran/src/H5IMfc.c index 367de86..bbf98cf 100755 --- a/hl/fortran/src/H5IMfc.c +++ b/hl/fortran/src/H5IMfc.c @@ -1,17 +1,17 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +* Copyright by The HDF Group. * +* Copyright by the Board of Trustees of the University of Illinois. * +* All rights reserved. * +* * +* This file is part of HDF5. The full HDF5 copyright notice, including * +* terms governing use, modification, and redistribution, is contained in * +* the files COPYING and Copyright.html. COPYING can be found at the root * +* of the source code distribution tree; Copyright.html can be found at the * +* root level of an installed copy of the electronic HDF5 document set and * +* is linked from the top-level documents page. It can also be found at * +* http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +* access to either file, you may request a copy from help@hdfgroup.org. * +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* This files contains C stubs for H5D Fortran APIs */ @@ -20,74 +20,86 @@ /*------------------------------------------------------------------------- - * Function: h5immake_image_8bit_c - * - * Purpose: Call H5IMmake_image_8bit - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 05, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5immake_image_8bit_c +* +* Purpose: Call H5IMmake_image_8bit +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 05, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5immake_image_8bit_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hsize_t_f *width, - hsize_t_f *height, - int_f *buf) + int_f *namelen, + _fcd name, + hsize_t_f *width, + hsize_t_f *height, + int_f *buf) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = (int)*namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - -/* - * Call H5IMmake_image_8bitf function. - */ - c_loc_id = (hid_t)*loc_id; - ret = H5IMmake_image_8bitf(c_loc_id,c_name,(hsize_t)*width,(hsize_t)*height,buf); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + int c_namelen; + hsize_t w = (hsize_t)*width; + hsize_t h = (hsize_t)*height; + + /* + * convert FORTRAN name to C name + */ + c_namelen = (int)*namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + /* + * call H5IMmake_image_8bitf function. + */ + c_loc_id = (hid_t)*loc_id; + ret = H5IMmake_image_8bitf(c_loc_id,c_name,w,h,buf); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + + return ret_value; + + } /*------------------------------------------------------------------------- - * Function: h5imread_image_c - * - * Purpose: Call H5IMread_image - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 05, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5imread_image_c +* +* Purpose: Call H5IMread_image +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 05, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5imread_image_c (hid_t_f *loc_id, @@ -95,235 +107,268 @@ nh5imread_image_c (hid_t_f *loc_id, _fcd name, int_f *buf) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - - -/* - * Convert FORTRAN name to C name - */ - c_namelen = (int)*namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - -/* - * Call H5IMread_image function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5IMread_imagef(c_loc_id,c_name,buf); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + int c_namelen; + + /* + * convert FORTRAN name to C name + */ + c_namelen = (int)*namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + /* + * call H5IMread_image function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5IMread_imagef(c_loc_id,c_name,buf); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: h5immake_image_24bit_c - * - * Purpose: Call H5IMmake_image_24bit - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 05, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5immake_image_24bit_c +* +* Purpose: Call H5IMmake_image_24bit +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 05, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5immake_image_24bit_c (hid_t_f *loc_id, int_f *namelen, _fcd name, - int_f *ilen, + int_f *ilen, _fcd il, hsize_t_f *width, hsize_t_f *height, void *buf) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - char *c_il; - int c_ilen; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - - c_ilen = *ilen; - c_il = (char *)HD5f2cstring(il, c_ilen); - if (c_il == NULL) return ret_value; - -/* - * Call H5IMmake_image_24bitf function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5IMmake_image_24bitf(c_loc_id,c_name,(hsize_t)*width,(hsize_t)*height,c_il,buf); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + int c_namelen; + char *c_il = NULL; + int c_ilen; + hsize_t w = (hsize_t)*width; + hsize_t h = (hsize_t)*height; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + c_ilen = *ilen; + c_il = (char *)HD5f2cstring(il, c_ilen); + if (c_il == NULL) + goto done; + + /* + * call H5IMmake_image_24bitf function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5IMmake_image_24bitf(c_loc_id,c_name,w,h,c_il,buf); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + if(c_il!=NULL) + free(c_il); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: h5imget_image_info_c - * - * Purpose: Call H5IMget_image_info - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 05, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5imget_image_info_c +* +* Purpose: Call H5IMget_image_info +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 05, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5imget_image_info_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hsize_t_f *width, - hsize_t_f *height, - hsize_t_f *planes, - hsize_t_f *npals, - int_f *ilen, - _fcd interlace) + int_f *namelen, + _fcd name, + hsize_t_f *width, + hsize_t_f *height, + hsize_t_f *planes, + hsize_t_f *npals, + int_f *ilen, + _fcd interlace) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - hsize_t c_width; - hsize_t c_height; - hsize_t c_planes; - hssize_t c_npals; - char *c_buf=NULL; /* Buffer to hold C string */ - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - -/* - * Allocate buffer to hold name of an attribute - */ - if ((c_buf = malloc((size_t)*ilen +1)) == NULL) - return ret_value; - -/* - * Call H5IMget_image_info function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5IMget_image_info(c_loc_id,c_name,&c_width,&c_height,&c_planes,c_buf,&c_npals); - - *width = (hsize_t_f) c_width; - *height = (hsize_t_f) c_height; - *planes = (hsize_t_f) c_planes; - *npals = (hsize_t_f) c_npals; - - -/* - * Convert C name to FORTRAN and place it in the given buffer - */ - HD5packFstring(c_buf, _fcdtocp(interlace), (size_t)*ilen); - - if(c_buf) free(c_buf); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + int c_namelen; + hsize_t c_width; + hsize_t c_height; + hsize_t c_planes; + hssize_t c_npals; + char *c_buf=NULL; /* buffer to hold C string */ + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + /* + * allocate buffer to hold name of an attribute + */ + if ((c_buf = malloc((size_t)*ilen +1)) == NULL) + goto done; + + /* + * call H5IMget_image_info function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5IMget_image_info(c_loc_id,c_name,&c_width,&c_height,&c_planes,c_buf,&c_npals); + + if (ret < 0) + goto done; + + *width = (hsize_t_f) c_width; + *height = (hsize_t_f) c_height; + *planes = (hsize_t_f) c_planes; + *npals = (hsize_t_f) c_npals; + + /* + * convert C name to FORTRAN and place it in the given buffer + */ + HD5packFstring(c_buf, _fcdtocp(interlace), (size_t)*ilen); + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + if(c_buf!=NULL) + free(c_buf); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: h5imis_image_c - * - * Purpose: Call H5IMis_image - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 06, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5imis_image_c +* +* Purpose: Call H5IMis_image +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 06, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5imis_image_c(hid_t_f *loc_id, int_f *namelen, _fcd name) { - hid_t c_loc_id; - char *c_name; - int c_namelen; + hid_t c_loc_id; + char *c_name = NULL; + int c_namelen; + herr_t ret; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) return -1; + + /* + * call H5LTget_dataset_ndims function. + */ + c_loc_id = (hid_t)*loc_id; -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return -1; + ret = H5IMis_image(c_loc_id, c_name); -/* - * Call H5LTget_dataset_ndims function. - */ - c_loc_id = (hid_t)*loc_id; + if(c_name!=NULL) + free(c_name); - return( H5IMis_image(c_loc_id, c_name)); + return ret; } /*------------------------------------------------------------------------- - * Function: h5immake_palette_c - * - * Purpose: Call H5IMmake_palette - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 06, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5immake_palette_c +* +* Purpose: Call H5IMmake_palette +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 06, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5immake_palette_c (hid_t_f *loc_id, @@ -332,62 +377,72 @@ nh5immake_palette_c (hid_t_f *loc_id, hsize_t_f *dims, void *buf) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - hsize_t *c_dims; - int i; - int rank=2; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - - c_dims = malloc(sizeof(hsize_t) * (rank )); - if (!c_dims) return ret_value; - - for (i = 0; i < rank ; i++) { - c_dims[i] = dims[i]; - } - -/* - * Call H5IMmake_palette function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5IMmake_palettef(c_loc_id,c_name,c_dims,buf); - - free (c_dims); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + int c_namelen; + hsize_t *c_dims; + int i; + int rank=2; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + c_dims = malloc(sizeof(hsize_t) * (rank )); + if (c_dims == NULL) + goto done; + + for (i = 0; i < rank ; i++) + { + c_dims[i] = dims[i]; + } + + /* + * call H5IMmake_palette function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5IMmake_palettef(c_loc_id,c_name,c_dims,buf); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + if(c_dims!=NULL) + free(c_dims); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: h5imlink_palette_c - * - * Purpose: Call H5IMlink_palette - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 06, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5imlink_palette_c +* +* Purpose: Call H5IMlink_palette +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 06, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5imlink_palette_c (hid_t_f *loc_id, @@ -396,119 +451,138 @@ nh5imlink_palette_c (hid_t_f *loc_id, int_f *ilen, _fcd pal_name) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - char *c_namepal; - int c_namelenpal; - - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - - c_namelenpal = *ilen; - c_namepal = (char *)HD5f2cstring(pal_name, c_namelenpal); - if (c_namepal == NULL) return ret_value; - -/* - * Call H5IMlink_palette function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5IMlink_palette(c_loc_id,c_name,c_namepal); - - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + char *c_namepal = NULL; + int c_namelen; + int c_namelenpal; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + c_namelenpal = *ilen; + c_namepal = (char *)HD5f2cstring(pal_name, c_namelenpal); + if (c_namepal == NULL) + goto done; + + /* + * call H5IMlink_palette function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5IMlink_palette(c_loc_id,c_name,c_namepal); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + if(c_namepal!=NULL) + free(c_namepal); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: h5imunlink_palette_c - * - * Purpose: Call H5IMunlink_palette - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 06, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5imunlink_palette_c +* +* Purpose: Call H5IMunlink_palette +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 06, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5imunlink_palette_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *ilen, - _fcd pal_name) + int_f *namelen, + _fcd name, + int_f *ilen, + _fcd pal_name) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - char *c_namepal; - int c_namelenpal; - - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - - c_namelenpal = *ilen; - c_namepal = (char *)HD5f2cstring(pal_name, c_namelenpal); - if (c_namepal == NULL) return ret_value; - -/* - * Call H5IMunlink_palette function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5IMunlink_palette(c_loc_id,c_name,c_namepal); - - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + char *c_namepal = NULL; + int c_namelen; + int c_namelenpal; + + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + c_namelenpal = *ilen; + c_namepal = (char *)HD5f2cstring(pal_name, c_namelenpal); + if (c_namepal == NULL) + goto done; + + /* + * call H5IMunlink_palette function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5IMunlink_palette(c_loc_id,c_name,c_namepal); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + if(c_namepal!=NULL) + free(c_namepal); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: h5imget_npalettes_c - * - * Purpose: Call H5IMget_npalettes - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 06 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5imget_npalettes_c +* +* Purpose: Call H5IMget_npalettes +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 06 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5imget_npalettes_c(hid_t_f *loc_id, @@ -516,189 +590,220 @@ nh5imget_npalettes_c(hid_t_f *loc_id, _fcd name, hsize_t_f *npals) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - hssize_t c_npals; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - - /* - * Call H5IMget_image_info function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5IMget_npalettes(c_loc_id,c_name,&c_npals); - - *npals = (hsize_t_f) c_npals; - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + int c_namelen; + hssize_t c_npals; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + /* + * call H5IMget_image_info function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5IMget_npalettes(c_loc_id,c_name,&c_npals); + + *npals = (hsize_t_f) c_npals; + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: h5imget_palette_info_c - * - * Purpose: Call H5IMget_palette_info - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 06 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5imget_palette_info_c +* +* Purpose: Call H5IMget_palette_info +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 06 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5imget_palette_info_c(hid_t_f *loc_id, int_f *namelen, - _fcd name, - int_f *pal_number, - hsize_t_f *dims) + _fcd name, + int_f *pal_number, + hsize_t_f *dims) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - hsize_t c_dims[2]; - int i; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - - /* - * Call H5IMget_image_info function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5IMget_palette_info(c_loc_id,c_name,*pal_number,c_dims); - - for (i = 0; i < 2 ; i++) { - dims[i] = (hsize_t_f) c_dims[i]; - } - - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + int c_namelen; + hsize_t c_dims[2]; + int i; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + /* + * call H5IMget_image_info function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5IMget_palette_info(c_loc_id,c_name,*pal_number,c_dims); + + if (ret < 0) + goto done; + + for (i = 0; i < 2 ; i++) + { + dims[i] = (hsize_t_f) c_dims[i]; + } + + ret_value = 0; + + +done: + if(c_name!=NULL) + free(c_name); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: h5imget_palette_c - * - * Purpose: Call H5IMget_palette - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 06 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5imget_palette_c +* +* Purpose: Call H5IMget_palette +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 06 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5imget_palette_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *pal_number, - void *buf) + int_f *namelen, + _fcd name, + int_f *pal_number, + void *buf) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - - /* - * Call H5IMget_image_info function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5IMget_palettef(c_loc_id,c_name,*pal_number,buf); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + int c_namelen; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + /* + * call H5IMget_image_info function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5IMget_palettef(c_loc_id,c_name,*pal_number,buf); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: h5imis_palette_c - * - * Purpose: Call H5IMis_palette - * - * Return: true, false, fail - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 06, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5imis_palette_c +* +* Purpose: Call H5IMis_palette +* +* Return: true, false, fail +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 06, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5imis_palette_c(hid_t_f *loc_id, int_f *namelen, - _fcd name) + _fcd name) { - hid_t c_loc_id; - char *c_name; - int c_namelen; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return -1; - -/* - * Call H5IMis_palette function. - */ - c_loc_id = (hid_t)*loc_id; - - return( H5IMis_palette(c_loc_id, c_name)); + hid_t c_loc_id; + char *c_name; + int c_namelen; + herr_t ret; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) return -1; + + /* + * call H5IMis_palette function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5IMis_palette(c_loc_id, c_name); + + if(c_name!=NULL) + free(c_name); + + return ret; } diff --git a/hl/fortran/src/H5LTfc.c b/hl/fortran/src/H5LTfc.c index 61c7547..412b19e 100755 --- a/hl/fortran/src/H5LTfc.c +++ b/hl/fortran/src/H5LTfc.c @@ -1,17 +1,17 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +* Copyright by The HDF Group. * +* Copyright by the Board of Trustees of the University of Illinois. * +* All rights reserved. * +* * +* This file is part of HDF5. The full HDF5 copyright notice, including * +* terms governing use, modification, and redistribution, is contained in * +* the files COPYING and Copyright.html. COPYING can be found at the root * +* of the source code distribution tree; Copyright.html can be found at the * +* root level of an installed copy of the electronic HDF5 document set and * +* is linked from the top-level documents page. It can also be found at * +* http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +* access to either file, you may request a copy from help@hdfgroup.org. * +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* This files contains C stubs for H5D Fortran APIs */ @@ -21,23 +21,23 @@ /*------------------------------------------------------------------------- - * Function: H5LTmake_dataset_c - * - * Purpose: Call H5LTmake_dataset - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: September 09, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: H5LTmake_dataset_c +* +* Purpose: Call H5LTmake_dataset +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: September 09, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltmake_dataset_c (hid_t_f *loc_id, @@ -48,57 +48,66 @@ nh5ltmake_dataset_c (hid_t_f *loc_id, hid_t_f *type_id, void *buf) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - hid_t c_type_id; - char *c_name; - int c_namelen; - hsize_t *c_dims; - int i; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - - c_dims = malloc(sizeof(hsize_t) * (*rank )); - if (!c_dims) return ret_value; - -/* - * Transpose dimension arrays because of C-FORTRAN storage order - */ - for (i = 0; i < *rank ; i++) { - c_dims[i] = dims[*rank - i - 1]; - } - -/* - * Call H5LTmake_dataset function. - */ - c_loc_id = (hid_t)*loc_id; - c_type_id = (hid_t)*type_id; - - ret = H5LTmake_dataset(c_loc_id, c_name, *rank, c_dims, c_type_id, buf ); - - free (c_dims); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + hid_t c_type_id; + char *c_name = NULL; + hsize_t *c_dims = NULL; + int c_namelen; + int i; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + c_dims = malloc(sizeof(hsize_t) * (*rank )); + if (c_dims == NULL) + goto done; + + /* + * transpose dimension arrays because of C-FORTRAN storage order + */ + for (i = 0; i < *rank ; i++) + { + c_dims[i] = dims[*rank - i - 1]; + } + + /* + * call H5LTmake_dataset function. + */ + c_loc_id = (hid_t)*loc_id; + c_type_id = (hid_t)*type_id; + + ret = H5LTmake_dataset(c_loc_id, c_name, *rank, c_dims, c_type_id, buf ); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + if(c_dims!=NULL) + free(c_dims); + return ret_value; } int_f nh5ltmake_dataset_int1_c (hid_t_f *loc_id, int_f *namelen, - _fcd name, - int_f *rank, - hsize_t_f *dims, - hid_t_f *type_id, - void *buf) + _fcd name, + int_f *rank, + hsize_t_f *dims, + hid_t_f *type_id, + void *buf) { - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); } int_f nh5ltmake_dataset_int2_c (hid_t_f *loc_id, @@ -109,7 +118,7 @@ nh5ltmake_dataset_int2_c (hid_t_f *loc_id, hid_t_f *type_id, void *buf) { - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); } int_f nh5ltmake_dataset_int3_c (hid_t_f *loc_id, @@ -120,7 +129,7 @@ nh5ltmake_dataset_int3_c (hid_t_f *loc_id, hid_t_f *type_id, void *buf) { - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); } int_f nh5ltmake_dataset_fl1_c (hid_t_f *loc_id, @@ -131,7 +140,7 @@ nh5ltmake_dataset_fl1_c (hid_t_f *loc_id, hid_t_f *type_id, void *buf) { - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); } int_f nh5ltmake_dataset_fl2_c (hid_t_f *loc_id, @@ -142,7 +151,7 @@ nh5ltmake_dataset_fl2_c (hid_t_f *loc_id, hid_t_f *type_id, void *buf) { - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); } int_f nh5ltmake_dataset_fl3_c (hid_t_f *loc_id, @@ -153,7 +162,7 @@ nh5ltmake_dataset_fl3_c (hid_t_f *loc_id, hid_t_f *type_id, void *buf) { - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); } int_f nh5ltmake_dataset_dl1_c (hid_t_f *loc_id, @@ -164,7 +173,7 @@ nh5ltmake_dataset_dl1_c (hid_t_f *loc_id, hid_t_f *type_id, void *buf) { - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); } int_f nh5ltmake_dataset_dl2_c (hid_t_f *loc_id, @@ -175,7 +184,7 @@ nh5ltmake_dataset_dl2_c (hid_t_f *loc_id, hid_t_f *type_id, void *buf) { - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); } int_f nh5ltmake_dataset_dl3_c (hid_t_f *loc_id, @@ -186,21 +195,43 @@ nh5ltmake_dataset_dl3_c (hid_t_f *loc_id, hid_t_f *type_id, void *buf) { - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); } int_f nh5ltmake_dataset_nint1_c (hid_t_f *loc_id, - int_f *namelen, + int_f *namelen, _fcd name, int_f *rank, hsize_t_f *dims, hid_t_f *type_id, void *buf) { - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); } int_f nh5ltmake_dataset_nint2_c (hid_t_f *loc_id, + int_f *namelen, + _fcd name, + int_f *rank, + hsize_t_f *dims, + hid_t_f *type_id, + void *buf) +{ + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); +} +int_f +nh5ltmake_dataset_nint3_c (hid_t_f *loc_id, + int_f *namelen, + _fcd name, + int_f *rank, + hsize_t_f *dims, + hid_t_f *type_id, + void *buf) +{ + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); +} +int_f +nh5ltmake_dataset_nfl1_c (hid_t_f *loc_id, int_f *namelen, _fcd name, int_f *rank, @@ -208,10 +239,10 @@ nh5ltmake_dataset_nint2_c (hid_t_f *loc_id, hid_t_f *type_id, void *buf) { - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); } int_f -nh5ltmake_dataset_nint3_c (hid_t_f *loc_id, +nh5ltmake_dataset_nfl2_c (hid_t_f *loc_id, int_f *namelen, _fcd name, int_f *rank, @@ -219,92 +250,70 @@ nh5ltmake_dataset_nint3_c (hid_t_f *loc_id, hid_t_f *type_id, void *buf) { - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); -} -int_f -nh5ltmake_dataset_nfl1_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *rank, - hsize_t_f *dims, - hid_t_f *type_id, - void *buf) -{ - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); -} -int_f -nh5ltmake_dataset_nfl2_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *rank, - hsize_t_f *dims, - hid_t_f *type_id, - void *buf) -{ - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); } int_f nh5ltmake_dataset_nfl3_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *rank, - hsize_t_f *dims, - hid_t_f *type_id, - void *buf) + int_f *namelen, + _fcd name, + int_f *rank, + hsize_t_f *dims, + hid_t_f *type_id, + void *buf) { - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); } int_f nh5ltmake_dataset_ndl1_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *rank, - hsize_t_f *dims, - hid_t_f *type_id, - void *buf) + int_f *namelen, + _fcd name, + int_f *rank, + hsize_t_f *dims, + hid_t_f *type_id, + void *buf) { - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); } int_f nh5ltmake_dataset_ndl2_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *rank, - hsize_t_f *dims, - hid_t_f *type_id, - void *buf) + int_f *namelen, + _fcd name, + int_f *rank, + hsize_t_f *dims, + hid_t_f *type_id, + void *buf) { - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); } int_f nh5ltmake_dataset_ndl3_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *rank, - hsize_t_f *dims, - hid_t_f *type_id, - void *buf) + int_f *namelen, + _fcd name, + int_f *rank, + hsize_t_f *dims, + hid_t_f *type_id, + void *buf) { - return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); + return nh5ltmake_dataset_c (loc_id, namelen, name, rank, dims, type_id, buf); } /*------------------------------------------------------------------------- - * Function: H5LTread_dataset_c - * - * Purpose: Call H5LTmake_dataset - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: September 09, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: H5LTread_dataset_c +* +* Purpose: Call H5LTmake_dataset +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: September 09, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltread_dataset_c (hid_t_f *loc_id, @@ -314,231 +323,239 @@ nh5ltread_dataset_c (hid_t_f *loc_id, void *buf, hsize_t_f *dims) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - hid_t c_type_id; - char *c_name; - int c_namelen; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - -/* - * Call H5LTread_dataset function. - */ - c_loc_id = (hid_t)*loc_id; - c_type_id = (hid_t)*type_id; - - ret = H5LTread_dataset(c_loc_id, c_name, c_type_id, buf ); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + hid_t c_type_id; + char *c_name = NULL; + int c_namelen; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + /* + * call H5LTread_dataset function. + */ + c_loc_id = (hid_t)*loc_id; + c_type_id = (hid_t)*type_id; + + ret = H5LTread_dataset(c_loc_id, c_name, c_type_id, buf ); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + + return ret_value; } int_f nh5ltread_dataset_int1_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_int2_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_int3_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_fl1_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_fl2_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_fl3_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_dl1_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_dl2_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_dl3_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_nint1_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_nint2_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_nint3_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_nfl1_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_nfl2_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_nfl3_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_ndl1_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_ndl2_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } int_f nh5ltread_dataset_ndl3_c (hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hid_t_f *type_id, - void *buf, - hsize_t_f *dims) + int_f *namelen, + _fcd name, + hid_t_f *type_id, + void *buf, + hsize_t_f *dims) { - return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); + return nh5ltread_dataset_c(loc_id, namelen, name, type_id, buf, dims); } /*------------------------------------------------------------------------- - * Function: H5LTmake_dataset_string_c - * - * Purpose: Call H5LTmake_dataset - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: September 09, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: H5LTmake_dataset_string_c +* +* Purpose: Call H5LTmake_dataset +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: September 09, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltmake_dataset_string_c (hid_t_f *loc_id, @@ -546,50 +563,58 @@ nh5ltmake_dataset_string_c (hid_t_f *loc_id, _fcd name, char *buf) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - -/* - * Call H5LTmake_dataset_string function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5LTmake_dataset_string(c_loc_id,c_name,buf); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + int c_namelen; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + /* + * call H5LTmake_dataset_string function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5LTmake_dataset_string(c_loc_id,c_name,buf); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: H5LTread_dataset_string_c - * - * Purpose: Call H5LTread_dataset_string - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: September 09, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: H5LTread_dataset_string_c +* +* Purpose: Call H5LTread_dataset_string +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: September 09, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltread_dataset_string_c (hid_t_f *loc_id, @@ -597,541 +622,643 @@ nh5ltread_dataset_string_c (hid_t_f *loc_id, _fcd name, char *buf) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - -/* - * Call H5LTread_dataset_string function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5LTread_dataset_string(c_loc_id,c_name,buf); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + int c_namelen; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + /* + * call H5LTread_dataset_string function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5LTread_dataset_string(c_loc_id,c_name,buf); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: H5LTset_attribute_int_c - * - * Purpose: Call H5LTset_attribute_int - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 05, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: H5LTset_attribute_int_c +* +* Purpose: Call H5LTset_attribute_int +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 05, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltset_attribute_int_c(hid_t_f *loc_id, - int_f *namelen, - _fcd dsetname, - int_f *attrnamelen, - _fcd attrname, - size_t_f *size, - void *buf) + int_f *namelen, + _fcd dsetname, + int_f *attrnamelen, + _fcd attrname, + size_t_f *size, + void *buf) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - char *c_attrname; - int c_namelen; - int c_attrnamelen; - size_t c_size; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(dsetname, c_namelen); - if (c_name == NULL) return ret_value; - - c_attrnamelen = (int)*attrnamelen; - c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); - if (c_attrname == NULL) return ret_value; - -/* - * Call H5LTset_attribute_int function. - */ - c_loc_id = (hid_t)*loc_id; - c_size = (size_t)*size; - - if (sizeof(int_f) == sizeof(int)) - ret = H5LTset_attribute_int(c_loc_id,c_name,c_attrname,buf,c_size); - else if (sizeof(int_f) == sizeof(long)) - ret = H5LTset_attribute_long(c_loc_id,c_name,c_attrname,buf,c_size); - else if (sizeof(int_f) == sizeof(long long)) - ret = H5LTset_attribute_long_long(c_loc_id,c_name,c_attrname,buf,c_size); - else - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + char *c_attrname = NULL; + int c_namelen; + int c_attrnamelen; + size_t c_size; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(dsetname, c_namelen); + if (c_name == NULL) + goto done; + + c_attrnamelen = (int)*attrnamelen; + c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); + if (c_attrname == NULL) + goto done; + + /* + * call H5LTset_attribute_int function. + */ + c_loc_id = (hid_t)*loc_id; + c_size = (size_t)*size; + + if (sizeof(int_f) == sizeof(int)) + ret = H5LTset_attribute_int(c_loc_id,c_name,c_attrname,buf,c_size); + else if (sizeof(int_f) == sizeof(long)) + ret = H5LTset_attribute_long(c_loc_id,c_name,c_attrname,buf,c_size); + else if (sizeof(int_f) == sizeof(long long)) + ret = H5LTset_attribute_long_long(c_loc_id,c_name,c_attrname,buf,c_size); + else + goto done; + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + if(c_attrname!=NULL) + free(c_attrname); - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + return ret_value; } /*------------------------------------------------------------------------- - * Function: H5LTset_attribute_float_c - * - * Purpose: Call H5LTset_attribute_float - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 05, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: H5LTset_attribute_float_c +* +* Purpose: Call H5LTset_attribute_float +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 05, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltset_attribute_float_c(hid_t_f *loc_id, - int_f *namelen, - _fcd dsetname, - int_f *attrnamelen, - _fcd attrname, - size_t_f *size, - void *buf) + int_f *namelen, + _fcd dsetname, + int_f *attrnamelen, + _fcd attrname, + size_t_f *size, + void *buf) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - char *c_attrname; - int c_namelen; - int c_attrnamelen; - size_t c_size; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(dsetname, c_namelen); - if (c_name == NULL) return ret_value; - - c_attrnamelen = *attrnamelen; - c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); - if (c_attrname == NULL) return ret_value; - -/* - * Call H5LTset_attribute_float function. - */ - c_loc_id = (hid_t)*loc_id; - c_size = (size_t)*size; - - ret = H5LTset_attribute_float(c_loc_id,c_name,c_attrname,buf,c_size); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + char *c_attrname = NULL; + int c_namelen; + int c_attrnamelen; + size_t c_size; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(dsetname, c_namelen); + if (c_name == NULL) + goto done; + + c_attrnamelen = *attrnamelen; + c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); + if (c_attrname == NULL) + goto done; + + /* + * Call H5LTset_attribute_float function. + */ + c_loc_id = (hid_t)*loc_id; + c_size = (size_t)*size; + + ret = H5LTset_attribute_float(c_loc_id,c_name,c_attrname,buf,c_size); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + if(c_attrname!=NULL) + free(c_attrname); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: H5LTset_attribute_double_c - * - * Purpose: Call H5LTset_attribute_double - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 05, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: H5LTset_attribute_double_c +* +* Purpose: Call H5LTset_attribute_double +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 05, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltset_attribute_double_c(hid_t_f *loc_id, - int_f *namelen, - _fcd dsetname, - int_f *attrnamelen, - _fcd attrname, - size_t_f *size, - void *buf) + int_f *namelen, + _fcd dsetname, + int_f *attrnamelen, + _fcd attrname, + size_t_f *size, + void *buf) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - char *c_attrname; - int c_namelen; - int c_attrnamelen; - size_t c_size; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(dsetname, c_namelen); - if (c_name == NULL) return ret_value; - - c_attrnamelen = *attrnamelen; - c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); - if (c_attrname == NULL) return ret_value; - -/* - * Call H5LTset_attribute_double function. - */ - c_loc_id = (hid_t)*loc_id; - c_size = (size_t)*size; - - ret = H5LTset_attribute_double(c_loc_id,c_name,c_attrname,buf,c_size); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + char *c_attrname = NULL; + int c_namelen; + int c_attrnamelen; + size_t c_size; + + /* + * Convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(dsetname, c_namelen); + if (c_name == NULL) + goto done; + + c_attrnamelen = *attrnamelen; + c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); + if (c_attrname == NULL) + goto done; + + /* + * Call H5LTset_attribute_double function. + */ + c_loc_id = (hid_t)*loc_id; + c_size = (size_t)*size; + + ret = H5LTset_attribute_double(c_loc_id,c_name,c_attrname,buf,c_size); + + if (ret < 0) + goto done; + + ret_value = 0; + + +done: + if(c_name!=NULL) + free(c_name); + if(c_attrname!=NULL) + free(c_attrname); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: H5LTset_attribute_string_c - * - * Purpose: Call H5LTset_attribute_string - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 05, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: H5LTset_attribute_string_c +* +* Purpose: Call H5LTset_attribute_string +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 05, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltset_attribute_string_c(hid_t_f *loc_id, - int_f *namelen, - _fcd dsetname, - int_f *attrnamelen, - _fcd attrname, - void *buf) + int_f *namelen, + _fcd dsetname, + int_f *attrnamelen, + _fcd attrname, + void *buf) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - char *c_attrname; - int c_namelen; - int c_attrnamelen; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(dsetname, c_namelen); - if (c_name == NULL) return ret_value; - - c_attrnamelen = *attrnamelen; - c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); - if (c_attrname == NULL) return ret_value; - -/* - * Call H5LTset_attribute_string function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5LTset_attribute_string(c_loc_id,c_name,c_attrname,buf); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + char *c_attrname = NULL; + int c_namelen; + int c_attrnamelen; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(dsetname, c_namelen); + if (c_name == NULL) + goto done; + + c_attrnamelen = *attrnamelen; + c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); + if (c_attrname == NULL) + goto done; + + /* + * call H5LTset_attribute_string function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5LTset_attribute_string(c_loc_id,c_name,c_attrname,buf); + + if (ret < 0) + goto done; + + ret_value = 0; + + +done: + if(c_name!=NULL) + free(c_name); + if(c_attrname!=NULL) + free(c_attrname); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: H5LTget_attribute_int_c - * - * Purpose: Call H5LTget_attribute_int - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 05, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: H5LTget_attribute_int_c +* +* Purpose: Call H5LTget_attribute_int +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 05, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltget_attribute_int_c(hid_t_f *loc_id, - int_f *namelen, - _fcd dsetname, - int_f *attrnamelen, - _fcd attrname, - void *buf) + int_f *namelen, + _fcd dsetname, + int_f *attrnamelen, + _fcd attrname, + void *buf) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - char *c_attrname; - int c_attrnamelen; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = (int)*namelen; - c_name = (char *)HD5f2cstring(dsetname, c_namelen); - if (c_name == NULL) return ret_value; - - c_attrnamelen = (int)*attrnamelen; - c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); - if (c_attrname == NULL) return ret_value; - -/* - * Call H5LTget_attribute_int function. - */ - c_loc_id = (hid_t)*loc_id; - - if(sizeof(int_f) == sizeof(int)) - ret = H5LTget_attribute_int(c_loc_id,c_name,c_attrname,buf); - else if (sizeof(int_f) == sizeof(long)) - ret = H5LTget_attribute_long(c_loc_id,c_name,c_attrname,buf); - else if (sizeof(int_f) == sizeof(long long)) - ret = H5LTget_attribute_long_long(c_loc_id,c_name,c_attrname,buf); - else - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + char *c_attrname = NULL; + int c_namelen; + int c_attrnamelen; + + /* + * convert FORTRAN name to C name + */ + c_namelen = (int)*namelen; + c_name = (char *)HD5f2cstring(dsetname, c_namelen); + if (c_name == NULL) + goto done; + + c_attrnamelen = (int)*attrnamelen; + c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); + if (c_attrname == NULL) + goto done; + + /* + * call H5LTget_attribute_int function. + */ + c_loc_id = (hid_t)*loc_id; + + if(sizeof(int_f) == sizeof(int)) + ret = H5LTget_attribute_int(c_loc_id,c_name,c_attrname,buf); + else if (sizeof(int_f) == sizeof(long)) + ret = H5LTget_attribute_long(c_loc_id,c_name,c_attrname,buf); + else if (sizeof(int_f) == sizeof(long long)) + ret = H5LTget_attribute_long_long(c_loc_id,c_name,c_attrname,buf); + else + goto done; + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + if(c_attrname!=NULL) + free(c_attrname); - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + + return ret_value; } /*------------------------------------------------------------------------- - * Function: H5LTget_attribute_float_c - * - * Purpose: Call H5LTget_attribute_float - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 05, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: H5LTget_attribute_float_c +* +* Purpose: Call H5LTget_attribute_float +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 05, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltget_attribute_float_c(hid_t_f *loc_id, - int_f *namelen, - _fcd dsetname, - int_f *attrnamelen, - _fcd attrname, - void *buf) + int_f *namelen, + _fcd dsetname, + int_f *attrnamelen, + _fcd attrname, + void *buf) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - char *c_attrname; - int c_attrnamelen; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = (int)*namelen; - c_name = (char *)HD5f2cstring(dsetname, c_namelen); - if (c_name == NULL) return ret_value; - - c_attrnamelen = (int)*attrnamelen; - c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); - if (c_attrname == NULL) return ret_value; - -/* - * Call H5LTget_attribute_int function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5LTget_attribute_float(c_loc_id,c_name,c_attrname,buf); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + char *c_attrname = NULL; + int c_namelen; + int c_attrnamelen; + + /* + * convert FORTRAN name to C name + */ + c_namelen = (int)*namelen; + c_name = (char *)HD5f2cstring(dsetname, c_namelen); + if (c_name == NULL) + goto done; + + c_attrnamelen = (int)*attrnamelen; + c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); + if (c_attrname == NULL) + goto done; + + /* + * call H5LTget_attribute_int function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5LTget_attribute_float(c_loc_id,c_name,c_attrname,buf); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + if(c_attrname!=NULL) + free(c_attrname); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: H5LTget_attribute_double_c - * - * Purpose: Call H5LTget_attribute_double - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 05, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: H5LTget_attribute_double_c +* +* Purpose: Call H5LTget_attribute_double +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 05, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltget_attribute_double_c(hid_t_f *loc_id, - int_f *namelen, - _fcd dsetname, - int_f *attrnamelen, - _fcd attrname, - void *buf) + int_f *namelen, + _fcd dsetname, + int_f *attrnamelen, + _fcd attrname, + void *buf) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - char *c_attrname; - int c_attrnamelen; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = (int)*namelen; - c_name = (char *)HD5f2cstring(dsetname, c_namelen); - if (c_name == NULL) return ret_value; - - c_attrnamelen = (int)*attrnamelen; - c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); - if (c_attrname == NULL) return ret_value; - -/* - * Call H5LTget_attribute_int function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5LTget_attribute_double(c_loc_id,c_name,c_attrname,buf); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + char *c_attrname = NULL; + int c_namelen; + int c_attrnamelen; + + /* + * convert FORTRAN name to C name + */ + c_namelen = (int)*namelen; + c_name = (char *)HD5f2cstring(dsetname, c_namelen); + if (c_name == NULL) + goto done; + + c_attrnamelen = (int)*attrnamelen; + c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); + if (c_attrname == NULL) + goto done; + + /* + * call H5LTget_attribute_int function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5LTget_attribute_double(c_loc_id,c_name,c_attrname,buf); + + if (ret < 0) + goto done; + + ret_value = 0; + + +done: + if(c_name!=NULL) + free(c_name); + if(c_attrname!=NULL) + free(c_attrname); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: H5LTget_attribute_string_c - * - * Purpose: Call H5LTget_attribute_string - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 05, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: H5LTget_attribute_string_c +* +* Purpose: Call H5LTget_attribute_string +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 05, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltget_attribute_string_c(hid_t_f *loc_id, - int_f *namelen, - _fcd dsetname, - int_f *attrnamelen, - _fcd attrname, - void *buf) + int_f *namelen, + _fcd dsetname, + int_f *attrnamelen, + _fcd attrname, + void *buf) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - char *c_attrname; - int c_attrnamelen; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = (int)*namelen; - c_name = (char *)HD5f2cstring(dsetname, c_namelen); - if (c_name == NULL) return ret_value; - - c_attrnamelen = (int)*attrnamelen; - c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); - if (c_attrname == NULL) return ret_value; - -/* - * Call H5LTget_attribute_int function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5LTget_attribute_string(c_loc_id,c_name,c_attrname,buf); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + char *c_attrname = NULL; + int c_namelen; + int c_attrnamelen; + + /* + * Convert FORTRAN name to C name + */ + c_namelen = (int)*namelen; + c_name = (char *)HD5f2cstring(dsetname, c_namelen); + if (c_name == NULL) + goto done; + + c_attrnamelen = (int)*attrnamelen; + c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); + if (c_attrname == NULL) + goto done; + + /* + * Call H5LTget_attribute_int function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5LTget_attribute_string(c_loc_id,c_name,c_attrname,buf); + + if (ret < 0) + goto done; + + ret_value = 0; + + +done: + if(c_name!=NULL) + free(c_name); + if(c_attrname!=NULL) + free(c_attrname); + + + return ret_value; } /*------------------------------------------------------------------------- - * Function: H5LTget_dataset_ndims_c - * - * Purpose: Call H5LTget_dataset_ndims - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: September 09, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: H5LTget_dataset_ndims_c +* +* Purpose: Call H5LTget_dataset_ndims +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: September 09, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltget_dataset_ndims_c(hid_t_f *loc_id, @@ -1139,96 +1266,111 @@ nh5ltget_dataset_ndims_c(hid_t_f *loc_id, _fcd name, int_f *rank) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - int c_rank; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = (int)*namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - -/* - * Call H5LTget_dataset_ndims function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5LTget_dataset_ndims(c_loc_id, c_name, &c_rank); - - if (ret < 0) return ret_value; - *rank = (int_f)c_rank; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + int c_namelen; + int c_rank; + + /* + * Convert FORTRAN name to C name + */ + c_namelen = (int)*namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + /* + * Call H5LTget_dataset_ndims function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5LTget_dataset_ndims(c_loc_id, c_name, &c_rank); + + if (ret < 0) + goto done; + + *rank = (int_f)c_rank; + ret_value = 0; + + +done: + if(c_name!=NULL) + free(c_name); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: h5ltfind_dataset_c - * - * Purpose: Call H5LTfind_dataset - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: September 09, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5ltfind_dataset_c +* +* Purpose: Call H5LTfind_dataset +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: September 09, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltfind_dataset_c(hid_t_f *loc_id, int_f *namelen, _fcd name) { - hid_t c_loc_id; - char *c_name; - int c_namelen; + hid_t c_loc_id; + char *c_name = NULL; + int c_namelen; + herr_t ret; -/* - * Convert FORTRAN name to C name - */ - c_namelen = (int)*namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return -1; + /* + * Convert FORTRAN name to C name + */ + c_namelen = (int)*namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) return -1; -/* - * Call H5LTget_dataset_ndims function. - */ - c_loc_id = (hid_t)*loc_id; + /* + * Call H5LTget_dataset_ndims function. + */ + c_loc_id = (hid_t)*loc_id; - return( H5LTfind_dataset(c_loc_id, c_name)); + ret = H5LTfind_dataset(c_loc_id, c_name); + + if(c_name!=NULL) + free(c_name); + + return ret; } /*------------------------------------------------------------------------- - * Function: h5ltget_dataset_info_c - * - * Purpose: Call H5LTget_dataset_info - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: September 09, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5ltget_dataset_info_c +* +* Purpose: Call H5LTget_dataset_info +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: September 09, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltget_dataset_info_c(hid_t_f *loc_id, @@ -1238,187 +1380,222 @@ nh5ltget_dataset_info_c(hid_t_f *loc_id, int_f *type_class, size_t_f *type_size) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - int c_namelen; - H5T_class_t c_classtype; - size_t c_type_size; - hsize_t c_dims[32]; - int i; - int c_rank; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = (int)*namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - -/* - * Call H5LTget_dataset_ndims function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5LTget_dataset_info(c_loc_id, c_name, c_dims, &c_classtype, &c_type_size); - if (ret < 0) return ret_value; - - *type_class = c_classtype; - *type_size = (size_t_f)c_type_size; - - /* - * Transpose dimension arrays because of C-FORTRAN storage order - */ - - ret = H5LTget_dataset_ndims(c_loc_id, c_name, &c_rank); - if (ret < 0) return ret_value; - - for (i = 0; i < c_rank ; i++) { - dims[i] = (hsize_t_f) c_dims[c_rank - i - 1]; - } - - - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + int c_namelen; + H5T_class_t c_classtype; + size_t c_type_size; + hsize_t c_dims[32]; + int i; + int c_rank; + + /* + * convert FORTRAN name to C name + */ + c_namelen = (int)*namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + /* + * call H5LTget_dataset_ndims function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5LTget_dataset_info(c_loc_id, c_name, c_dims, &c_classtype, &c_type_size); + if (ret < 0) + goto done; + + *type_class = c_classtype; + *type_size = (size_t_f)c_type_size; + + /* + * transpose dimension arrays because of C-FORTRAN storage order + */ + + ret = H5LTget_dataset_ndims(c_loc_id, c_name, &c_rank); + if (ret < 0) + goto done; + + for (i = 0; i < c_rank ; i++) + { + dims[i] = (hsize_t_f) c_dims[c_rank - i - 1]; + } + + + ret_value = 0; + +done: + if(c_name!=NULL) + free(c_name); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: h5ltget_attribute_ndims_c - * - * Purpose: Call H5LTget_attribute_ndims - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 05, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5ltget_attribute_ndims_c +* +* Purpose: Call H5LTget_attribute_ndims +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 05, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltget_attribute_ndims_c(hid_t_f *loc_id, - int_f *namelen, - _fcd dsetname, - int_f *attrnamelen, - _fcd attrname, - int_f *rank) + int_f *namelen, + _fcd dsetname, + int_f *attrnamelen, + _fcd attrname, + int_f *rank) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - char *c_attrname; - int c_namelen; - int c_attrnamelen; - int c_rank; - -/* - * Convert FORTRAN name to C name - */ - c_namelen =(int) *namelen; - c_name = (char *)HD5f2cstring(dsetname, c_namelen); - if (c_name == NULL) return ret_value; - - c_attrnamelen = (int)*attrnamelen; - c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); - if (c_attrname == NULL) return ret_value; - -/* - * Call H5LTset_attribute_ndims function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5LTget_attribute_ndims(c_loc_id,c_name,c_attrname,&c_rank); - - if (ret < 0) return ret_value; - *rank = (int_f)c_rank; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + char *c_attrname = NULL; + int c_namelen; + int c_attrnamelen; + int c_rank; + + /* + * Convert FORTRAN name to C name + */ + c_namelen =(int) *namelen; + c_name = (char *)HD5f2cstring(dsetname, c_namelen); + if (c_name == NULL) + goto done; + + c_attrnamelen = (int)*attrnamelen; + c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); + if (c_attrname == NULL) + goto done; + + /* + * Call H5LTset_attribute_ndims function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5LTget_attribute_ndims(c_loc_id,c_name,c_attrname,&c_rank); + + if (ret < 0) + goto done; + + *rank = (int_f)c_rank; + ret_value = 0; + + +done: + if(c_name!=NULL) + free(c_name); + if(c_attrname!=NULL) + free(c_attrname); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: h5ltget_attribute_info_c - * - * Purpose: Call H5LTget_attribute_info - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: September 09, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5ltget_attribute_info_c +* +* Purpose: Call H5LTget_attribute_info +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: September 09, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5ltget_attribute_info_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *attrnamelen, - _fcd attrname, - hsize_t_f *dims, - int_f *type_class, - size_t_f *type_size) + int_f *namelen, + _fcd name, + int_f *attrnamelen, + _fcd attrname, + hsize_t_f *dims, + int_f *type_class, + size_t_f *type_size) { - int ret_value = -1; - herr_t ret; - hid_t c_loc_id; - char *c_name; - char *c_attrname; - int c_namelen; - int c_attrnamelen; - H5T_class_t c_classtype; - size_t c_type_size; - hsize_t c_dims[32]; - int i; - int c_rank; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = (int)*namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - - c_attrnamelen = (int)*attrnamelen; - c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); - if (c_attrname == NULL) return ret_value; - -/* - * Call H5LTget_attribute_info function. - */ - c_loc_id = (hid_t)*loc_id; - - ret = H5LTget_attribute_info(c_loc_id,c_name,c_attrname,c_dims,&c_classtype,&c_type_size); - if (ret < 0) return ret_value; - - *type_class = c_classtype; - *type_size = (size_t_f)c_type_size; - -/* - * Transpose dimension arrays because of C-FORTRAN storage order - */ - - ret = H5LTget_attribute_ndims(c_loc_id,c_name,c_attrname,&c_rank); - if (ret < 0) return ret_value; - - for (i = 0; i < c_rank ; i++) { - dims[i] = (hsize_t_f) c_dims[c_rank - i - 1]; - } - - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + hid_t c_loc_id; + char *c_name = NULL; + char *c_attrname = NULL; + int c_namelen; + int c_attrnamelen; + H5T_class_t c_classtype; + size_t c_type_size; + hsize_t c_dims[32]; + int i; + int c_rank; + + /* + * convert FORTRAN name to C name + */ + c_namelen = (int)*namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + c_attrnamelen = (int)*attrnamelen; + c_attrname = (char *)HD5f2cstring(attrname, c_attrnamelen); + if (c_attrname == NULL) + goto done; + + /* + * call H5LTget_attribute_info function. + */ + c_loc_id = (hid_t)*loc_id; + + ret = H5LTget_attribute_info(c_loc_id,c_name,c_attrname,c_dims,&c_classtype,&c_type_size); + if (ret < 0) + goto done; + + *type_class = c_classtype; + *type_size = (size_t_f)c_type_size; + + /* + * transpose dimension arrays because of C-FORTRAN storage order + */ + + ret = H5LTget_attribute_ndims(c_loc_id,c_name,c_attrname,&c_rank); + if (ret < 0) + goto done; + + for (i = 0; i < c_rank ; i++) + { + dims[i] = (hsize_t_f) c_dims[c_rank - i - 1]; + } + + ret_value = 0; + + +done: + if(c_name!=NULL) + free(c_name); + if(c_attrname!=NULL) + free(c_attrname); + + + return ret_value; } diff --git a/hl/fortran/src/H5TBfc.c b/hl/fortran/src/H5TBfc.c index c641cf4..38af99c 100755 --- a/hl/fortran/src/H5TBfc.c +++ b/hl/fortran/src/H5TBfc.c @@ -1,17 +1,17 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +* Copyright by The HDF Group. * +* Copyright by the Board of Trustees of the University of Illinois. * +* All rights reserved. * +* * +* This file is part of HDF5. The full HDF5 copyright notice, including * +* terms governing use, modification, and redistribution, is contained in * +* the files COPYING and Copyright.html. COPYING can be found at the root * +* of the source code distribution tree; Copyright.html can be found at the * +* root level of an installed copy of the electronic HDF5 document set and * +* is linked from the top-level documents page. It can also be found at * +* http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +* access to either file, you may request a copy from help@hdfgroup.org. * +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* This files contains C stubs for H5D Fortran APIs */ @@ -19,23 +19,23 @@ #include "H5LTf90proto.h" /*------------------------------------------------------------------------- - * Function: h5tbmake_table_c - * - * Purpose: Call H5TBmake_table - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 06, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5tbmake_table_c +* +* Purpose: Call H5TBmake_table +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 06, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5tbmake_table_c(int_f *namelen1, _fcd name1, @@ -52,472 +52,550 @@ nh5tbmake_table_c(int_f *namelen1, int_f *namelen2, /* field_names lenghts */ _fcd field_names) /* field_names */ { - int ret_value = -1; - herr_t ret; - char *c_name; - int c_namelen; - char *c_name1; - int c_namelen1; - hsize_t num_elem; - hsize_t i; - int max_len=1; - hid_t c_loc_id = *loc_id; - hsize_t c_nfields = *nfields; - hsize_t c_nrecords = *nrecords; - hsize_t c_chunk_size = *chunk_size; - size_t c_type_size = *type_size; - size_t *c_field_offset; - hid_t *c_field_types; - char **c_field_names; - char *tmp, *tmp_p; - - num_elem = *nfields; - - for (i=0; i < num_elem; i++) { - if (namelen2[i] > max_len) max_len = namelen2[i]; - } - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - - c_namelen1 = *namelen1; - c_name1 = (char *)HD5f2cstring(name1, c_namelen1); - if (c_name1 == NULL) return ret_value; - - c_field_offset = (size_t*)malloc(sizeof(size_t) * (size_t)c_nfields); - if (!c_field_offset) return ret_value; - - c_field_types = (hid_t*)malloc(sizeof(hid_t) * (size_t)c_nfields); - if (!c_field_types) return ret_value; - - for (i=0; i < num_elem; i++) { - c_field_offset[i] = field_offset[i]; - c_field_types[i] = field_types[i]; - } - -/* - * Allocate array of character pointers - */ - c_field_names = (char **)malloc((size_t)num_elem * sizeof(char *)); - if (c_field_names == NULL) return ret_value; - - /* Copy data to long C string */ - tmp = (char *)HD5f2cstring(field_names, (int)(max_len*num_elem)); - if (tmp == NULL) { - free(c_field_names); - return ret_value; - } - -/* - * Move data from temorary buffer - */ - tmp_p = tmp; - for (i=0; i < num_elem; i++) { - c_field_names[i] = (char *) malloc((size_t)namelen2[i]+1); - memcpy(c_field_names[i], tmp_p, (size_t)namelen2[i]); - c_field_names[i][namelen2[i]] = '\0'; - tmp_p = tmp_p + max_len; - } - -/* - * Call H5TBmake_table function. - */ - - ret = H5TBmake_table(c_name1,c_loc_id,c_name,c_nfields,c_nrecords,c_type_size, - c_field_names,c_field_offset,c_field_types,c_chunk_size,NULL,*compress,NULL); - - for (i=0; i < num_elem; i++) { - free (c_field_names[i]); - } - free(c_field_names); - free(tmp); - free(c_field_offset); - free(c_field_types); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + char *c_name = NULL; + int c_namelen; + char *c_name1 = NULL; + int c_namelen1; + hsize_t num_elem; + hsize_t i; + int max_len=1; + hid_t c_loc_id = *loc_id; + hsize_t c_nfields = *nfields; + hsize_t c_nrecords = *nrecords; + hsize_t c_chunk_size = *chunk_size; + size_t c_type_size = *type_size; + size_t *c_field_offset = NULL; + hid_t *c_field_types = NULL; + char **c_field_names = NULL; + char *tmp = NULL, *tmp_p = NULL; + + num_elem = *nfields; + + for ( i = 0; i < num_elem; i++) + { + if (namelen2[i] > max_len) max_len = namelen2[i]; + } + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + c_namelen1 = *namelen1; + c_name1 = (char *)HD5f2cstring(name1, c_namelen1); + if (c_name1 == NULL) + goto done; + + c_field_offset = (size_t*)malloc(sizeof(size_t) * (size_t)c_nfields); + if (!c_field_offset) + goto done; + + c_field_types = (hid_t*)malloc(sizeof(hid_t) * (size_t)c_nfields); + if (!c_field_types) + goto done; + + for ( i = 0; i < num_elem; i++) + { + c_field_offset[i] = field_offset[i]; + c_field_types[i] = field_types[i]; + } + + /* + * allocate array of character pointers + */ + c_field_names = (char **)malloc((size_t)num_elem * sizeof(char *)); + if (c_field_names == NULL) + goto done; + + /* copy data to long C string */ + tmp = (char *)HD5f2cstring(field_names, (int)(max_len*num_elem)); + if (tmp == NULL) + { + goto done; + } + + /* + * move data from temorary buffer + */ + tmp_p = tmp; + for (i=0; i < num_elem; i++) + { + c_field_names[i] = (char *) malloc((size_t)namelen2[i]+1); + memcpy(c_field_names[i], tmp_p, (size_t)namelen2[i]); + c_field_names[i][namelen2[i]] = '\0'; + tmp_p = tmp_p + max_len; + } + + /* + * call H5TBmake_table function. + */ + + ret = H5TBmake_table(c_name1, + c_loc_id, + c_name, + c_nfields, + c_nrecords, + c_type_size, + c_field_names, + c_field_offset, + c_field_types, + c_chunk_size, + NULL, + *compress, + NULL); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name != NULL) + free(c_name); + if(c_name1 != NULL) + free(c_name1); + + for ( i = 0; i < num_elem; i++) + { + if ( c_field_names[i] ) + free (c_field_names[i]); + } + if ( c_field_names ) + free(c_field_names); + if ( tmp ) + free(tmp); + if ( c_field_offset ) + free(c_field_offset); + if ( c_field_types ) + free(c_field_types); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: h5tbwrite_field_name_c - * - * Purpose: Call H5TBwrite_fields_name - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 12, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5tbwrite_field_name_c +* +* Purpose: Call H5TBwrite_fields_name +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 12, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5tbwrite_field_name_c(hid_t_f *loc_id, int_f *namelen, _fcd name, - int_f *namelen1, + int_f *namelen1, _fcd field_name, hsize_t_f *start, hsize_t_f *nrecords, size_t_f *type_size, void *buf) { - int ret_value = -1; - herr_t ret; - char *c_name; - int c_namelen; - char *c_name1; - int c_namelen1; - hid_t c_loc_id = *loc_id; - hsize_t c_start = *start; - hsize_t c_nrecords = *nrecords; - size_t c_type_size = *type_size; - size_t c_type_sizes[1]; - - c_type_sizes[0] = c_type_size; - - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - - c_namelen1 = *namelen1; - c_name1 = (char *)HD5f2cstring(field_name, c_namelen1); - if (c_name1 == NULL) return ret_value; - -/* - * Call H5TBwrite_fields_name function. - */ - - ret = H5TBwrite_fields_name(c_loc_id,c_name,c_name1,c_start,c_nrecords,c_type_size, - 0,c_type_sizes,buf); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + char *c_name = NULL; + int c_namelen; + char *c_name1 = NULL; + int c_namelen1; + hid_t c_loc_id = *loc_id; + hsize_t c_start = *start; + hsize_t c_nrecords = *nrecords; + size_t c_type_size = *type_size; + size_t c_type_sizes[1]; + + c_type_sizes[0] = c_type_size; + + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + c_namelen1 = *namelen1; + c_name1 = (char *)HD5f2cstring(field_name, c_namelen1); + if (c_name1 == NULL) + goto done; + + /* + * call H5TBwrite_fields_name function. + */ + + ret = H5TBwrite_fields_name(c_loc_id, + c_name, + c_name1, + c_start, + c_nrecords, + c_type_size, + 0, + c_type_sizes, + buf); + + if (ret < 0) + goto done; + + ret_value = 0; + + +done: + if(c_name != NULL) + free(c_name); + if(c_name1 != NULL) + free(c_name1); + + return ret_value; } int_f nh5tbwrite_field_name_int_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *namelen1, - _fcd field_name, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *namelen1, + _fcd field_name, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - return nh5tbwrite_field_name_c(loc_id,namelen,name,namelen1,field_name,start,nrecords,type_size,buf); + return nh5tbwrite_field_name_c(loc_id,namelen,name,namelen1,field_name,start,nrecords,type_size,buf); } int_f nh5tbwrite_field_name_fl_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *namelen1, - _fcd field_name, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *namelen1, + _fcd field_name, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - return nh5tbwrite_field_name_c(loc_id,namelen,name,namelen1,field_name,start,nrecords,type_size,buf); + return nh5tbwrite_field_name_c(loc_id,namelen,name,namelen1,field_name,start,nrecords,type_size,buf); } int_f nh5tbwrite_field_name_dl_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *namelen1, - _fcd field_name, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *namelen1, + _fcd field_name, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - return nh5tbwrite_field_name_c(loc_id,namelen,name,namelen1,field_name,start,nrecords,type_size,buf); + return nh5tbwrite_field_name_c(loc_id,namelen,name,namelen1,field_name,start,nrecords,type_size,buf); } int_f nh5tbwrite_field_name_st_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *namelen1, - _fcd field_name, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *namelen1, + _fcd field_name, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - return nh5tbwrite_field_name_c(loc_id,namelen,name,namelen1,field_name,start,nrecords,type_size,buf); + return nh5tbwrite_field_name_c(loc_id,namelen,name,namelen1,field_name,start,nrecords,type_size,buf); } /*------------------------------------------------------------------------- - * Function: h5tbread_field_name_c - * - * Purpose: Call H5TBread_fields_name - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 12, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5tbread_field_name_c +* +* Purpose: Call H5TBread_fields_name +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 12, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5tbread_field_name_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, + int_f *namelen, + _fcd name, int_f *namelen1, - _fcd field_name, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + _fcd field_name, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - int ret_value = -1; - herr_t ret; - char *c_name; - int c_namelen; - char *c_name1; - int c_namelen1; - hid_t c_loc_id = *loc_id; - hsize_t c_start = *start; - hsize_t c_nrecords = *nrecords; - size_t c_type_size = *type_size; - size_t c_type_sizes[1]; - - c_type_sizes[0] = c_type_size; - - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - - c_namelen1 = *namelen1; - c_name1 = (char *)HD5f2cstring(field_name, c_namelen1); - if (c_name1 == NULL) return ret_value; - -/* - * Call H5TBread_fields_name function. - */ - - ret = H5TBread_fields_name(c_loc_id,c_name,c_name1,c_start,c_nrecords,c_type_size, - 0,c_type_sizes,buf); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + char *c_name = NULL; + int c_namelen; + char *c_name1 = NULL; + int c_namelen1; + hid_t c_loc_id = *loc_id; + hsize_t c_start = *start; + hsize_t c_nrecords = *nrecords; + size_t c_type_size = *type_size; + size_t c_type_sizes[1]; + + c_type_sizes[0] = c_type_size; + + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + c_namelen1 = *namelen1; + c_name1 = (char *)HD5f2cstring(field_name, c_namelen1); + if (c_name1 == NULL) + goto done; + + /* + * call H5TBread_fields_name function. + */ + + ret = H5TBread_fields_name(c_loc_id, + c_name, + c_name1, + c_start, + c_nrecords, + c_type_size, + 0, + c_type_sizes, + buf); + + if (ret < 0) + goto done; + + ret_value = 0; + + +done: + if(c_name != NULL) + free(c_name); + + return ret_value; } int_f nh5tbread_field_name_int_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *namelen1, - _fcd field_name, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *namelen1, + _fcd field_name, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - return nh5tbread_field_name_c(loc_id,namelen,name,namelen1,field_name,start,nrecords,type_size,buf); + return nh5tbread_field_name_c(loc_id,namelen,name,namelen1,field_name,start,nrecords,type_size,buf); } int_f nh5tbread_field_name_fl_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *namelen1, - _fcd field_name, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *namelen1, + _fcd field_name, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - return nh5tbread_field_name_c(loc_id,namelen,name,namelen1,field_name,start,nrecords,type_size,buf); + return nh5tbread_field_name_c(loc_id,namelen,name,namelen1,field_name,start,nrecords,type_size,buf); } int_f nh5tbread_field_name_dl_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *namelen1, - _fcd field_name, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *namelen1, + _fcd field_name, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - return nh5tbread_field_name_c(loc_id,namelen,name,namelen1,field_name,start,nrecords,type_size,buf); + return nh5tbread_field_name_c(loc_id,namelen,name,namelen1,field_name,start,nrecords,type_size,buf); } int_f nh5tbread_field_name_st_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *namelen1, - _fcd field_name, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *namelen1, + _fcd field_name, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - return nh5tbread_field_name_c(loc_id,namelen,name,namelen1,field_name,start,nrecords,type_size,buf); + return nh5tbread_field_name_c(loc_id,namelen,name,namelen1,field_name,start,nrecords,type_size,buf); } /*------------------------------------------------------------------------- - * Function: h5tbwrite_field_index_c - * - * Purpose: Call H5TBwrite_fields_index - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 12, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5tbwrite_field_index_c +* +* Purpose: Call H5TBwrite_fields_index +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 12, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5tbwrite_field_index_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *field_index, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *field_index, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - int ret_value = -1; - herr_t ret; - char *c_name; - int c_namelen; - hid_t c_loc_id = *loc_id; - hsize_t c_start = *start; - hsize_t c_nrecords = *nrecords; - size_t c_type_size = *type_size; - size_t c_type_sizes[1]; - int c_field_index[1]; - - c_type_sizes[0] = c_type_size; - c_field_index[0] = *field_index - 1; /* C zero based index */ - - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - - -/* - * Call H5TBwrite_fields_name function. - */ - - ret = H5TBwrite_fields_index(c_loc_id,c_name,(hsize_t)1,c_field_index,c_start,c_nrecords,c_type_size, - 0,c_type_sizes,buf); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + char *c_name = NULL; + int c_namelen; + hid_t c_loc_id = *loc_id; + hsize_t c_start = *start; + hsize_t c_nrecords = *nrecords; + size_t c_type_size = *type_size; + size_t c_type_sizes[1]; + int c_field_index[1]; + + c_type_sizes[0] = c_type_size; + c_field_index[0] = *field_index - 1; /* C zero based index */ + + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + + /* + * call H5TBwrite_fields_name function. + */ + + ret = H5TBwrite_fields_index(c_loc_id,c_name,(hsize_t)1,c_field_index,c_start,c_nrecords,c_type_size, + 0,c_type_sizes,buf); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name != NULL) + free(c_name); + + return ret_value; } int_f nh5tbwrite_field_index_int_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *field_index, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *field_index, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - return nh5tbwrite_field_index_c(loc_id,namelen,name,field_index,start,nrecords,type_size,buf); + return nh5tbwrite_field_index_c(loc_id,namelen,name,field_index,start,nrecords,type_size,buf); } int_f nh5tbwrite_field_index_fl_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *field_index, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *field_index, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - return nh5tbwrite_field_index_c(loc_id,namelen,name,field_index,start,nrecords,type_size,buf); + return nh5tbwrite_field_index_c(loc_id,namelen,name,field_index,start,nrecords,type_size,buf); } int_f nh5tbwrite_field_index_dl_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *field_index, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *field_index, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - return nh5tbwrite_field_index_c(loc_id,namelen,name,field_index,start,nrecords,type_size,buf); + return nh5tbwrite_field_index_c(loc_id,namelen,name,field_index,start,nrecords,type_size,buf); } int_f nh5tbwrite_field_index_st_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *field_index, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *field_index, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - return nh5tbwrite_field_index_c(loc_id,namelen,name,field_index,start,nrecords,type_size,buf); + return nh5tbwrite_field_index_c(loc_id,namelen,name,field_index,start,nrecords,type_size,buf); } /*------------------------------------------------------------------------- - * Function: h5tbread_field_index_c - * - * Purpose: Call H5TBread_fields_index - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 12, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5tbread_field_index_c +* +* Purpose: Call H5TBread_fields_index +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 12, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5tbread_field_index_c(hid_t_f *loc_id, @@ -529,107 +607,122 @@ nh5tbread_field_index_c(hid_t_f *loc_id, size_t_f *type_size, void *buf) { - int ret_value = -1; - herr_t ret; - char *c_name; - int c_namelen; - hid_t c_loc_id = *loc_id; - hsize_t c_start = *start; - hsize_t c_nrecords = *nrecords; - size_t c_type_size = *type_size; - size_t c_type_sizes[1]; - int c_field_index[1]; - - c_type_sizes[0] = c_type_size; - c_field_index[0] = *field_index - 1; /* C zero based index */ - - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - -/* - * Call H5TBread_fields_index function. - */ - - ret = H5TBread_fields_index(c_loc_id,c_name,(hsize_t)1,c_field_index,c_start,c_nrecords,c_type_size, - 0,c_type_sizes,buf); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + char *c_name = NULL; + int c_namelen; + hid_t c_loc_id = *loc_id; + hsize_t c_start = *start; + hsize_t c_nrecords = *nrecords; + size_t c_type_size = *type_size; + size_t c_type_sizes[1]; + int c_field_index[1]; + + c_type_sizes[0] = c_type_size; + c_field_index[0] = *field_index - 1; /* C zero based index */ + + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + /* + * call H5TBread_fields_index function. + */ + + ret = H5TBread_fields_index(c_loc_id, + c_name,(hsize_t)1, + c_field_index, + c_start, + c_nrecords, + c_type_size, + 0, + c_type_sizes, + buf); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name != NULL) + free(c_name); + + return ret_value; } int_f nh5tbread_field_index_int_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *field_index, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *field_index, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - return nh5tbread_field_index_c(loc_id,namelen,name,field_index,start,nrecords,type_size,buf); + return nh5tbread_field_index_c(loc_id,namelen,name,field_index,start,nrecords,type_size,buf); } int_f nh5tbread_field_index_fl_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *field_index, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *field_index, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - return nh5tbread_field_index_c(loc_id,namelen,name,field_index,start,nrecords,type_size,buf); + return nh5tbread_field_index_c(loc_id,namelen,name,field_index,start,nrecords,type_size,buf); } int_f nh5tbread_field_index_dl_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *field_index, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *field_index, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - return nh5tbread_field_index_c(loc_id,namelen,name,field_index,start,nrecords,type_size,buf); + return nh5tbread_field_index_c(loc_id,namelen,name,field_index,start,nrecords,type_size,buf); } int_f nh5tbread_field_index_st_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *field_index, - hsize_t_f *start, - hsize_t_f *nrecords, - size_t_f *type_size, - void *buf) + int_f *namelen, + _fcd name, + int_f *field_index, + hsize_t_f *start, + hsize_t_f *nrecords, + size_t_f *type_size, + void *buf) { - return nh5tbread_field_index_c(loc_id,namelen,name,field_index,start,nrecords,type_size,buf); + return nh5tbread_field_index_c(loc_id,namelen,name,field_index,start,nrecords,type_size,buf); } /*------------------------------------------------------------------------- - * Function: h5tbinsert_field_c - * - * Purpose: Call H5TBinsert_field - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 13, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5tbinsert_field_c +* +* Purpose: Call H5TBinsert_field +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 13, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5tbinsert_field_c(hid_t_f *loc_id, @@ -641,320 +734,379 @@ nh5tbinsert_field_c(hid_t_f *loc_id, int_f *position, void *buf) { - int ret_value = -1; - herr_t ret; - char *c_name; - int c_namelen; - char *c_name1; - int c_namelen1; - hid_t c_loc_id = *loc_id; - hid_t c_field_type = *field_type; - hsize_t c_position = *position; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - - c_namelen1 = *namelen1; - c_name1 = (char *)HD5f2cstring(field_name, c_namelen1); - if (c_name1 == NULL) return ret_value; - -/* - * Call H5TBinsert_field function. - */ - - ret = H5TBinsert_field(c_loc_id,c_name,c_name1,c_field_type,c_position,NULL,buf); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + char *c_name = NULL; + int c_namelen; + char *c_name1 = NULL; + int c_namelen1; + hid_t c_loc_id = *loc_id; + hid_t c_field_type = *field_type; + hsize_t c_position = *position; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + c_namelen1 = *namelen1; + c_name1 = (char *)HD5f2cstring(field_name, c_namelen1); + if (c_name1 == NULL) + goto done; + + /* + * call H5TBinsert_field function. + */ + + ret = H5TBinsert_field(c_loc_id, + c_name, + c_name1, + c_field_type, + c_position, + NULL, + buf); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name != NULL) + free(c_name); + if(c_name1 != NULL) + free(c_name1); + + return ret_value; } int_f nh5tbinsert_field_int_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *namelen1, - _fcd field_name, - hid_t_f *field_type, - int_f *position, - void *buf) + int_f *namelen, + _fcd name, + int_f *namelen1, + _fcd field_name, + hid_t_f *field_type, + int_f *position, + void *buf) { - return nh5tbinsert_field_c(loc_id,namelen,name,namelen1,field_name,field_type,position,buf); + return nh5tbinsert_field_c(loc_id,namelen,name,namelen1,field_name,field_type,position,buf); } int_f nh5tbinsert_field_fl_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *namelen1, - _fcd field_name, - hid_t_f *field_type, - int_f *position, - void *buf) + int_f *namelen, + _fcd name, + int_f *namelen1, + _fcd field_name, + hid_t_f *field_type, + int_f *position, + void *buf) { - return nh5tbinsert_field_c(loc_id,namelen,name,namelen1,field_name,field_type,position,buf); + return nh5tbinsert_field_c(loc_id,namelen,name,namelen1,field_name,field_type,position,buf); } int_f nh5tbinsert_field_dl_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *namelen1, - _fcd field_name, - hid_t_f *field_type, - int_f *position, - void *buf) + int_f *namelen, + _fcd name, + int_f *namelen1, + _fcd field_name, + hid_t_f *field_type, + int_f *position, + void *buf) { - return nh5tbinsert_field_c(loc_id,namelen,name,namelen1,field_name,field_type,position,buf); + return nh5tbinsert_field_c(loc_id,namelen,name,namelen1,field_name,field_type,position,buf); } int_f nh5tbinsert_field_st_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - int_f *namelen1, - _fcd field_name, - hid_t_f *field_type, - int_f *position, - void *buf) + int_f *namelen, + _fcd name, + int_f *namelen1, + _fcd field_name, + hid_t_f *field_type, + int_f *position, + void *buf) { - return nh5tbinsert_field_c(loc_id,namelen,name,namelen1,field_name,field_type,position,buf); + return nh5tbinsert_field_c(loc_id,namelen,name,namelen1,field_name,field_type,position,buf); } /*------------------------------------------------------------------------- - * Function: h5tbdelete_field_c - * - * Purpose: Call H5TBdelete_field - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 13, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5tbdelete_field_c +* +* Purpose: Call H5TBdelete_field +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 13, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5tbdelete_field_c(hid_t_f *loc_id, int_f *namelen, _fcd name, - int_f *namelen1, - _fcd field_name) + int_f *namelen1, + _fcd field_name) { - int ret_value = -1; - herr_t ret; - char *c_name; - int c_namelen; - char *c_name1; - int c_namelen1; - hid_t c_loc_id = *loc_id; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - - c_namelen1 = *namelen1; - c_name1 = (char *)HD5f2cstring(field_name, c_namelen1); - if (c_name1 == NULL) return ret_value; - -/* - * Call H5TBinsert_field function. - */ - - ret = H5TBdelete_field(c_loc_id,c_name,c_name1); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + char *c_name = NULL; + int c_namelen; + char *c_name1 = NULL; + int c_namelen1; + hid_t c_loc_id = *loc_id; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + c_namelen1 = *namelen1; + c_name1 = (char *)HD5f2cstring(field_name, c_namelen1); + if (c_name1 == NULL) + goto done; + + /* + * call H5TBinsert_field function. + */ + + ret = H5TBdelete_field(c_loc_id, + c_name, + c_name1); + + if (ret < 0) + goto done; + + ret_value = 0; + +done: + if(c_name != NULL) + free(c_name); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: h5tbget_table_info_c - * - * Purpose: Call H5TBread_fields_index - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 12, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5tbget_table_info_c +* +* Purpose: Call H5TBread_fields_index +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 12, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5tbget_table_info_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hsize_t_f *nfields, - hsize_t_f *nrecords) + int_f *namelen, + _fcd name, + hsize_t_f *nfields, + hsize_t_f *nrecords) { - int ret_value = -1; - herr_t ret; - char *c_name; - int c_namelen; - hid_t c_loc_id = *loc_id; - hsize_t c_nfields; - hsize_t c_nrecords; - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - -/* - * Call H5TBread_fields_index function. - */ - - ret = H5TBget_table_info(c_loc_id,c_name,&c_nfields,&c_nrecords); - - *nfields = (hsize_t_f) c_nfields;; - *nrecords = (hsize_t_f) c_nrecords; - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + char *c_name = NULL; + int c_namelen; + hid_t c_loc_id = *loc_id; + hsize_t c_nfields; + hsize_t c_nrecords; + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + /* + * call H5TBread_fields_index function. + */ + + ret = H5TBget_table_info(c_loc_id, + c_name, + &c_nfields, + &c_nrecords); + + if (ret < 0) + goto done; + + *nfields = (hsize_t_f) c_nfields;; + *nrecords = (hsize_t_f) c_nrecords; + + ret_value = 0; + +done: + if(c_name != NULL) + free(c_name); + + return ret_value; } /*------------------------------------------------------------------------- - * Function: h5tbget_field_info_c - * - * Purpose: Call H5TBget_field_info - * - * Return: Success: 0, Failure: -1 - * - * Programmer: pvn@ncsa.uiuc.edu - * - * Date: October 13, 2004 - * - * Comments: - * - * Modifications: - * - * - *------------------------------------------------------------------------- - */ +* Function: h5tbget_field_info_c +* +* Purpose: Call H5TBget_field_info +* +* Return: Success: 0, Failure: -1 +* +* Programmer: pvn@ncsa.uiuc.edu +* +* Date: October 13, 2004 +* +* Comments: +* +* Modifications: +* +* +*------------------------------------------------------------------------- +*/ int_f nh5tbget_field_info_c(hid_t_f *loc_id, - int_f *namelen, - _fcd name, - hsize_t_f *nfields, - size_t_f *field_sizes, - size_t_f *field_offsets, - size_t_f *type_size, - int_f *namelen2, /* field_names lenghts */ - _fcd field_names) /* field_names */ + int_f *namelen, + _fcd name, + hsize_t_f *nfields, + size_t_f *field_sizes, + size_t_f *field_offsets, + size_t_f *type_size, + int_f *namelen2, /* field_names lenghts */ + _fcd field_names) /* field_names */ { - int ret_value = -1; - herr_t ret; - char *c_name; - int c_namelen; - hsize_t num_elem; - hsize_t i; - int max_len=1; - hid_t c_loc_id = *loc_id; - hsize_t c_nfields = *nfields; - size_t *c_field_sizes; - size_t *c_field_offsets; - size_t c_type_size; - char **c_field_names; - char *tmp, *tmp_p; - int c_lenmax=HLTB_MAX_FIELD_LEN; - size_t length = 0; - - num_elem = c_nfields; - - for (i=0; i < num_elem; i++) { - if (namelen2[i] > max_len) max_len = namelen2[i]; - } - -/* - * Convert FORTRAN name to C name - */ - c_namelen = *namelen; - c_name = (char *)HD5f2cstring(name, c_namelen); - if (c_name == NULL) return ret_value; - - - c_field_offsets = (size_t*)malloc(sizeof(size_t) * (size_t)c_nfields); - if (!c_field_offsets) return ret_value; - - c_field_sizes = (size_t*)malloc(sizeof(size_t) * (size_t)c_nfields); - if (!c_field_sizes) return ret_value; - - c_field_names = malloc( sizeof(char*) * (size_t)c_nfields ); - if (!c_field_names) return ret_value; - for ( i = 0; i < c_nfields; i++) - { - c_field_names[i] = malloc( sizeof(char) * HLTB_MAX_FIELD_LEN ); - } - -/* - * Call H5TBget_field_info function. - */ - - ret = H5TBget_field_info(c_loc_id,c_name,c_field_names,c_field_sizes,c_field_offsets, - &c_type_size); - - /* return values*/ - - /* names array */ - tmp = (char *)malloc(c_lenmax* (size_t) c_nfields + 1); - tmp_p = tmp; - memset(tmp,' ', c_lenmax* (size_t) c_nfields); - tmp[c_lenmax*c_nfields] = '\0'; - for (i=0; i < c_nfields; i++) { - memcpy(tmp_p, c_field_names[i], strlen(c_field_names[i])); - namelen2[i] = (int_f)strlen(c_field_names[i]); - length = MAX(length, strlen(c_field_names[i])); - tmp_p = tmp_p + c_lenmax; - } - HD5packFstring(tmp, _fcdtocp(field_names), (int)(c_lenmax*c_nfields)); - - - *type_size = (size_t_f)c_type_size; - for (i=0; i < num_elem; i++) - { - field_sizes[i] = (size_t_f)c_field_sizes[i]; - field_offsets[i] = (size_t_f)c_field_offsets[i]; - } - - - - /* free */ - - for (i=0; i < num_elem; i++) { - free (c_field_names[i]); - } - free(c_field_names); - free(tmp); - free(c_field_offsets); - free(c_field_sizes); - - if (ret < 0) return ret_value; - ret_value = 0; - return ret_value; + int ret_value = -1; + herr_t ret; + char *c_name = NULL; + int c_namelen; + hsize_t num_elem; + hsize_t i; + int max_len=1; + hid_t c_loc_id = *loc_id; + hsize_t c_nfields = *nfields; + size_t *c_field_sizes = NULL; + size_t *c_field_offsets = NULL; + size_t c_type_size; + char **c_field_names = NULL; + char *tmp = NULL, *tmp_p = NULL; + int c_lenmax=HLTB_MAX_FIELD_LEN; + size_t length = 0; + + num_elem = c_nfields; + + for (i=0; i < num_elem; i++) + { + if (namelen2[i] > max_len) max_len = namelen2[i]; + } + + /* + * convert FORTRAN name to C name + */ + c_namelen = *namelen; + c_name = (char *)HD5f2cstring(name, c_namelen); + if (c_name == NULL) + goto done; + + + c_field_offsets = (size_t*)malloc(sizeof(size_t) * (size_t)c_nfields); + if (!c_field_offsets) + goto done; + + c_field_sizes = (size_t*)malloc(sizeof(size_t) * (size_t)c_nfields); + if (!c_field_sizes) + goto done; + + c_field_names = malloc( sizeof(char*) * (size_t)c_nfields ); + if (!c_field_names) return ret_value; + for ( i = 0; i < c_nfields; i++) + { + c_field_names[i] = malloc( sizeof(char) * HLTB_MAX_FIELD_LEN ); + } + + /* + * call H5TBget_field_info function. + */ + + ret = H5TBget_field_info(c_loc_id, + c_name, + c_field_names, + c_field_sizes, + c_field_offsets, + &c_type_size); + + /* return values*/ + + /* names array */ + tmp = (char *)malloc(c_lenmax* (size_t) c_nfields + 1); + tmp_p = tmp; + memset(tmp,' ', c_lenmax* (size_t) c_nfields); + tmp[c_lenmax*c_nfields] = '\0'; + for (i=0; i < c_nfields; i++) + { + memcpy(tmp_p, c_field_names[i], strlen(c_field_names[i])); + namelen2[i] = (int_f)strlen(c_field_names[i]); + length = MAX(length, strlen(c_field_names[i])); + tmp_p = tmp_p + c_lenmax; + } + HD5packFstring(tmp, _fcdtocp(field_names), (int)(c_lenmax*c_nfields)); + + + *type_size = (size_t_f)c_type_size; + for (i=0; i < num_elem; i++) + { + field_sizes[i] = (size_t_f)c_field_sizes[i]; + field_offsets[i] = (size_t_f)c_field_offsets[i]; + } + + + if (ret < 0) + goto done; + + ret_value = 0; + + +done: + if(c_name != NULL) + free(c_name); + + for ( i = 0; i < num_elem; i++) + { + if ( c_field_names[i] ) + free (c_field_names[i]); + } + if ( c_field_names ) + free(c_field_names); + if ( tmp ) + free(tmp); + if ( c_field_offsets ) + free(c_field_offsets); + if ( c_field_sizes ) + free(c_field_sizes); + + return ret_value; } -- cgit v0.12