Hi everyone,<br><br>I'm the author of a/the libhal(-storage) C++ wrapper ( <a href="http://projects.beep-media-player.org/index.php/Main/Hal">http://projects.beep-media-player.org/index.php/Main/Hal</a> ).<br><br>I've noticed some subtle differences between hal 
0.5.7.x and hal 0.5.8.x which are not clear to me as to why this happened:<br><br>0.5.7:<br>--snip--<br>struct LibHalPropertySetIterator_s {<br>&nbsp; LibHalPropertySet *set;&nbsp;&nbsp;&nbsp; /**&lt; Property set we are iterating over */<br>
&nbsp; unsigned int index; <br>--snip--<br><br>0.5.8:<br>--snip--<br>struct LibHalPropertySetIterator_s {<br>&nbsp; LibHalPropertySet *set;&nbsp;&nbsp;&nbsp; /**&lt; Property set we are iterating over */<br>&nbsp; unsigned int idx;<br>--snip--<br><br>
(&quot;index&quot; was renamed to &quot;idx&quot;)<br><br>I'm providing an STL-like (input iterator concept providing) interface for iterating through the PS of a device in the C++ wrapper, which requires this code here to check whether 2 iters are identical (point to the same position in the PS, and belong to the same PS):
<br><br>--snip--<br>#ifdef HAVE_HAL_058<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ((i.idx == other.i.idx) &amp;&amp; (i.set == other.i.set));<br>#else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ((i.index == other.i.index) &amp;&amp; (i.set == other.i.set
));<br>#endif // HAVE_HAL_058<br>--snip--<br><br>I'd like to ask to please not change the name of this member or the entire PS iterator struct itself, if possible at all. Alternatively mark the entire structure as private/opaque/subject to change, and if that should happen, please provide get_current_index(), and get_property_set() methods for the iterator.
<br><br>The second thing i'd like to point out is this:<br><br>0.5.7 LibHalDriveCdromCaps:<br>--snip--<br>&nbsp; LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSR&nbsp;&nbsp; = 0x0080,<br>&nbsp; LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRW&nbsp; = 0x0100,<br>&nbsp; LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRDL = 0x0200,
<br>&nbsp; LIBHAL_DRIVE_CDROM_CAPS_BDROM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0x0400,<br>&nbsp; LIBHAL_DRIVE_CDROM_CAPS_BDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0x0800,<br>--snip--<br><br>0.5.8 LibHalDriveCdromCaps:<br>--snip--<br>&nbsp; LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSR&nbsp;&nbsp;&nbsp; = 0x00080,<br>&nbsp; LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRW&nbsp;&nbsp; = 0x00100,
<br>&nbsp; LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRDL&nbsp; = 0x00200,<br>&nbsp; LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRWDL = 0x00400,<br>&nbsp; LIBHAL_DRIVE_CDROM_CAPS_BDROM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0x00800,<br>&nbsp; LIBHAL_DRIVE_CDROM_CAPS_BDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0x01000,<br>--snip--<br>
<br>All the values after&nbsp; DVDPLUSRDL are shifted, which doesn't make much sense to me, as there is enough padding. How this padding was to be used exactly I don't know, but without knowing it, this here would seem to have been just as sensible and then even keeping the API wrt this enum stable:
<br><br>&nbsp; LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSR&nbsp;&nbsp;&nbsp; = 0x00080,<br>
&nbsp; LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRW&nbsp;&nbsp; = 0x00100,<br>
&nbsp; LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRDL&nbsp; = 0x00200,<br>
&nbsp; LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRWDL = 0x00201,<br>
&nbsp; LIBHAL_DRIVE_CDROM_CAPS_BDROM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0x00400,<br>
&nbsp; LIBHAL_DRIVE_CDROM_CAPS_BDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0x00800,<br>
<br><br>Thanks for consideration<br>Milosz<br>