On 09/23/2014 08:17 AM, Nils Chr. Brause wrote:
Having more than the power-of-two values listed isn't a problem in my opinion. I see these extra values as some sort of shortcuts for often used OR-combinations.
That is what I was thinking too. A bitfield can be treated identically to an enum. I think there may be confusion that the values would be specified differently. But they should be specified as the actual numeric power of 2 that the resulting integer has, and extra values that are not powers of 2 are allowed. This means that a backend that does not distinguish enum and bitfield can trivially treat them the same.
Backends that do care will look for the entries that are powers of 2 and use them as the bits. Depending on the language they may be able to do something with the other values (certainly C++ could handle those easily, though it gets tricky if you want to prevent & with these values).
In C++11 this just means adding an inline operator| and operator& to the enum in the header file. Pre-C++11 you have to make a fake class which is annoying.
If the bitfield is missing the best that can be done is to assume all enums are bitfields. This will allow invalid settings that could be detected at compile time to be passed to the ones that are not bitfields.
So I certainly see some advantage in this and no harm whatsoever. _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel