<div dir="ltr"><br><br><div class="gmail_quote">On Mon, 20 Apr 2015 at 09:03 Pekka Paalanen <<a href="mailto:ppaalanen@gmail.com">ppaalanen@gmail.com</a>> wrote: <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Also, adding the strict type information to the XML spec has no benefit<br>
for C, which is the de facto language for Wayland core developers. A C<br>
compiler also does not raise errors if you violate the rules. This and<br>
all the above are the likely reasons why adding the strict type<br>
information is not interesting, at least for me.<br>
<br>
Making the enum rules more strict has a possibility to break existing<br>
users, but to me it is unclear if the benefit would outweigh that<br>
con or the freedom.<br>
<br>
On the wire, an enum or bitfield is still just an uint (or int), and a<br>
buggy client or server may cause the other to receive illegal values.<br>
Do the strongly typed languages have checks against that? Can you<br>
define what happens if the value is illegal for an enum? Or do you have<br>
to write that check manually in any case?<br>
<br>
So, the big question here is: do we even want to have strict enum types?<br></blockquote><div><br></div><div>It does indeed not provide any benefit for C, but if C is the only language to be targeted, there is not much use in there being an XML specification at all. It could've just been written out in C. I do agree that any changes should be compatible with C. <br><br></div><div>I know in Rust, conversion from the `uint` to the `enum` type would have to be done manually, and error checking happens here. It does stop the user from passing illegal values to other servers however. It also makes it more clear what `enum`s are to be used with which arguments, and enforces this. <br><br></div><div>I don't really see why adding that to the specification is an issue. If some `enum` types aren't complete, as in, they aren't the only valid values, then I see little value in having the `enum` in the specification in the first place.</div></div></div>