Re: more enum questions...

Hi Ed,

> I have some more enum questions!
> 
> Looking at the HDF5 users guide, I see the following example:
> 
> hid_t hdf_en_colors = H5Tcreate(H5T_ENUM, sizeof(short));
> short val;
>       H5Tenum_insert(hdf_en_colors, "RED",   (val=0,&val));
>       H5Tenum_insert(hdf_en_colors, "GREEN", (val=1,&val));
>       H5Tenum_insert(hdf_en_colors, "BLUE",  (val=2,&val));
>       H5Tenum_insert(hdf_en_colors, "WHITE", (val=3,&val));
>       H5Tenum_insert(hdf_en_colors, "BLACK", (val=4,&val));
> 
>      H5Dcreate(fileid,spaceid,hdf_en_colors,H5P_DEFAULT);
> 
> 
> I have three immediate questions:
> 
> 1 - Why is H5Tenum_create not used?

    It certainly could have been, there's no particular advantage one way or
the other (currently).  In the future, if we allow enums to have non-integer
base types (like an enum of floating-point values, with PI, E, etc. defined),
we'll encourage more people to use H5Tcreate_enum().

> 2 - In the above case, how does HDF5 choose the underlying integer
> type? Obviously it will be a short, but signed or unsigned? Big,
> little, or native endian? Or does it not matter?

    If you use H5Tcreate(), it uses the smallest "native" [signed] integer that
will hold the number of bytes passed in for the size.

> 3 - What is this strage way of setting the value of val inside the
> parameters to the function? In 20 years of C programming, I have never
> seen this technique!
    
    Ah, the comma operator is a strange and wondrous thing. :-)

        Quincey