[PATCH V2] wayland.xml: add "enum", "bitfield" and "is_bitfield" attributes

Bill Spitzak spitzak at gmail.com
Tue Sep 23 11:43:08 PDT 2014

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.

More information about the wayland-devel mailing list