[Xcb] [PATCH proto 1/3 V2] xml-xcb spec: describe switch-case

Ran Benita ran234 at gmail.com
Sat Aug 23 08:54:45 PDT 2014


On Wed, Aug 20, 2014 at 11:10:35AM +0200, Christian Linhart wrote:
> 
> V2: patch revised according to suggestion from Peter Harris:
> * add the restriction that <enumref>
>   inside <bitcase> can only refer to an enum's <bit> members, and
>   <enumref> inside <case> can only refer to an enum's <value> members.

Replied on the V1 before, sorry.

Reviewed-by: Ran Benita <ran234 at gmail.com>

But you also need to update proto/src/xcb.xsd in this series. Run
"make check" in proto and make sure that it passes.

Ran

> ---
>  doc/xml-xcb.txt | 38 ++++++++++++++++++++++++++++++--------
>  1 file changed, 30 insertions(+), 8 deletions(-)
> 
> diff --git a/doc/xml-xcb.txt b/doc/xml-xcb.txt
> index 97ce5bf..f93db7d 100644
> --- a/doc/xml-xcb.txt
> +++ b/doc/xml-xcb.txt
> @@ -239,26 +239,48 @@ enum; the value is restricted to one of the constants named in the enum.
>    defining the set of values included, and a list containing these values.
>    value-mask-type gives the type of the bitmask; this must be CARD16 or
>    CARD32.  value-mask-name gives the field name of the bitmask, and
>    value-list-name gives the field name of the list of values. Please use
>    <switch> instead for new protocol definitions.
>  
>  <switch name="identifier"> switch expression
> -    <bitcase> bitcase expression(s), fields </bitcase> </switch>
> +    <bitcase> bitcase expression(s), fields </bitcase>
> +    <case> case expression(s), fields </case>
> +</switch>
>  
>    This element represents conditional inclusion of fields. It can be viewed
> -  as sequence of multiple ifs: if ( switch expression & bitcase expression )
> -  is non-zero, bitcase fields are included in structure.  It can be used only
> -  as the last field of a structure.
> +  as sequence of multiple ifs:
>  
> -  When a bitcase includes multiple <enumref> clauses, the contents of the
> -  bitcase are only present once regardless of the number of bitcase expressions
> -  that match.
> +  <bitcase>:
> +    if ( switch expression & bitcase expression ) is non-zero,
> +    bitcase fields are included in structure.
> +
> +  <case>:
> +    if ( switch expression == case expression ) is true,
> +    then case fields are included in structure.
> +
> +  It can be used only as the last field of a structure.
> +
> +  When a bitcase or case includes multiple <enumref> clauses, the contents
> +  of the bitcase or case are only present once regardless of the number of
> +  bitcase or case expressions that match.
> +
> +  <enumref> inside <bitcase> can only refer to an enum's <bit> members.
> +  <enumref> inside <case> can only refer to an enum's <value> members.
> +
> +  A switch may contain multiple <bitcase> or <case> elements.
> +  Usually it will only contain <bitcase> elements
> +  or only contain <case> elements.
> +  That is, mixing of <case> and <bitcase> usually doesn't make any sense.
> +
> +  The same value may appear in multiple <case> or <bitcase> elements.
> +
> +  New protocol definitions should prefer to use this instead of <valueparam>
> +  and instead of <union>.
>  
> -  New protocol definitions should prefer to use this instead of <valueparam>.
>  
>  Expressions
>  -----------
>  
>    Expressions consist of a tree of <op> elements with leaves consisting of
>    <fieldref> or <value> elements.
>  
> -- 2.0.1
> 
> _______________________________________________
> Xcb mailing list
> Xcb at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/xcb


More information about the Xcb mailing list