[PATCH wayland v3] protocol: add support for cross-interface enum attributes

Nils Chr. Brause nilschrbrause at gmail.com
Tue May 3 22:02:46 UTC 2016


Very nice to see that finally landing! :)
Since this patch has been created by Auke Booij back in 2015 (thank
you very much!), there have been some protocol additions in the DnD
area, which also need proper enum attributes. From the wayland.xml of
the C++ Bindings[1]:

wayland.xml:543:      <arg name="dnd_actions" type="uint"
enum="wl_data_device_manager.dnd_action"/>
wayland.xml:544:      <arg name="preferred_action" type="uint"
enum="wl_data_device_manager.dnd_action"/>
wayland.xml:553:      <arg name="source_actions" type="uint"
enum="wl_data_device_manager.dnd_action"/>
wayland.xml:594:      <arg name="dnd_action" type="uint"
enum="wl_data_device_manager.dnd_action"/>
wayland.xml:693:      <arg name="dnd_actions" type="uint"
enum="wl_data_device_manager.dnd_action"/>
wayland.xml:749:      <arg name="dnd_action" type="uint"
enum="wl_data_device_manager.dnd_action"/>

Please add those, too.

Cheers,
Nils

[1] https://github.com/NilsBrause/waylandpp


On Tue, May 3, 2016 at 9:57 PM, Auke Booij <auke at tulcod.com> wrote:
> On 3 May 2016 at 13:04, Pekka Paalanen <ppaalanen at gmail.com> wrote:
>> On Sat,  5 Dec 2015 12:39:12 +0000
>> Auke Booij <auke at tulcod.com> wrote:
>>
>>> The enum attribute, for which scanner support was introduced in
>>> 1771299, can be used to link message arguments to <enum>s. However,
>>> some arguments refer to <enum>s in a different <interface>.
>>>
>>> This adds scanner support for referring to an <enum> in a different
>>> <interface> using dot notation. It also sets the attributes in this
>>> style in the wayland XML protocol (wl_shm_pool::create_buffer::format
>>> to wl_shm::format, and wl_surface::set_buffer_transform::transform to
>>> wl_output::transform), and updates the documentation XSL so that this
>>> new style is supported.
>>>
>>> Changes since v2:
>>>  - add object:: prefix for all enumerations in the documentation
>>>  - fix whitespace in scanner.c
>>>  - minor code fixup to return early and avoid casts in scanner.c
>>>
>>> Changes since v1:
>>>  - several implementation bugs fixed
>>>
>>> Signed-off-by: Auke Booij <auke at tulcod.com>
>>> ---
>>>  doc/publican/protocol-to-docbook.xsl | 19 +++++++++--
>>>  protocol/wayland.xml                 |  4 +--
>>>  src/scanner.c                        | 63 +++++++++++++++++++++++++++---------
>>>  3 files changed, 65 insertions(+), 21 deletions(-)
>>>
>>> diff --git a/doc/publican/protocol-to-docbook.xsl b/doc/publican/protocol-to-docbook.xsl
>>> index fad207a..7e892c3 100644
>>> --- a/doc/publican/protocol-to-docbook.xsl
>>> +++ b/doc/publican/protocol-to-docbook.xsl
>>> @@ -103,9 +103,22 @@
>>>      <listitem>
>>>          <simpara>
>>>            <xsl:if test="@enum">
>>> -            <link linkend="protocol-spec-{../../@name}-enum-{@enum}">
>>> -              <xsl:value-of select="@enum"/>
>>> -            </link>
>>> +            <xsl:choose>
>>> +              <xsl:when test="contains(@enum, '.')">
>>> +                <link linkend="protocol-spec-{substring-before(@enum, '.')}-enum-{substring-after(@enum, '.')}">
>>> +                  <xsl:value-of select="substring-before(@enum, '.')"/>
>>> +                  <xsl:text>::</xsl:text>
>>> +                  <xsl:value-of select="substring-after(@enum, '.')"/>
>>> +                </link>
>>> +              </xsl:when>
>>> +              <xsl:otherwise>
>>> +                <link linkend="protocol-spec-{../../@name}-enum-{@enum}">
>>> +                  <xsl:value-of select="../../@name"/>
>>> +                  <xsl:text>::</xsl:text>
>>> +                  <xsl:value-of select="@enum"/>
>>> +                </link>
>>> +              </xsl:otherwise>
>>> +            </xsl:choose>
>>>           <xsl:text> </xsl:text>
>>>            </xsl:if>
>>>            <xsl:value-of select="@type"/>
>>
>> Hi,
>>
>> thanks for this.
>>
>> This XSL snippet does not work when the enum is defined in a different
>> XML file, does it? Just making sure I know what the expected behaviour
>> is.
>
> Correct; I don't think this is worth implementing at this stage.
>
>> Ok, there would be quite some things to polish, but since this patch
>> has waited for so long so I just rebased the xsl hunk myself, made some
>> whitespace fixes and pushed it:
>>    e21aeb5..7ccf35d  master -> master
>>
>> Please have a look at the merged patch in case I missed something.
>>
>> If you want to do more clean-ups, those can land after the alpha release.
>>
>>
>> Thanks,
>> pq
>
> The patch you pushed looks correct; thanks!


More information about the wayland-devel mailing list