From 5b1a07823fc61017b85a1503ae5453e18716708e Mon Sep 17 00:00:00 2001 From: Quincey Koziol Date: Thu, 27 Sep 2007 18:09:59 -0500 Subject: [svn-r14163] Description: Make H5Arename() versioned and switch internal usage to use H5Arename2() Add regression test for H5Arename1() Tested on: FreeBSD/32 6.2 (duty) in debug mode FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode AIX/32 5.3 (copper) w/FORTRAN, w/parallel, in production mode Mac OS X/32 10.4.10 (amazon) in debug mode --- c++/src/H5Object.cpp | 6 ++---- src/H5Adeprec.c | 12 ++++++++---- src/H5Apublic.h | 2 +- src/H5vers.txt | 1 + src/H5version.h | 15 +++++++++++++++ test/tattr.c | 40 ++++++++++++++++++++++------------------ 6 files changed, 49 insertions(+), 27 deletions(-) diff --git a/c++/src/H5Object.cpp b/c++/src/H5Object.cpp index 2c711e3..894cfef 100644 --- a/c++/src/H5Object.cpp +++ b/c++/src/H5Object.cpp @@ -277,11 +277,9 @@ void H5Object::removeAttr( const H5std_string& name ) const //-------------------------------------------------------------------------- void H5Object::renameAttr(const char* oldname, const char* newname) const { - herr_t ret_value = H5Arename(id, oldname, newname); + herr_t ret_value = H5Arename2(id, ".", oldname, newname, H5P_DEFAULT); if (ret_value < 0) - { - throw AttributeIException(inMemFunc("renameAttr"), "H5Arename failed"); - } + throw AttributeIException(inMemFunc("renameAttr"), "H5Arename2 failed"); } //-------------------------------------------------------------------------- diff --git a/src/H5Adeprec.c b/src/H5Adeprec.c index 6c4502e..75f5191 100644 --- a/src/H5Adeprec.c +++ b/src/H5Adeprec.c @@ -334,12 +334,15 @@ done: FUNC_LEAVE_API(ret_value) } /* H5Aget_num_attrs() */ +#ifndef H5_NO_DEPRECATED_SYMBOLS /*------------------------------------------------------------------------- - * Function: H5Arename + * Function: H5Arename1 * * Purpose: Rename an attribute * + * Note: Deprecated in favor of H5Arename2 + * * Return: Success: Non-negative * Failure: Negative * @@ -349,12 +352,12 @@ done: *------------------------------------------------------------------------- */ herr_t -H5Arename(hid_t loc_id, const char *old_name, const char *new_name) +H5Arename1(hid_t loc_id, const char *old_name, const char *new_name) { H5G_loc_t loc; /* Object location */ herr_t ret_value = SUCCEED; /* Return value */ - FUNC_ENTER_API(H5Arename, FAIL) + FUNC_ENTER_API(H5Arename1, FAIL) H5TRACE3("e", "i*s*s", loc_id, old_name, new_name); /* check arguments */ @@ -373,7 +376,8 @@ H5Arename(hid_t loc_id, const char *old_name, const char *new_name) done: FUNC_LEAVE_API(ret_value) -} /* H5Arename() */ +} /* H5Arename1() */ +#endif /* H5_NO_DEPRECATED_SYMBOLS */ /*-------------------------------------------------------------------------- diff --git a/src/H5Apublic.h b/src/H5Apublic.h index e1106f9..f154261 100644 --- a/src/H5Apublic.h +++ b/src/H5Apublic.h @@ -89,7 +89,6 @@ H5_DLL hid_t H5Acreate(hid_t loc_id, const char *name, hid_t type_id, H5_DLL hid_t H5Aopen_name(hid_t loc_id, const char *name); H5_DLL hid_t H5Aopen_idx(hid_t loc_id, unsigned idx); H5_DLL int H5Aget_num_attrs(hid_t loc_id); -H5_DLL herr_t H5Arename(hid_t loc_id, const char *old_name, const char *new_name); H5_DLL herr_t H5Aiterate(hid_t loc_id, unsigned *attr_num, H5A_operator_t op, void *op_data); @@ -107,6 +106,7 @@ H5_DLL herr_t H5Aiterate(hid_t loc_id, unsigned *attr_num, H5A_operator_t op, /* Function prototypes */ H5_DLL herr_t H5Adelete1(hid_t loc_id, const char *name); +H5_DLL herr_t H5Arename1(hid_t loc_id, const char *old_name, const char *new_name); #endif /* H5_NO_DEPRECATED_SYMBOLS */ diff --git a/src/H5vers.txt b/src/H5vers.txt index 3bafc28..17dde82 100644 --- a/src/H5vers.txt +++ b/src/H5vers.txt @@ -46,6 +46,7 @@ # (although not required, it's easier to compare this file with the headers # generated if the list below is in alphanumeric sort order - QAK) FUNCTION: H5Adelete; ; v10, v18 +FUNCTION: H5Arename; ; v16, v18 FUNCTION: H5Eclear; ; v10, v18 FUNCTION: H5Eget_auto; ; v10, v18 FUNCTION: H5Eprint; ; v10, v18 diff --git a/src/H5version.h b/src/H5version.h index bdfa8bb..a6c8414 100644 --- a/src/H5version.h +++ b/src/H5version.h @@ -42,6 +42,10 @@ #define H5Adelete_vers 1 #endif /* !defined(H5Adelete_vers) */ +#if !defined(H5Arename_vers) +#define H5Arename_vers 1 +#endif /* !defined(H5Arename_vers) */ + #if !defined(H5Eclear_vers) #define H5Eclear_vers 1 #endif /* !defined(H5Eclear_vers) */ @@ -118,6 +122,17 @@ #error "H5Adelete_vers set to invalid value" #endif /* H5Adelete_vers */ +#if !defined(H5Arename_vers) || H5Arename_vers == 2 +#ifndef H5Arename_vers +#define H5Arename_vers 2 +#endif /* H5Arename_vers */ +#define H5Arename H5Arename2 +#elif H5Arename_vers == 1 +#define H5Arename H5Arename1 +#else /* H5Arename_vers */ +#error "H5Arename_vers set to invalid value" +#endif /* H5Arename_vers */ + #if !defined(H5Eclear_vers) || H5Eclear_vers == 2 #ifndef H5Eclear_vers #define H5Eclear_vers 2 diff --git a/test/tattr.c b/test/tattr.c index 2c57d49..8a07cae 100644 --- a/test/tattr.c +++ b/test/tattr.c @@ -236,51 +236,51 @@ test_attr_basic_write(hid_t fapl) CHECK(ret, FAIL, "H5Awrite"); /* Check storage size for attribute */ - attr_size=H5Aget_storage_size(attr); - VERIFY(attr_size, (ATTR1_DIM1*sizeof(int)), "H5A_get_storage_size"); + attr_size = H5Aget_storage_size(attr); + VERIFY(attr_size, (ATTR1_DIM1 * sizeof(int)), "H5A_get_storage_size"); /* Read attribute information immediately, without closing attribute */ - ret=H5Aread(attr,H5T_NATIVE_INT,read_data1); + ret = H5Aread(attr, H5T_NATIVE_INT, read_data1); CHECK(ret, FAIL, "H5Aread"); /* Verify values read in */ - for(i=0; i0) - attr_name = (char*)HDcalloc((size_t)(attr_name_size+1), sizeof(char)); + if(attr_name_size > 0) + attr_name = (char*)HDcalloc((size_t)(attr_name_size + 1), sizeof(char)); - ret=(herr_t)H5Aget_name(attr, (size_t)(attr_name_size+1), attr_name); + ret = (herr_t)H5Aget_name(attr, (size_t)(attr_name_size + 1), attr_name); CHECK(ret, FAIL, "H5Aget_name"); - ret=HDstrcmp(attr_name, ATTR_TMP_NAME); + ret = HDstrcmp(attr_name, ATTR_TMP_NAME); VERIFY(ret, 0, "HDstrcmp"); if(attr_name) HDfree(attr_name); /* Read attribute information immediately, without closing attribute */ - ret=H5Aread(attr,H5T_NATIVE_INT,read_data1); + ret = H5Aread(attr, H5T_NATIVE_INT, read_data1); CHECK(ret, FAIL, "H5Aread"); /* Verify values read in */ @@ -3273,7 +3273,7 @@ test_attr_deprec(hid_t fcpl, hid_t fapl) CHECK(ret, FAIL, "H5Fclose"); - /* Re-open the file and delete the attribute */ + /* Re-open the file and operate on the attribute */ /* Re-open file */ fid = H5Fopen(FILENAME, H5F_ACC_RDWR, fapl); @@ -3284,8 +3284,12 @@ test_attr_deprec(hid_t fcpl, hid_t fapl) CHECK(dataset, FAIL, "H5Dopen"); + /* Rename attribute */ + ret = H5Arename1(dataset, "attr", "attr2"); + CHECK(ret, FAIL, "H5Arename1"); + /* Delete attribute */ - ret = H5Adelete1(dataset, "attr"); + ret = H5Adelete1(dataset, "attr2"); CHECK(ret, FAIL, "H5Adelete1"); -- cgit v0.12