[PATCH wayland 2/2] scanner: Make emit_structs more explicit

Pekka Paalanen ppaalanen at gmail.com
Mon Aug 18 01:33:15 PDT 2014


On Mon, 11 Aug 2014 10:04:01 +0200
Marek Chalupa <mchqwerty at gmail.com> wrote:

> The code looks clearer, seems working and I haven't found any issue in the
> code, therefore:
> 
> Reviewed-by: Marek Chalupa <mchqwerty at gmail.com>
> 
> For both patches

I checked that the scanner output in both Wayland and Weston stays
identical. Both patches pushed.


Thanks,
pq


> On 9 August 2014 00:22, Jasper St. Pierre <jstpierre at mecheye.net> wrote:
> 
> > "is_interface" is a really terrible name for the client or server
> > variants, and instead of checking whether we were passed the requests or
> > the events, just pass an argument through.
> > ---
> >  src/scanner.c | 25 ++++++++++++-------------
> >  1 file changed, 12 insertions(+), 13 deletions(-)
> >
> > diff --git a/src/scanner.c b/src/scanner.c
> > index 51ecb55..72fd3e8 100644
> > --- a/src/scanner.c
> > +++ b/src/scanner.c
> > @@ -851,16 +851,15 @@ emit_enumerations(struct interface *interface)
> >  }
> >
> >  static void
> > -emit_structs(struct wl_list *message_list, struct interface *interface)
> > +emit_structs(struct wl_list *message_list, struct interface *interface,
> > enum side side)
> >  {
> >         struct message *m;
> >         struct arg *a;
> > -       int is_interface, n;
> > +       int n;
> >
> >         if (wl_list_empty(message_list))
> >                 return;
> >
> > -       is_interface = message_list == &interface->request_list;
> >         if (interface->description) {
> >                 struct description *desc = interface->description;
> >                 printf("/**\n");
> > @@ -876,7 +875,7 @@ emit_structs(struct wl_list *message_list, struct
> > interface *interface)
> >                 printf(" */\n");
> >         }
> >         printf("struct %s_%s {\n", interface->name,
> > -              is_interface ? "interface" : "listener");
> > +              (side == SERVER) ? "interface" : "listener");
> >
> >         wl_list_for_each(m, message_list, link) {
> >                 struct description *mdesc = m->description;
> > @@ -886,7 +885,7 @@ emit_structs(struct wl_list *message_list, struct
> > interface *interface)
> >                           "\t * %s - ", m->name);
> >                 wl_list_for_each(a, &m->arg_list, link) {
> >
> > -                       if (is_interface && a->type == NEW_ID &&
> > +                       if (side == SERVER && a->type == NEW_ID &&
> >                             a->interface_name == NULL)
> >                                 printf("\t * @interface: name of the
> > objects interface\n"
> >                                        "\t * @version: version of the
> > objects interface\n");
> > @@ -906,7 +905,7 @@ emit_structs(struct wl_list *message_list, struct
> > interface *interface)
> >                 printf("\tvoid (*%s)(", m->name);
> >
> >                 n = strlen(m->name) + 17;
> > -               if (is_interface) {
> > +               if (side == SERVER) {
> >                         printf("struct wl_client *client,\n"
> >                                "%sstruct wl_resource *resource",
> >                                indent(n));
> > @@ -919,14 +918,14 @@ emit_structs(struct wl_list *message_list, struct
> > interface *interface)
> >                 wl_list_for_each(a, &m->arg_list, link) {
> >                         printf(",\n%s", indent(n));
> >
> > -                       if (is_interface && a->type == OBJECT)
> > +                       if (side == SERVER && a->type == OBJECT)
> >                                 printf("struct wl_resource *");
> > -                       else if (is_interface && a->type == NEW_ID &&
> > a->interface_name == NULL)
> > +                       else if (side == SERVER && a->type == NEW_ID &&
> > a->interface_name == NULL)
> >                                 printf("const char *interface, uint32_t
> > version, uint32_t ");
> > -                       else if (!is_interface && a->type == OBJECT &&
> > a->interface_name == NULL)
> > +                       else if (side == CLIENT && a->type == OBJECT &&
> > a->interface_name == NULL)
> >                                 printf("void *");
> >
> > -                       else if (!is_interface && a->type == NEW_ID)
> > +                       else if (side == CLIENT && a->type == NEW_ID)
> >                                 printf("struct %s *", a->interface_name);
> >                         else
> >                                 emit_type(a);
> > @@ -939,7 +938,7 @@ emit_structs(struct wl_list *message_list, struct
> > interface *interface)
> >
> >         printf("};\n\n");
> >
> > -       if (!is_interface) {
> > +       if (side == CLIENT) {
> >             printf("static inline int\n"
> >                    "%s_add_listener(struct %s *%s,\n"
> >                    "%sconst struct %s_listener *listener, void *data)\n"
> > @@ -1019,12 +1018,12 @@ emit_header(struct protocol *protocol, enum side
> > side)
> >                 emit_enumerations(i);
> >
> >                 if (side == SERVER) {
> > -                       emit_structs(&i->request_list, i);
> > +                       emit_structs(&i->request_list, i, side);
> >                         emit_opcodes(&i->event_list, i);
> >                         emit_opcode_versions(&i->event_list, i);
> >                         emit_event_wrappers(&i->event_list, i);
> >                 } else {
> > -                       emit_structs(&i->event_list, i);
> > +                       emit_structs(&i->event_list, i, side);
> >                         emit_opcodes(&i->request_list, i);
> >                         emit_stubs(&i->request_list, i);
> >                 }
> > --
> > 2.0.4
> >
> > _______________________________________________
> > wayland-devel mailing list
> > wayland-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> >
> 
> Regards,
> Marek



More information about the wayland-devel mailing list