I am opening an existing HDF5 file for appending data; I want to assure that group called /A
exists for subsequent access. I am looking for an easy way to either create /A
conditionally (create and return new group if not existing, or return the existing group). One way is to test for /A
existence. How can I do it efficiently?
According to the API docs, I can do something like this:
H5::H5File h5file(filename,H5F_ACC_RDWR);
H5::H5Group grp;
try{
grp=h5file.openGroup("A");
} catch(H5::Exception& e){
/* group does not exists, create it */
grp=h5file.createGroup("A");
}
but the obvious ugliness comes from the fact that exception is used to communicate information which is not exceptional at all.
There is H5::CommonFG::getObjinfo, which seems to wrap H5Gget_objinfo in such way that false (nonexistent) return value of the C routine throws an exception; so again the same problem.
Is it clean to recourse to the C API in this case, or is there some function directly designed to test existence in the C++ API which I am overlooking?