Enums, bitfields and wl_arrays

Auke Booij auke at tulcod.com
Tue Oct 13 12:27:58 PDT 2015


On 13 October 2015 at 16:19, Solerman Kaplon <solerman at gmail.com> wrote:
> Em 13-10-2015 11:35, Nils Chr. Brause escreveu:
>>
>> In C++ the order doesn't matter either, since each entry has a defined
>> value. I wonder why this is different in Java?
>
>
> Java Enums doesn't have "value". It just a class instance. But since it's a
> class one can add regular fields to it, like this (writing of the top of my
> head):
>
> public static enum Orientation {
>   Portrait(1), Landscape(2);
>
>   final int value;
>
>   Orientation(int value) {
>     this.value = value;
>   }
>
>   public int getValue() {
>     return this.value;
>   }
> }
>
> Solerman


I really don't understand this discussion. Is the claim that the usage
of enums in java is problematic, because inserting a new value in an
existing enum might change the index of later values, thereby creating
an inconsistency?

If so, all I can say that clearly the object you want to associate
with wayland-style enums is not whatever Java has invented for an
"enum". The values that are associated to names inside wayland enums
are very clear-defined, and if a language cannot safely couple names
back to values, then that is a language that does not understand the
concept of a variable. If this is a fundamental problem about Java
enums, you better find a way around it, but I don't see how this is in
any way a problem on the wayland side: there are enums, and enums
contain names, and those names have values.

But if this is indeed the issue you are discussing, then this must
have already been a problem before the introduction of additional XML
attributes.

Can we agree on the following? Until there is any firm specification
of open/closed enums, every enum should be considered open, and
although some legal values might be listed, others might not be, and
some might only be legal sometimes. New values may be added (but not
changed or removed) to protocol specifications without introducing any
compatibility issues.


More information about the wayland-devel mailing list