summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2014-08-08 18:22:48 -0400
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>2014-08-18 11:31:48 +0300
commitedddb0f58ebe14a3cff93d85919af671f17612b4 (patch)
tree8514d3f7fdbce5ba53d523886897cda8f1549b70
parenteb223cc2f606f4a8641efbd0ef0d0af223dc9216 (diff)
scanner: Make emit_structs more explicit
"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. Reviewed-by: Marek Chalupa <mchqwerty@gmail.com> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-rw-r--r--src/scanner.c25
1 files 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);
}