[svn-r18683] Purpose: Fix bugzilla 1857
Description:
Added missing overloaded function getObjnameByIdx to take char* for name.
Platforms tested:
Linux/32 2.6 (jam)
FreeBSD/64 6.3 (liberty)
SunOS 5.10 (linew)
This commit is contained in:
@@ -1058,10 +1058,27 @@ H5std_string CommonFG::getObjnameByIdx(hsize_t idx) const
|
||||
/// each time the group is opened.
|
||||
// Programmer Binh-Minh Ribler - January, 2003
|
||||
//--------------------------------------------------------------------------
|
||||
ssize_t CommonFG::getObjnameByIdx(hsize_t idx, char* name, size_t size) const
|
||||
{
|
||||
ssize_t name_len = H5Lget_name_by_idx(getLocId(), ".", H5_INDEX_NAME, H5_ITER_INC, idx, name, size, H5P_DEFAULT);
|
||||
if(name_len < 0)
|
||||
{
|
||||
throwException("getObjnameByIdx", "H5Lget_name_by_idx failed");
|
||||
}
|
||||
return (name_len);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Function: CommonFG::getObjnameByIdx
|
||||
///\brief This is an overloaded member function, provided for convenience.
|
||||
/// It differs from the above function in that it takes an
|
||||
/// \c std::string for \a name.
|
||||
// Programmer Binh-Minh Ribler - January, 2003
|
||||
//--------------------------------------------------------------------------
|
||||
ssize_t CommonFG::getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size) const
|
||||
{
|
||||
char* name_C = new char[size];
|
||||
ssize_t name_len = H5Lget_name_by_idx(getLocId(), ".", H5_INDEX_NAME, H5_ITER_INC, idx, name_C, size, H5P_DEFAULT);
|
||||
ssize_t name_len = getObjnameByIdx(idx, name_C, size);
|
||||
if(name_len < 0)
|
||||
{
|
||||
throwException("getObjnameByIdx", "H5Lget_name_by_idx failed");
|
||||
|
||||
@@ -70,8 +70,9 @@ class H5_DLLCPP CommonFG {
|
||||
|
||||
// Retrieves the name of an object in this group, given the
|
||||
// object's index.
|
||||
ssize_t getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size) const;
|
||||
H5std_string getObjnameByIdx(hsize_t idx) const;
|
||||
ssize_t getObjnameByIdx(hsize_t idx, char* name, size_t size) const;
|
||||
ssize_t getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size) const;
|
||||
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
// Returns the type of an object in this group, given the
|
||||
|
||||
@@ -47,6 +47,10 @@ const H5std_string FILE2("trefer2.h5");
|
||||
const H5std_string FILE3("trefer3.h5");
|
||||
const H5std_string DSET_DEFAULT_NAME("default");
|
||||
|
||||
// Dataset 1
|
||||
const H5std_string DSET1_NAME("Dataset1");
|
||||
const int DSET1_LEN = 8;
|
||||
|
||||
const H5std_string MEMBER1( "a_name" );
|
||||
const H5std_string MEMBER2( "b_name" );
|
||||
const H5std_string MEMBER3( "c_name" );
|
||||
@@ -109,7 +113,7 @@ static void test_reference_obj(void)
|
||||
group.setComment(".", write_comment);
|
||||
|
||||
// Create a dataset (inside /Group1)
|
||||
DataSet dataset = group.createDataSet("Dataset1", PredType::NATIVE_UINT, sid1);
|
||||
DataSet dataset = group.createDataSet(DSET1_NAME, PredType::NATIVE_UINT, sid1);
|
||||
|
||||
unsigned *tu32; // Temporary pointer to uint32 data
|
||||
for (tu32=(unsigned *)wbuf, i=0; i<SPACE1_DIM1; i++)
|
||||
@@ -223,13 +227,27 @@ static void test_reference_obj(void)
|
||||
catch (Exception E) {} // We expect this to fail
|
||||
|
||||
// Test reading the name of an item in the group
|
||||
|
||||
// Test getObjnameByIdx(idx)
|
||||
H5std_string name;
|
||||
name = group.getObjnameByIdx(0);
|
||||
verify_val(name, "Dataset1", "Group::getObjnameByIdx", __LINE__, __FILE__);
|
||||
verify_val(name, DSET1_NAME, "Group::getObjnameByIdx", __LINE__, __FILE__);
|
||||
// Test getObjnameByIdx(hsize_t idx, H5std_string& name, size_t size)
|
||||
name.clear();
|
||||
ssize_t name_size = group.getObjnameByIdx(0, name, 5);
|
||||
verify_val(name, "Data", "Group::getObjnameByIdx(index,buf,buf_len)", __LINE__, __FILE__);
|
||||
verify_val(name_size, 8, "Group::getObjnameByIdx(index,buf,buf_len)", __LINE__, __FILE__);
|
||||
verify_val(name, "Data", "Group::getObjnameByIdx(index,(std::string)buf,buf_len)", __LINE__, __FILE__);
|
||||
verify_val(name_size, DSET1_LEN, "Group::getObjnameByIdx(index,(std::string)buf,buf_len)", __LINE__, __FILE__);
|
||||
|
||||
name.clear();
|
||||
name_size = group.getObjnameByIdx(0, name, name_size+1);
|
||||
verify_val(name, DSET1_NAME, "Group::getObjnameByIdx(index,(std::string)buf,buf_len)", __LINE__, __FILE__);
|
||||
verify_val(name_size, DSET1_LEN, "Group::getObjnameByIdx(index,(std::string)buf,buf_len)", __LINE__, __FILE__);
|
||||
|
||||
// Test getObjnameByIdx(hsize_t idx, char* name, size_t size)
|
||||
char name_C[DSET1_LEN+1];
|
||||
group.getObjnameByIdx(0, name, name_size+1);
|
||||
verify_val(name, DSET1_NAME, "Group::getObjnameByIdx(index,(char*)buf,buf_len)", __LINE__, __FILE__);
|
||||
verify_val(name_size, DSET1_LEN, "Group::getObjnameByIdx(index,(char*)buf,buf_len)", __LINE__, __FILE__);
|
||||
|
||||
// Close group
|
||||
group.close();
|
||||
|
||||
Reference in New Issue
Block a user