On Jun 2, 2016, at 4:26 AM, Auke Booij <a...@tulcod.com> wrote:
> 
> On 1 June 2016 at 20:16, Yong Bakos <j...@humanoriented.com> wrote:
>> On May 30, 2016, at 3:54 AM, Pekka Paalanen <ppaala...@gmail.com> wrote:
>>> 
>>> On Sat, 28 May 2016 08:39:59 -0500
>>> Yong Bakos <j...@humanoriented.com> wrote:
>>> 
>>>> Hi Mike,
>>>> Regarding the combination of type="array" enum="foo"...
>>>> 
>>>>> On May 27, 2016, at 12:30 PM, Mike Blumenkrantz 
>>>>> <michael.blumenkra...@gmail.com> wrote:
>>>>> 
>>>>> I've inlined some replies below.
>>>>> 
>>>>> On Fri, May 27, 2016 at 1:13 PM Yong Bakos <j...@humanoriented.com 
>>>>> <mailto:j...@humanoriented.com>> wrote:
>>>>> On May 27, 2016, at 10:29 AM, Mike Blumenkrantz <zm...@osg.samsung.com 
>>>>> <mailto:zm...@osg.samsung.com>> wrote:
>>>>>> 
>>>>>> this adds a method for compositors to change various draw attributes
>>>>>> for a surface
>>>>>> 
>>>>>> Signed-off-by: Mike Blumenkrantz <zm...@osg.samsung.com 
>>>>>> <mailto:zm...@osg.samsung.com>>
>>>>>> Signed-off-by: Jonas Ådahl <jad...@gmail.com <mailto:jad...@gmail.com>>
>>>>> 
>>>>> Hi Mike & Jonas,
>>>>> A question about communicating default state, and some
>>>>> minor nits you can certainly ignore, inline below.
>>>>> 
>>>>> 
>>>>>> ---
>>>>>> unstable/xdg-shell/xdg-shell-unstable-v6.xml | 69 
>>>>>> ++++++++++++++++++++++++++++
>>>>>> 1 file changed, 69 insertions(+)
>>>>>> 
>>>>>> diff --git a/unstable/xdg-shell/xdg-shell-unstable-v6.xml 
>>>>>> b/unstable/xdg-shell/xdg-shell-unstable-v6.xml
>>>>>> index dfd7e84..0fa76d4 100644
>>>>>> --- a/unstable/xdg-shell/xdg-shell-unstable-v6.xml
>>>>>> +++ b/unstable/xdg-shell/xdg-shell-unstable-v6.xml
>>> 
>>>>>> +
>>>>>> +        Calling this after an xdg_toplevel's first commit will raise a 
>>>>>> client error.
>>>>>> +      </description>
>>>>>> +      <arg name="states" type="array" enum="draw_state"/>
>>>>> 
>>>>> Just a sanity check, since I haven't seen it in a protocol spec yet. Does 
>>>>> scanner handle
>>>>> this combination of array and enum correctly?
>>>>> 
>>>>> Good catch. This also affects the event above it.
>>>> 
>>>> As we discussed via IRC (27 May), the scanner will choke on this. While we 
>>>> talked about
>>>> making a change to the scanner to allow this, perhaps such a change 
>>>> doesn't make sense.
>>>> 
>>>> Given a type="array", scanner will generate a parameter of type wl_array.
>>>> 
>>>> Perhaps the short story here is to just remove the enum from this arg, and 
>>>> the similar
>>>> arg in the configure_draw_states event above. What do you think?
>>>> 
>>>> (I wonder if it's the DTD that can change, so the scanner's validation step
>>>> will catch the unsupported combination of type="array" enum="foo". My gut 
>>>> tells me that
>>>> DTDs don't support this logic, but I'll dig into this.)
>>> 
>>> Hi,
>>> 
>>> here is some background.
>>> 
>>> A type="array" argument is really just a binary blob of data. The XML
>>> description, human documentation aside, does not specify anything about
>>> the blob contents. Therefore adding an XML attribute pointing to an
>>> enum definition is half-useless. Generators could use it for creating
>>> automatic links in documentation, but it cannot be used for code
>>> generation, because you don't know the types contained in the blob.
>>> 
>>> We also do not want to add blob content type definitions to the XML
>>> language, because you might want to have everything C is able to
>>> express, including nested structs. There is also no requirement that
>>> the "array" is really an array - every "element" could be a different
>>> thing. It could be bitstream and whatnot. Only the use of
>>> wl_array_for_each() implies it is an array of similar elements,
>>> wl_array_add() does not.
>>> 
>>> The big point in adding enum annotations was that language bindings
>>> generators (other than wayland-scanner) could use the annotation for
>>> code generation. I don't think it is possible with the array type.
>>> 
>>> If we allow enum annotation with the array type, it will only be usable
>>> for doc links, unlike the other enum annotations.
>>> 
>>> OTOH, we have lots and lots of places in the documentation texts that
>>> refer to some request, event, interface, etc. that would be useful as a
>>> hyperlink in the generated docs. Enums could fall into that as well, so
>>> we would not need the attribute for only documentation.
>>> 
>>> Auke, Nils, what's your take on this matter?
>>> 
>>> We do have some documentation about enums in
>>> https://wayland.freedesktop.org/docs/html/ch04.html#sect-Protocol-Basic-Principles
>>> 
>>> Thanks,
>>> pq
>> 
>> Pekka,
>> Thank you for the info. Just so I understand your points correctly, let
>> me assert that /just/ making a minor change to scanner to not error on
>> the presence of both array and enum together does not have any major
>> drawbacks.
>> 
>> Correct?
> 
> Technically, it might be the case that nothing will necessarily break
> *now*. But such a change would move us from very the currently
> well-defined semantics of the enum attribute, into weird
> documentation-only or half-defined specifications. This will be
> confusing more often than it will be helpful.
> 
> If you want to refer to a specific enum, because your binary data
> *could* be interpreted as doing so, in my opinion this should be done
> in the textual documentation. Any formal reference should have a
> formal technical specification, which we don't have (and don't want).

Thanks Auke and Pekka, I definitely see the point in needing to be
conservative here, despite the innocuous intent. Scanner should not
accommodate the presence of array with enum right now.

yong

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to