From 5122df335cc2627bfdd85e3fcff8bd1731e8c4ae Mon Sep 17 00:00:00 2001 From: Raymond Lu Date: Fri, 2 Nov 2001 14:46:36 -0500 Subject: [svn-r4584] Purpose: Switch from old property list to new generic property list. Description: Mainly changed H5Pcreat, H5Pclose, H5Pcopy. Platforms tested: IRIX64 6.5, FreeBSD, SunOS 5.7. --- src/H5.c | 23 ++- src/H5A.c | 8 +- src/H5D.c | 14 +- src/H5F.c | 15 +- src/H5FDdpss.c | 16 +- src/H5FDfamily.c | 10 +- src/H5FDmulti.c | 8 +- src/H5FDsec2.c | 6 +- src/H5FDstream.c | 4 +- src/H5P.c | 474 ++++++------------------------------------------------- src/H5Pprivate.h | 10 +- src/H5Ppublic.h | 27 +--- src/H5T.c | 2 +- 13 files changed, 107 insertions(+), 510 deletions(-) diff --git a/src/H5.c b/src/H5.c index f8cf191..38e4c91 100644 --- a/src/H5.c +++ b/src/H5.c @@ -2114,18 +2114,17 @@ H5_trace (hbool_t returning, const char *func, const char *type, ...) fprintf(out, "NULL"); } } else { - /* Before deleting the last of these old-style lists, convert */ - /* this chunk of code to print the class of the property list */ - /* using the generic property list classes - QAK */ - H5P_class_t_old plist_class = va_arg (ap, H5P_class_t_old); - switch (plist_class) { - case H5P_NO_CLASS_OLD: - fprintf (out, "H5P_NO_CLASS"); - break; - default: - fprintf (out, "%ld", (long)plist_class); - break; - } + hid_t pclass_id = va_arg (ap, hid_t); + char *class_name=NULL; + + /* Get the class name and print it */ + if((class_name=H5Pget_class_name(pclass_id))!=NULL) { + fprintf (out, class_name); + H5MM_xfree(class_name); + } /* end if */ + else { + fprintf (out, "%ld", (long)pclass_id); + } /* end else */ } break; diff --git a/src/H5A.c b/src/H5A.c index 6fc2d54..4b21749 100644 --- a/src/H5A.c +++ b/src/H5A.c @@ -150,7 +150,7 @@ H5A_term_interface(void) --------------------------------------------------------------------------*/ hid_t H5Acreate(hid_t loc_id, const char *name, hid_t type_id, hid_t space_id, - hid_t plist_id) + hid_t UNUSED plist_id) { H5G_entry_t *ent = NULL; H5T_t *type = NULL; @@ -180,12 +180,6 @@ H5Acreate(hid_t loc_id, const char *name, hid_t type_id, hid_t space_id, NULL == (space = H5I_object(space_id))) { HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data space"); } - if (H5P_DEFAULT!=plist_id && - (H5P_DATASET_CREATE != H5P_get_class(plist_id) || - NULL == H5I_object(plist_id))) { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "not a dataset creation property list"); - } /* Go do the real work for attaching the attribute to the dataset */ if ((ret_value=H5A_create(ent,name,type,space))<0) { diff --git a/src/H5D.c b/src/H5D.c index e9e0984..619818f 100644 --- a/src/H5D.c +++ b/src/H5D.c @@ -252,7 +252,7 @@ H5D_init_interface(void) HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class"); /* Register the default data transfer property list */ - if ((H5P_LST_DATASET_XFER_g = H5Pcreate_list (H5P_CLS_DATASET_XFER_g))<0) + if ((H5P_LST_DATASET_XFER_g = H5Pcreate (H5P_CLS_DATASET_XFER_g))<0) HRETURN_ERROR (H5E_PLIST, H5E_CANTREGISTER, FAIL, "can't register default property list"); /* =========Dataset Creation Property Class Initialization========== */ @@ -301,7 +301,7 @@ H5D_init_interface(void) "can't insert property into class"); /* Register the default data transfer property list */ - if ((H5P_LST_DATASET_CREATE_g = H5Pcreate_list (H5P_CLS_DATASET_CREATE_g))<0) + if ((H5P_LST_DATASET_CREATE_g = H5Pcreate (H5P_CLS_DATASET_CREATE_g))<0) HRETURN_ERROR (H5E_PLIST, H5E_CANTREGISTER, FAIL, "can't register default property list"); done: @@ -982,7 +982,7 @@ H5Dget_create_plist(hid_t dset_id) HRETURN_ERROR (H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset"); } /* Copy the creation property list */ - if((ret_value = H5P_copy_new(dset->dcpl_id)) < 0) { + if((ret_value = H5Pcopy(dset->dcpl_id)) < 0) { HRETURN_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "unable to copy the creation property list"); } @@ -1291,7 +1291,7 @@ H5D_new(hid_t dcpl_id) TRUE != H5Pisa_class(dcpl_id, H5P_DATASET_CREATE)) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not property list"); - ret_value->dcpl_id = H5P_copy_new(dcpl_id); + ret_value->dcpl_id = H5Pcopy(dcpl_id); ret_value->ent.header = HADDR_UNDEF; /* Success */ @@ -1957,7 +1957,7 @@ H5D_close(H5D_t *dataset) * can do if one of these fails, so we just continue. */ free_failed = (H5T_close(dataset->type) < 0 || - H5Pclose_list(dataset->dcpl_id) < 0); + H5Pclose(dataset->dcpl_id) < 0); /* Close the dataset object */ H5O_close(&(dataset->ent)); @@ -3654,7 +3654,7 @@ H5Dvlen_get_buf_size(hid_t dataset_id, hid_t type_id, hid_t space_id, HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "no temporary buffers available"); /* Change to the custom memory allocation routines for reading VL data */ - if((vlen_bufsize.xfer_pid=H5Pcreate_list(H5P_DATASET_XFER))<0) + if((vlen_bufsize.xfer_pid=H5Pcreate(H5P_DATASET_XFER))<0) HGOTO_ERROR(H5E_PLIST, H5E_CANTCREATE, FAIL, "no dataset xfer plists available"); if(H5Pset_vlen_mem_manager(vlen_bufsize.xfer_pid,H5D_vlen_get_buf_size_alloc,&vlen_bufsize,NULL,NULL)<0) @@ -3681,7 +3681,7 @@ done: if(vlen_bufsize.vl_tbuf!=NULL) H5FL_BLK_FREE(vlen_vl_buf,vlen_bufsize.vl_tbuf); if(vlen_bufsize.xfer_pid>0) - H5Pclose_list(vlen_bufsize.xfer_pid); + H5Pclose(vlen_bufsize.xfer_pid); FUNC_LEAVE(ret_value); } /* end H5Dvlen_get_buf_size() */ diff --git a/src/H5F.c b/src/H5F.c index cecb5f5..a29ecf6 100644 --- a/src/H5F.c +++ b/src/H5F.c @@ -283,7 +283,7 @@ H5F_init_interface(void) "can't insert property into class"); /* Register the default file creation property list */ - if((H5P_LST_FILE_CREATE_g = H5Pcreate_list(H5P_CLS_FILE_CREATE_g))<0) + if((H5P_LST_FILE_CREATE_g = H5Pcreate(H5P_CLS_FILE_CREATE_g))<0) HGOTO_ERROR(H5E_PLIST, H5E_CANTREGISTER, FAIL, "can't insert property into class"); @@ -381,7 +381,7 @@ H5F_init_interface(void) /* Register the default file access property list */ - if((H5P_LST_FILE_ACCESS_g = H5Pcreate_list(H5P_CLS_FILE_ACCESS_g))<0) + if((H5P_LST_FILE_ACCESS_g = H5Pcreate(H5P_CLS_FILE_ACCESS_g))<0) HGOTO_ERROR(H5E_PLIST, H5E_CANTREGISTER, FAIL, "can't insert property into class"); @@ -397,7 +397,7 @@ H5F_init_interface(void) HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class"); /* Register the default file mount property list */ - if((H5P_LST_MOUNT_g = H5Pcreate_list(H5P_CLS_MOUNT_g))<0) + if((H5P_LST_MOUNT_g = H5Pcreate(H5P_CLS_MOUNT_g))<0) HGOTO_ERROR(H5E_PLIST, H5E_CANTREGISTER, FAIL, "can't insert property into class"); @@ -750,7 +750,7 @@ H5Fget_create_plist(hid_t file_id) } /* Create the property list object to return */ - if((ret_value=H5P_copy_new(file->shared->fcpl_id)) < 0) { + if((ret_value=H5Pcopy(file->shared->fcpl_id)) < 0) { HRETURN_ERROR(H5E_INTERNAL, H5E_CANTINIT, FAIL, "unable to copy file creation properties"); } @@ -784,7 +784,6 @@ hid_t H5Fget_access_plist(hid_t file_id) { H5F_t *f = NULL; - H5P_t *plist=NULL; hid_t ret_value = FAIL; FUNC_ENTER(H5Fget_access_plist, FAIL); @@ -796,7 +795,7 @@ H5Fget_access_plist(hid_t file_id) } /* Make a copy of the default file access property list */ - if((ret_value=H5P_copy_new(H5P_LST_FILE_ACCESS_g)) < 0) + if((ret_value=H5Pcopy(H5P_LST_FILE_ACCESS_g)) < 0) HRETURN_ERROR(H5E_INTERNAL, H5E_CANTINIT, FAIL, "can't copy file access property list"); @@ -1063,7 +1062,7 @@ H5F_new(H5F_file_t *shared, hid_t fcpl_id, hid_t fapl_id) if(H5I_GENPROP_LST != H5I_get_type(fcpl_id) || TRUE != H5Pisa_class(fcpl_id, H5P_FILE_CREATE)) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not property list"); - f->shared->fcpl_id = H5P_copy_new(fcpl_id); + f->shared->fcpl_id = H5Pcopy(fcpl_id); if(H5P_DEFAULT == fapl_id) @@ -1214,7 +1213,7 @@ H5F_dest(H5F_t *f) if(H5I_GENPROP_LST != H5I_get_type(f->shared->fcpl_id)) HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a property list"); - if((ret_value=H5Pclose_list(f->shared->fcpl_id)) < 0) + if((ret_value=H5Pclose(f->shared->fcpl_id)) < 0) HGOTO_ERROR(H5E_PLIST, H5E_CANTFREE, FAIL, "can't close property list"); diff --git a/src/H5FDdpss.c b/src/H5FDdpss.c index 2ce942f..f42f471 100644 --- a/src/H5FDdpss.c +++ b/src/H5FDdpss.c @@ -552,7 +552,6 @@ H5FD_dpss_read (H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id, haddr_t ad globus_result_t globus_result; #ifdef COALESCE_READS static int count = 0; /* counter for single reads */ - H5F_xfer_t *xfer_parms; /*transfer property list*/ #endif FUNC_ENTER (H5FD_dpss_read, FAIL); @@ -579,15 +578,14 @@ H5FD_dpss_read (H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id, haddr_t ad #ifdef COALESCE_READS /* Get the dataset transfer property list */ if (H5P_DEFAULT == dxpl_id) { - xfer_parms = &H5F_xfer_dflt; - } else if (H5P_DATASET_XFER != H5P_get_class (dxpl_id) || - NULL == (xfer_parms = H5I_object (dxpl_id))) { - HRETURN_ERROR (H5E_PLIST, H5E_BADTYPE, FAIL, "not a xfer"); - } + dxpl_id = H5P_DATASET_XFER_DEFAULT; + if(H5I_GENPROP_LST != H5I_get_type(plist_id) || + TRUE!=H5Pisa_class(dxpl_id,H5P_DATASET_XFER)) + HRETURN_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get gather read"); + + if(!count || H5P_get(dxpl_id, H5D_XFER_GATHER_READS_NAME, &count) < 0) + HRETURN_ERROR(H5E_S, H5E_BADTYPE, FAIL, "not xfer parms"); - if (xfer_parms->gather_reads) { - if (! count) - count = xfer_parms->gather_reads; #ifdef DEBUG fprintf (stdout, "H5FD_dpss_read: request would be queued\n"); #endif diff --git a/src/H5FDfamily.c b/src/H5FDfamily.c index db492b3..5162163 100644 --- a/src/H5FDfamily.c +++ b/src/H5FDfamily.c @@ -185,8 +185,8 @@ H5Pset_fapl_family(hid_t fapl_id, hsize_t memb_size, hid_t memb_fapl_id) TRUE != H5Pisa_class(fapl_id, H5P_FILE_ACCESS)) HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list"); - if(H5P_DEFAULT != memb_fapl_id && - TRUE != H5Pisa_class(fapl_id, H5P_FILE_ACCESS)) + if(H5P_DEFAULT != memb_fapl_id && + TRUE != H5Pisa_class(memb_fapl_id, H5P_FILE_ACCESS)) HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access list"); /* @@ -241,7 +241,7 @@ H5Pget_fapl_family(hid_t fapl_id, hsize_t *memb_size/*out*/, if (NULL==(fa=H5Pget_driver_info(fapl_id))) HRETURN_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info"); if (memb_size) *memb_size = fa->memb_size; - if (memb_fapl_id) *memb_fapl_id = H5P_copy_new(fa->memb_fapl_id); + if (memb_fapl_id) *memb_fapl_id = H5Pcopy(fa->memb_fapl_id); FUNC_LEAVE(SUCCEED); } @@ -845,7 +845,7 @@ H5FD_family_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, si if (H5P_DEFAULT!=dxpl_id && H5FD_FAMILY==H5P_get_driver(dxpl_id)) { H5FD_family_dxpl_t *dx = H5Pget_driver_info(dxpl_id); - assert(H5P_DATASET_XFER==H5Pget_class(dxpl_id)); + assert(H5Pisa_class(dxpl_id, H5P_DATASET_XFER)); assert(dx); memb_dxpl_id = dx->memb_dxpl_id; } @@ -908,7 +908,7 @@ H5FD_family_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, s if (H5P_DEFAULT!=dxpl_id && H5FD_FAMILY==H5P_get_driver(dxpl_id)) { H5FD_family_dxpl_t *dx = H5Pget_driver_info(dxpl_id); - assert(H5P_DATASET_XFER==H5Pget_class(dxpl_id)); + assert(H5Pisa_class(dxpl_id, H5P_DATASET_XFER)); assert(dx); memb_dxpl_id = dx->memb_dxpl_id; } diff --git a/src/H5FDmulti.c b/src/H5FDmulti.c index 725c358..8398470 100644 --- a/src/H5FDmulti.c +++ b/src/H5FDmulti.c @@ -443,7 +443,7 @@ H5Pset_fapl_multi(hid_t fapl_id, const H5FD_mem_t *memb_map, * All members of MEMB_FAPL must be either defaults or actual file * access property lists. */ - if (H5P_DEFAULT!=memb_fapl[mmt] && H5P_FILE_ACCESS!=H5Pget_class(memb_fapl[mmt])) + if (H5P_DEFAULT!=memb_fapl[mmt] && TRUE!=H5Pisa_class(memb_fapl[mmt], H5P_FILE_ACCESS)) H5Epush_ret(func, H5E_INTERNAL, H5E_BADVALUE, "file resource type incorrect", -1); /* All names must be defined */ @@ -572,13 +572,13 @@ H5Pset_dxpl_multi(hid_t dxpl_id, const hid_t *memb_dxpl) H5Eclear(); /* Check arguments */ - if (H5P_DATASET_XFER!=H5Pget_class(dxpl_id)) + if (TRUE!=H5Pisa_class(dxpl_id, H5P_DATASET_XFER)) H5Epush_ret(func, H5E_PLIST, H5E_BADTYPE, "not a data transfer property list", -1); if (!memb_dxpl) H5Epush_ret(func, H5E_INTERNAL, H5E_BADVALUE, "invalid pointer", -1); for (mt=H5FD_MEM_DEFAULT; mt= 0 && type < H5P_NCLASSES_OLD); - assert(plist); - - /* Atomize the new property list */ - if ((ret_value=H5I_register((H5I_type_t)(H5I_TEMPLATE_0+type), plist))<0) { - HRETURN_ERROR(H5E_ATOM, H5E_CANTINIT, FAIL, - "unable to register property list"); - } - - FUNC_LEAVE(ret_value); -} - - -/*------------------------------------------------------------------------- - * Function: H5Pclose - * - * Purpose: Release access to a property list object, PLIST_ID. - * - * Return: Success: non-negative - * - * Failure: negative - * - * Programmer: Unknown - * - * Modifications: - * Robb Matzke, 1999-08-03 - * Attempting to close H5P_DEFAULT is no longer an error, but - * rather a no-op. - *------------------------------------------------------------------------- - */ -herr_t -H5Pclose(hid_t plist_id) -{ - FUNC_ENTER(H5Pclose, FAIL); - H5TRACE1("e","i",plist_id); - - /* Check arguments */ - if (plist_id==H5P_DEFAULT) - HRETURN(SUCCEED); - - /* Kludge to detect generic property creations and divert them to the */ - /* generic property list creation routine - QAK */ - if (H5I_GENPROP_LST == H5I_get_type(plist_id)) { - if(H5Pclose_list(plist_id)<0) - HRETURN_ERROR(H5E_PLIST, H5E_CANTDELETE, FAIL, "unable to close property list"); - } /* end if */ - else { - if (H5P_get_class (plist_id)<0) { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property list"); - } - - /* When the reference count reaches zero the resources are freed */ - if (H5I_dec_ref(plist_id) < 0) - HRETURN_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "problem freeing property list"); - } /* end else */ - - FUNC_LEAVE (SUCCEED); -} - - -/*------------------------------------------------------------------------- - * Function: H5P_close - * - * Purpose: Closes a property list and frees the memory associated with - * the property list. - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Robb Matzke - * Wednesday, February 18, 1998 - * - * Modifications: - * Robb Matzke, 1999-08-03 - * Modified to work with the virtual file layer. - * - * Raymond Lu, 2001-10-02 - * Took out case H5P_DATASET_CREATE for generic property list. - * - *------------------------------------------------------------------------- - */ -herr_t -H5P_close(void *_plist) -{ - H5P_t *plist=(H5P_t *)_plist; - - FUNC_ENTER (H5P_close, FAIL); - - /* Check args */ - if (!plist) - HRETURN (SUCCEED); - - /* Return the property list to the free list */ - H5FL_FREE(H5P_t,plist); - - FUNC_LEAVE(SUCCEED); -} - - -/*------------------------------------------------------------------------- - * Function: H5Pget_class - * - * Purpose: Returns the class identifier for a property list. - * - * Return: Success: A property list class - * - * Failure: H5P_NO_CLASS (-1) - * - * Programmer: Robb Matzke - * Wednesday, December 3, 1997 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -hid_t -H5Pget_class(hid_t plist_id) -{ - hid_t ret_value = H5P_NO_CLASS; - - FUNC_ENTER(H5Pget_class, H5P_NO_CLASS); - H5TRACE1("i","i",plist_id); - - ret_value = H5P_get_class(plist_id); - FUNC_LEAVE(ret_value); -} - - -/*------------------------------------------------------------------------- - * Function: H5P_get_class - * - * Purpose: Internal function for getting the property list class. - * - * Return: Success: A property list class - * - * Failure: H5P_NO_CLASS (-1) - * - * Programmer: Robb Matzke - * Tuesday, July 7, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -H5P_class_t_old -H5P_get_class(hid_t plist_id) -{ - H5I_type_t group; - H5P_class_t_old ret_value = H5P_NO_CLASS; - - FUNC_ENTER(H5P_get_class, H5P_NO_CLASS_OLD); - - if ((group = H5I_get_type(plist_id)) < 0 || - group >= H5I_TEMPLATE_MAX || - group < H5I_TEMPLATE_0) { - HRETURN_ERROR(H5E_ATOM, H5E_BADATOM, H5P_NO_CLASS, - "not a property list"); - } - - ret_value = (H5P_class_t_old)(group - H5I_TEMPLATE_0); - FUNC_LEAVE(ret_value); -} - - /*-------------------------------------------------------------------------- NAME H5P_copy_pclass @@ -626,12 +365,11 @@ done: /*-------------------------------------------------------------------------- NAME - H5P_copy_plist + H5P_copy PURPOSE Internal routine to copy a generic property lists USAGE - hid_t H5P_copy_plist(old_plist, old_plist_id) - H5P_genplist_t *old_plist; IN: Property list to copy + hid_t H5P_copy(old_plist_id) hid_t old_plist_id; IN: Property list ID to copy RETURNS Success: valid property list ID on success (non-negative) @@ -646,17 +384,20 @@ done: EXAMPLES REVISION LOG --------------------------------------------------------------------------*/ -static hid_t H5P_copy_plist(H5P_genplist_t *old_plist, hid_t old_plist_id) +hid_t H5P_copy(hid_t old_plist_id) { H5P_genplist_t *new_plist; /* New property list generated from copy */ + H5P_genplist_t *old_plist; H5P_genprop_t *tprop; /* Temporary pointer to properties */ H5P_genprop_t *new_prop; /* New property created for copy */ hid_t new_plist_id; /* Property list ID of new list created */ unsigned u; /* Local index variable */ hid_t ret_value=FAIL; /* return value */ - FUNC_ENTER (H5P_copy_plist, FAIL); + FUNC_ENTER (H5P_copy, FAIL); + if(NULL == (old_plist = (H5P_genplist_t*)H5I_object(old_plist_id))) + HGOTO_ERROR(H5E_PLIST, H5E_NOTFOUND, FAIL, "property object doesn't exist"); assert(old_plist); /* @@ -730,19 +471,19 @@ static hid_t H5P_copy_plist(H5P_genplist_t *old_plist, hid_t old_plist_id) done: if (ret_value<0 && new_plist) - H5P_close_list(new_plist); + H5P_close(new_plist); FUNC_LEAVE (ret_value); -} /* H5P_copy_plist() */ +} /* H5P_copy() */ /*-------------------------------------------------------------------------- NAME - H5P_copy_new + H5Pcopy PURPOSE Routine to copy a property list or class USAGE - hid_t H5P_copy_new(id) + hid_t H5Pcopy(id) hid_t id; IN: Property list or class ID to copy RETURNS Success: valid property list ID on success (non-negative) @@ -757,12 +498,15 @@ done: EXAMPLES REVISION LOG --------------------------------------------------------------------------*/ -hid_t H5P_copy_new(hid_t id) +hid_t H5Pcopy(hid_t id) { void *obj; /* Property object to copy */ hid_t ret_value=FALSE; /* return value */ - FUNC_ENTER (H5P_copy_new, FAIL); + FUNC_ENTER (H5Pcopy, FAIL); + + if (H5P_DEFAULT==id) + HRETURN(H5P_DEFAULT); /* Check arguments. */ if (H5I_GENPROP_LST != H5I_get_type(id) && H5I_GENPROP_CLS != H5I_get_type(id)) @@ -772,7 +516,7 @@ hid_t H5P_copy_new(hid_t id) /* Compare property lists */ if(H5I_GENPROP_LST == H5I_get_type(id)) { - if((ret_value=H5P_copy_plist(obj, id))<0) + if((ret_value=H5P_copy(id))<0) HGOTO_ERROR(H5E_PLIST, H5E_CANTCOPY, FAIL, "can't copy property list"); } /* end if */ /* Must be property classes */ @@ -783,126 +527,7 @@ hid_t H5P_copy_new(hid_t id) done: FUNC_LEAVE (ret_value); -} /* H5P_copy_new() */ - - -/*------------------------------------------------------------------------- - * Function: H5Pcopy - * - * Purpose: Deep-copies a property list PLIST_ID. - * - * Return: Success: The ID of the new copy of the property list. - * The ID will be different than the input ID - * since the new ID refers to a completely - * separate copy of the the structure that the - * original ID points to. - * - * Failure: Negative - * - * Programmer: Unknown - * - * Modifications: - * Robb Matzke, 1999-08-03 - * If PLIST_ID is H5P_DEFAULT then we return H5P_DEFAULT. - *------------------------------------------------------------------------- - */ -hid_t -H5Pcopy(hid_t plist_id) -{ - const void *plist = NULL; - void *new_plist = NULL; - H5P_class_t_old type; - hid_t ret_value = FAIL; - H5I_type_t group; - - FUNC_ENTER(H5Pcopy, FAIL); - H5TRACE1("i","i",plist_id); - - if (H5P_DEFAULT==plist_id) - HRETURN(H5P_DEFAULT); - - /* Check args */ - if ((group = H5I_get_type(plist_id)) < 0) - HRETURN_ERROR(H5E_ATOM, H5E_BADTYPE, FAIL, - "unable to retrieve ID type"); - - /* Copy generic property lists and classes in new way */ - if(group==H5I_GENPROP_CLS || group==H5I_GENPROP_LST) { - /* Copy it */ - if ((ret_value=H5P_copy_new (plist_id))<0) - HRETURN_ERROR (H5E_INTERNAL, H5E_CANTINIT, FAIL, - "unable to copy property list"); - } /* end if */ - /* Use old way to copy old-style property lists */ - else { - /* Further arg checking... */ - if (NULL == (plist = H5I_object(plist_id))) - HRETURN_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, - "unable to unatomize property list"); - if ((type = H5P_get_class(plist_id)) < 0) - HRETURN_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, - "unable to retrieve property list type"); - - /* Copy it */ - if (NULL==(new_plist=H5P_copy (type, plist))) - HRETURN_ERROR (H5E_INTERNAL, H5E_CANTINIT, FAIL, - "unable to copy property list"); - - /* Register the atom for the new property list */ - if ((ret_value = H5I_register(group, new_plist)) < 0) { - HRETURN_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, - "unable to atomize property list pointer"); - } - } /* end else */ - - FUNC_LEAVE(ret_value); -} - - -/*------------------------------------------------------------------------- - * Function: H5P_copy - * - * Purpose: Creates a new property list and initializes it with some - * other property list. - * - * Return: Success: Ptr to new property list - * - * Failure: NULL - * - * Programmer: Robb Matzke - * Tuesday, February 3, 1998 - * - * Modifications: - * Robb Matzke, 1999-08-03 - * Modified to use the virtual file layer. - * - * Raymond Lu, 2001-10-02 - * Took out case H5P_DATASET_CREATE for generic property list. - * - *------------------------------------------------------------------------- - */ -void * -H5P_copy (H5P_class_t_old type, const void *src) -{ - size_t size; - H5P_t *dst = NULL; - - FUNC_ENTER (H5P_copy, NULL); - - /* Create the new property list */ - if (NULL==(dst = H5FL_ALLOC(H5P_t,0))) { - HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, - "memory allocation failed"); - } - - /* Copy into new object */ - HDmemcpy(dst, src, size); - - /* Set the type of the property list */ - dst->cls=type; - - FUNC_LEAVE (dst); -} +} /* H5Pcopy() */ /*------------------------------------------------------------------------- @@ -4194,11 +3819,11 @@ done: /*-------------------------------------------------------------------------- NAME - H5P_create_list + H5P_create PURPOSE Internal routine to create a new property list of a property list class. USAGE - H5P_genplist_t *H5P_create_list(class) + H5P_genplist_t *H5P_create(class) H5P_genclass_t *class; IN: Property list class create list from RETURNS Returns a pointer to the newly created property list on success, @@ -4217,7 +3842,7 @@ done: EXAMPLES REVISION LOG --------------------------------------------------------------------------*/ -static H5P_genplist_t *H5P_create_list(H5P_genclass_t *pclass) +static H5P_genplist_t *H5P_create(H5P_genclass_t *pclass) { H5P_genclass_t *tclass=NULL; /* Temporary class pointer */ H5P_genplist_t *plist=NULL; /* New property list created */ @@ -4226,7 +3851,7 @@ static H5P_genplist_t *H5P_create_list(H5P_genclass_t *pclass) H5P_genprop_t *pcopy; /* Copy of property to insert into class */ unsigned u; /* Local index variable */ - FUNC_ENTER (H5P_create_list, NULL); + FUNC_ENTER (H5P_create, NULL); assert(pclass); @@ -4320,16 +3945,16 @@ done: } /* end if */ FUNC_LEAVE (ret_value); -} /* H5P_create_list() */ +} /* H5P_create() */ /*-------------------------------------------------------------------------- NAME - H5Pcreate_list + H5Pcreate PURPOSE Routine to create a new property list of a property list class. USAGE - hid_t H5Pcreate_list(cls_id) + hid_t H5Pcreate(cls_id) hid_t cls_id; IN: Property list class create list from RETURNS Returns a valid property list ID on success, FAIL on failure. @@ -4345,21 +3970,21 @@ done: EXAMPLES REVISION LOG --------------------------------------------------------------------------*/ -hid_t H5Pcreate_list(hid_t cls_id) +hid_t H5Pcreate(hid_t cls_id) { H5P_genclass_t *pclass; /* Property list class to modify */ H5P_genplist_t *plist=NULL; /* Property list created */ hid_t plist_id=FAIL; /* Property list ID */ hid_t ret_value=FAIL; /* return value */ - FUNC_ENTER (H5Pcreate_list, FAIL); + FUNC_ENTER (H5Pcreate, FAIL); /* Check arguments. */ if (H5I_GENPROP_CLS != H5I_get_type(cls_id) || NULL == (pclass = H5I_object(cls_id))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property list class"); /* Create the new property list */ - if ((plist=H5P_create_list(pclass))==NULL) + if ((plist=H5P_create(pclass))==NULL) HGOTO_ERROR(H5E_PLIST, H5E_CANTCREATE, FAIL, "unable to create property list"); /* Get an atom for the property list */ @@ -4386,10 +4011,10 @@ hid_t H5Pcreate_list(hid_t cls_id) done: if (ret_value<0 && plist) - H5P_close_list(plist); + H5P_close(plist); FUNC_LEAVE (ret_value); -} /* H5Pcreate_list() */ +} /* H5Pcreate() */ /*-------------------------------------------------------------------------- @@ -5500,7 +5125,7 @@ done: EXAMPLES REVISION LOG --------------------------------------------------------------------------*/ -static H5P_genclass_t *H5P_get_class_new(H5P_genplist_t *plist) +static H5P_genclass_t *H5P_get_class(H5P_genplist_t *plist) { H5P_genclass_t *ret_value=NULL; /* return value */ @@ -5535,7 +5160,7 @@ static H5P_genclass_t *H5P_get_class_new(H5P_genplist_t *plist) EXAMPLES REVISION LOG --------------------------------------------------------------------------*/ -hid_t H5Pget_class_new(hid_t plist_id) +hid_t H5Pget_class(hid_t plist_id) { H5P_genplist_t *plist; /* Property list to query */ H5P_genclass_t *pclass=NULL; /* Property list class */ @@ -5548,7 +5173,7 @@ hid_t H5Pget_class_new(hid_t plist_id) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property list"); /* Retrieve the property list class */ - if ((pclass=H5P_get_class_new(plist))==NULL) + if ((pclass=H5P_get_class(plist))==NULL) HGOTO_ERROR(H5E_PLIST, H5E_NOTFOUND, FAIL, "unable to query class of property list"); /* Increment the outstanding references to the class object */ @@ -5564,7 +5189,7 @@ done: H5P_close_class(pclass); FUNC_LEAVE (ret_value); -} /* H5Pget_class_name() */ +} /* H5Pget_class() */ /*-------------------------------------------------------------------------- @@ -6099,7 +5724,7 @@ htri_t H5Pisa_class(hid_t plist_id, hid_t pclass_id) H5P_genclass_t *pclass=NULL; /* Property list class */ htri_t ret_value=FAIL; /* return value */ - FUNC_ENTER (H5Pget_class, FAIL); + FUNC_ENTER (H5Pisa_class, FAIL); /* Check arguments. */ if (H5I_GENPROP_LST != H5I_get_type(plist_id) || NULL == (plist = H5I_object(plist_id))) @@ -7298,11 +6923,11 @@ done: /*-------------------------------------------------------------------------- NAME - H5P_close_list + H5P_close PURPOSE Internal routine to close a property list. USAGE - herr_t H5P_close_list(plist) + herr_t H5P_close(plist) H5P_genplist_t *plist; IN: Property list to close RETURNS Returns non-negative on success, negative on failure. @@ -7320,12 +6945,12 @@ done: EXAMPLES REVISION LOG --------------------------------------------------------------------------*/ -static herr_t H5P_close_list(void *_plist) +static herr_t H5P_close(void *_plist) { H5P_genplist_t *plist=(H5P_genplist_t *)_plist; herr_t ret_value=FAIL; /* return value */ - FUNC_ENTER (H5P_close_list, FAIL); + FUNC_ENTER (H5P_close, FAIL); assert(plist); @@ -7349,16 +6974,16 @@ static herr_t H5P_close_list(void *_plist) done: FUNC_LEAVE (ret_value); -} /* H5P_close_list() */ +} /* H5P_close() */ /*-------------------------------------------------------------------------- NAME - H5Pclose_list + H5Pclose PURPOSE Routine to close a property list. USAGE - herr_t H5Pclose_list(plist_id) + herr_t H5Pclose(plist_id) hid_t plist_id; IN: Property list to close RETURNS Returns non-negative on success, negative on failure. @@ -7373,19 +6998,22 @@ done: EXAMPLES REVISION LOG --------------------------------------------------------------------------*/ -herr_t H5Pclose_list(hid_t plist_id) +herr_t H5Pclose(hid_t plist_id) { H5P_genplist_t *plist; /* Property list created */ herr_t ret_value=FAIL; /* return value */ - FUNC_ENTER (H5Pclose_list, FAIL); + FUNC_ENTER (H5Pclose, FAIL); + + if (plist_id==H5P_DEFAULT) + HRETURN(SUCCEED); /* Check arguments. */ if (H5I_GENPROP_LST != H5I_get_type(plist_id) || NULL == (plist = H5I_object(plist_id))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property list"); /* Close the property list */ - if ((ret_value=H5P_close_list(plist)) < 0) + if ((ret_value=H5P_close(plist)) < 0) HGOTO_ERROR(H5E_PLIST, H5E_CANTFREE, FAIL, "can't close"); /* Remove the property list from the ID manager now */ @@ -7394,7 +7022,7 @@ herr_t H5Pclose_list(hid_t plist_id) done: FUNC_LEAVE (ret_value); -} /* H5Pclose_list() */ +} /* H5Pclose() */ /*-------------------------------------------------------------------------- diff --git a/src/H5Pprivate.h b/src/H5Pprivate.h index bc68de8..d7ba533 100644 --- a/src/H5Pprivate.h +++ b/src/H5Pprivate.h @@ -90,23 +90,15 @@ typedef struct H5P_genplist_tag { H5P_genprop_t *props[1]; /* Hash table of pointers to properties in the list */ } H5P_genplist_t; -typedef struct { - H5P_class_t cls; -} H5P_t; - /* Private functions, not part of the publicly documented API */ __DLL__ herr_t H5P_init(void); -__DLL__ hid_t H5P_create(H5P_class_t_old type, H5P_t *plist); -__DLL__ void *H5P_copy(H5P_class_t_old type, const void *src); -__DLL__ hid_t H5P_copy_new(hid_t id); -__DLL__ herr_t H5P_close(void *plist); +__DLL__ hid_t H5P_copy(hid_t old_plist_id); __DLL__ herr_t H5P_register(H5P_genclass_t *pclass, const char *name, size_t size, void *def_value, H5P_prp_create_func_t prp_create, H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get, H5P_prp_delete_func_t prp_delete, H5P_prp_copy_func_t prp_copy, H5P_prp_close_func_t prp_close); __DLL__ herr_t H5P_get(hid_t plist_id, const char *name, void *value); __DLL__ herr_t H5P_set(hid_t plist_id, const char *name, const void *value); -__DLL__ H5P_class_t_old H5P_get_class(hid_t tid); __DLL__ hid_t H5P_get_driver(hid_t plist_id); /* Private functions to "peek" at properties of a certain type */ diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h index a58d00a..92df805 100644 --- a/src/H5Ppublic.h +++ b/src/H5Ppublic.h @@ -36,23 +36,10 @@ typedef long off_t; #endif /*__MWERKS__*/ -/* Property list classes */ -typedef enum H5P_class_t_old { - H5P_NO_CLASS_OLD = -1, /*error return value */ - H5P_NCLASSES_OLD /*this must be last! */ -} H5P_class_t_old; - -/* This typedef should go in the v1.4 compat section when all the internal */ -/* property lists are switched to generic property lists - QAK */ +#ifdef H5_WANT_H5_V1_4_COMPAT +/* Backward compatibility typedef... */ typedef hid_t H5P_class_t; /* Alias H5P_class_t to hid_t */ -/* hid_t aliases for old H5P_class_t enum values */ -/* These go away as each old-style property list is converted to a generic */ -/* property list -QAK */ -/* Also - merge/delete H5Pcreate and H5Pcreate_list */ -/* - merge/delete H5Pget_class and H5Pget_class_new */ -/* - merge/delete H5Pcopy and H5Pcopy_new */ -/* - merge/delete H5Pclose and H5Pclose_list */ -__DLLVAR__ hid_t H5P_NO_CLASS; +#endif /* H5_WANT_H5_V1_4_COMPAT */ /* H5P_DATASET_XFER was the name from the beginning through 1.2. It was * changed to H5P_DATA_XFER on v1.3.0. Then it was changed back to @@ -86,7 +73,7 @@ extern "C" { /* * The library created property list classes */ -#define H5P_NO_CLASS_NEW (H5open(), H5P_CLS_NO_CLASS_g) +#define H5P_NO_CLASS (H5open(), H5P_CLS_NO_CLASS_g) #define H5P_NO_CLASS_HASH_SIZE 1 /* 1, not 0, otherwise allocations get weird */ #define H5P_FILE_CREATE (H5open(), H5P_CLS_FILE_CREATE_g) #define H5P_FILE_CREATE_HASH_SIZE 17 @@ -126,7 +113,7 @@ __DLL__ hid_t H5Pcreate_class(hid_t parent, const char *name, unsigned hashsize, H5P_cls_copy_func_t cls_copy, void *copy_data, H5P_cls_close_func_t cls_close, void *close_data); __DLL__ char *H5Pget_class_name(hid_t pclass_id); -__DLL__ hid_t H5Pcreate_list(hid_t cls_id); +__DLL__ hid_t H5Pcreate(hid_t cls_id); __DLL__ herr_t H5Pregister(hid_t cls_id, const char *name, size_t size, void *def_value, H5P_prp_create_func_t prp_create, H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get, @@ -142,7 +129,7 @@ __DLL__ herr_t H5Pset(hid_t plist_id, const char *name, void *value); __DLL__ htri_t H5Pexist(hid_t plist_id, const char *name); __DLL__ herr_t H5Pget_size(hid_t id, const char *name, size_t *size); __DLL__ herr_t H5Pget_nprops(hid_t id, size_t *nprops); -__DLL__ hid_t H5Pget_class_new(hid_t plist_id); +__DLL__ hid_t H5Pget_class(hid_t plist_id); __DLL__ hid_t H5Pget_class_parent(hid_t pclass_id); __DLL__ herr_t H5Pget(hid_t plist_id, const char *name, void * value); __DLL__ htri_t H5Pequal(hid_t id1, hid_t id2); @@ -152,12 +139,10 @@ __DLL__ int H5Piterate(hid_t id, int *idx, H5P_iterate_t iter_func, __DLL__ herr_t H5Pcopy_prop(hid_t dst_id, hid_t src_id, const char *name); __DLL__ herr_t H5Premove(hid_t plist_id, const char *name); __DLL__ herr_t H5Punregister(hid_t pclass_id, const char *name); -__DLL__ herr_t H5Pclose_list(hid_t plist_id); __DLL__ herr_t H5Pclose_class(hid_t plist_id); __DLL__ hid_t H5Pcreate(hid_t type); __DLL__ herr_t H5Pclose(hid_t plist_id); __DLL__ hid_t H5Pcopy(hid_t plist_id); -__DLL__ hid_t H5Pget_class(hid_t plist_id); __DLL__ herr_t H5Pget_version(hid_t plist_id, int *boot/*out*/, int *freelist/*out*/, int *stab/*out*/, int *shhdr/*out*/); diff --git a/src/H5T.c b/src/H5T.c index 0cddf25..e0ab671 100644 --- a/src/H5T.c +++ b/src/H5T.c @@ -4483,7 +4483,7 @@ H5Tconvert(hid_t src_id, hid_t dst_id, hsize_t nelmts, void *buf, /* Check args */ if (H5I_DATATYPE!=H5I_get_type(src_id) || NULL==(src=H5I_object(src_id)) || H5I_DATATYPE!=H5I_get_type(dst_id) || NULL==(dst=H5I_object(dst_id)) || - (H5P_DEFAULT!=plist_id && H5P_DATASET_XFER!=H5P_get_class(plist_id))) { + (H5P_DEFAULT!=plist_id && TRUE != H5Pisa_class(plist_id, H5P_DATASET_XFER))) { HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type"); } -- cgit v0.12