diff options
| author | Kristian Høgsberg <krh@bitplanet.net> | 2012-10-19 17:08:38 -0400 |
|---|---|---|
| committer | Kristian Høgsberg <krh@bitplanet.net> | 2012-10-19 17:08:38 -0400 |
| commit | bdd272f024744b4ed5ba6daedef7eb023bcac7cb (patch) | |
| tree | 61725e939ace9d69f52ddb6cc0f610e525a878b9 /src/scanner.c | |
| parent | configure: Depend on a more strict version of publican (diff) | |
| download | wayland-bdd272f024744b4ed5ba6daedef7eb023bcac7cb.tar wayland-bdd272f024744b4ed5ba6daedef7eb023bcac7cb.tar.gz wayland-bdd272f024744b4ed5ba6daedef7eb023bcac7cb.tar.bz2 wayland-bdd272f024744b4ed5ba6daedef7eb023bcac7cb.tar.lz wayland-bdd272f024744b4ed5ba6daedef7eb023bcac7cb.tar.xz wayland-bdd272f024744b4ed5ba6daedef7eb023bcac7cb.tar.zst wayland-bdd272f024744b4ed5ba6daedef7eb023bcac7cb.zip | |
Move ARRAY_LENGTH out of public headers
Exporting unprefixed symbols is a pretty bad idea so don't do that.
Instea of redefining it WL_ARRAY_LENGTH, we just move the define to
our private header. The scanner generates code that uses ARRAY_LENGTH,
but we can just make it count the number elements and emit an integer
constant instead.
Diffstat (limited to 'src/scanner.c')
| -rw-r--r-- | src/scanner.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/scanner.c b/src/scanner.c index 47c22cb..d0aafec 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -127,6 +127,18 @@ struct parse_context { unsigned int character_data_length; }; +static int +list_length(struct wl_list *list) +{ + struct wl_list *l; + int i; + + for (i = 0, l = list->next; l != list; i++, l = l->next) + ; + + return i; +} + static char * uppercase_dup(const char *src) { @@ -1106,14 +1118,14 @@ emit_code(struct protocol *protocol) i->name, i->name, i->version); if (!wl_list_empty(&i->request_list)) - printf("\tARRAY_LENGTH(%s_requests), %s_requests,\n", - i->name, i->name); + printf("\t%d, %s_requests,\n", + list_length(&i->request_list), i->name); else printf("\t0, NULL,\n"); if (!wl_list_empty(&i->event_list)) - printf("\tARRAY_LENGTH(%s_events), %s_events,\n", - i->name, i->name); + printf("\t%d, %s_events,\n", + list_length(&i->event_list), i->name); else printf("\t0, NULL,\n"); |
