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

Jasper St. Pierre jstpierre at mecheye.net
Fri Aug 8 15:22:48 PDT 2014


"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



More information about the wayland-devel mailing list