diff options
| author | Simon Ser <contact@emersion.fr> | 2024-07-07 18:21:30 +0200 |
|---|---|---|
| committer | Simon Ser <contact@emersion.fr> | 2024-08-24 17:43:43 +0200 |
| commit | 2b8f9401ee105c21a86e3a0f15dd0d1659ea259d (patch) | |
| tree | 5c2ebf40a3fb87cc592ac681bd0b58c8e40d8a6e | |
| parent | build: bump to version 1.23.0 for the official release (diff) | |
| download | wayland-2b8f9401ee105c21a86e3a0f15dd0d1659ea259d.tar wayland-2b8f9401ee105c21a86e3a0f15dd0d1659ea259d.tar.gz wayland-2b8f9401ee105c21a86e3a0f15dd0d1659ea259d.tar.bz2 wayland-2b8f9401ee105c21a86e3a0f15dd0d1659ea259d.tar.lz wayland-2b8f9401ee105c21a86e3a0f15dd0d1659ea259d.tar.xz wayland-2b8f9401ee105c21a86e3a0f15dd0d1659ea259d.tar.zst wayland-2b8f9401ee105c21a86e3a0f15dd0d1659ea259d.zip | |
scanner: extract validator function emission to helper function
This function will grow in the next commit.
Signed-off-by: Simon Ser <contact@emersion.fr>
(cherry picked from commit caaa308c0d4025928917115c98c75edf7c796cd4)
| -rw-r--r-- | src/scanner.c | 59 |
1 files changed, 33 insertions, 26 deletions
diff --git a/src/scanner.c b/src/scanner.c index 9552451..a4f3cc9 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -1379,6 +1379,37 @@ emit_event_wrappers(struct wl_list *message_list, struct interface *interface) } static void +emit_validator(struct interface *interface, struct enumeration *e) +{ + struct entry *entry; + + printf("/**\n" + " * @ingroup iface_%s\n" + " * Validate a %s %s value.\n" + " *\n" + " * @return true on success, false on error.\n" + " * @ref %s_%s\n" + " */\n" + "static inline bool\n" + "%s_%s_is_valid(uint32_t value, uint32_t version) {\n" + " switch (value) {\n", + interface->name, interface->name, e->name, + interface->name, e->name, + interface->name, e->name); + wl_list_for_each(entry, &e->entry_list, link) { + printf(" case %s%s_%s_%s:\n" + " return version >= %d;\n", + entry->value[0] == '-' ? "(uint32_t)" : "", + interface->uppercase_name, e->uppercase_name, + entry->uppercase_name, entry->since); + } + printf(" default:\n" + " return false;\n" + " }\n" + "}\n"); +} + +static void emit_enumerations(struct interface *interface, bool with_validators) { struct enumeration *e; @@ -1439,32 +1470,8 @@ emit_enumerations(struct interface *interface, bool with_validators) } - if (with_validators) { - printf("/**\n" - " * @ingroup iface_%s\n" - " * Validate a %s %s value.\n" - " *\n" - " * @return true on success, false on error.\n" - " * @ref %s_%s\n" - " */\n" - "static inline bool\n" - "%s_%s_is_valid(uint32_t value, uint32_t version) {\n" - " switch (value) {\n", - interface->name, interface->name, e->name, - interface->name, e->name, - interface->name, e->name); - wl_list_for_each(entry, &e->entry_list, link) { - printf(" case %s%s_%s_%s:\n" - " return version >= %d;\n", - entry->value[0] == '-' ? "(uint32_t)" : "", - interface->uppercase_name, e->uppercase_name, - entry->uppercase_name, entry->since); - } - printf(" default:\n" - " return false;\n" - " }\n" - "}\n"); - } + if (with_validators) + emit_validator(interface, e); printf("#endif /* %s_%s_ENUM */\n\n", interface->uppercase_name, e->uppercase_name); |
