We have begun writing some initial, experimental code to help us learn the HDF5 API. The code that we eventually want to incorporate HDF5 functionality into is in C++, so we are trying to use the C++ API. We quickly discovered some possible limitations or gaps in it relative to the C API. I wanted to make sure that they really are gaps and not just our misunderstanding.
First, it appears that creating and attaching dimension scales is only possible with C functions. There is no parallel capability in the C++ API. Is that right? We were able to use the C functions and object ids to create dimension scales, but I wanted to make sure we weren’t making needless work for ourselves.
Second, I’ve been trying to find a “C++ way” to set the character encoding of object and attribute names to UTF-8. I have not met with any success here, either. The C++ API appears not to provide access to many of the property list manipulation functions such as H5Pset_char_encoding. On top of that, the createGroup method, unlike createDataSet and createAttibute, does not accept property lists as arguments. So, even if I created a property list using the C API, I don’t know how to use it to create a Group. Is this just a limitation of the C++ API?
Is there a document or other description of what’s “missing” from the C++ API?
Edit: Much of the above was based on my reading of the C++ API doxygen documentation located here. While poking around in the actual headers, I noticed that H5Location::createGroup can accept a LinkCreatPropList object. The LinkCreatPropList class has a member function setCharEncoding to set the encoding of object names.
That version of createGroup does not appear to be documented, and neither does the LinkCreatePropList class. Is that just an oversight/'round to it kind of thing? Or is that documentation considered to be the authoritative source of information about the public C++ API, and we should avoid using undocumented parts?