How to write HDF5 enum class?

See title. Is it possible to write values as HDF5_ENUM class from Igor (9)? In particular, I want to write boolean (1/0) values in the 
NX_BOOLEAN class of the NeXus file format.

From my experimentation using the Igor HDF5 tools for netCDF-4 I'm pretty sure the answer is no - I can, as always, be wrong. 

OK, I see. So there is currently no way it seems. I wondered whether I have just overlooked the right flag in the number of (obscure?) options of HDF5SaveData. Would be nice to have a flag which let's one selected the data format to write in the future.

HDF5SaveData must be the most optioned operation within Igor!

If it were really holding up your workflow you could try using an external API like ncgen (or the pure HDF5 equivalent) to create a file with the element you need in it from CDL formatted text. You can then still use the Igor HDF5 utilities to write the datasets, attributes etc to the same file.

It would be an almighty kluge as you would need to create the boolean (enum?) first before writing anything directly. I'm not familiar with the NeXus file format of it's use of enum/boolean types so even that might not help you out.  

Thanks for the reply. At the moment I am fine, since I don't really need this data type now. I also don't know how robust the NeXus file is against 'wrong' data formats. A boolean value could be represented by an 0|1 in 32 bit integer or something, after all. I was just playing around and wondered how to get in these enum values written properly. There are python scripts to write nexus files, which could be repurposed to write specific values via ExecuteScriptText. But I don't want to go down this route without any real need for now. No enum writing then I guess.

I don't know the NeXus format extremely well yet, since I just started writing a export tool for Igor last week, but in the examples I have found only H5T_FLOAT, H5T_INTEGER and H5T_STRING are used. In rare cases the H5T_ENUM class is used for boolean values. I guess this is mainly because it is the smallest binary size of one byte in the HDF5 format. I don't know if it is OK to write an integer value here as a compromise without breaking some of the readout scripts. Maybe a look at the widely used python implementation would give more insight, but my python-fu is not that strong. There is a list of NeXus classes, but I think they just build on the above four H5T classes (the manual is unfortunately not very specific here):

So, yes, I think from what I know so far that if the enum class could be written from Igor, then that would give full support for NeXus classes as well.

I saw the same page you link and was also not entirely informed by it. I read it as meaning NeXus files use bitfield (NX_BINARY), and time (ISO08601 & NX_DATE_TME) data types which Igor also doesn't support but I could equally have missinterpretted it.

Is there an exemplary file somewhere that uses all the types? I had quick look myself and came up with nothing but not being familiar with NeXus files I could have been looking in all the wrong places. I would be interested in getting straight how the NX classes are wrapping the H5 classes.

As far as I understand, the NX_BINARY definition is not bound to a specific class, but means data which is limited to the range {0|1}, even if it is just a string. I could be wrong here. I haven't found any entry relevant for my projects which use this class. Also, the time class is just a string in a specific format (ISO08601, e.g., something like 2021-08-10T09:57:18Z). I was looking for universal example files, but there is nothing and the official documentation has a lot to be desired. So far it has been a bumpy ride working on/with NeXus, but maybe I just don't know where the secret-sauce background info is yet.