diff options
| author | Simon Ser <contact@emersion.fr> | 2024-07-07 18:21:30 +0200 |
|---|---|---|
| committer | Simon Ser <contact@emersion.fr> | 2024-07-09 18:22:10 +0200 |
| commit | caaa308c0d4025928917115c98c75edf7c796cd4 (patch) | |
| tree | 6aecbec8b5b79926663d4b091c4ad5ddcf76a90f /src | |
| parent | build: re-open main branch for regular development (diff) | |
| download | wayland-caaa308c0d4025928917115c98c75edf7c796cd4.tar wayland-caaa308c0d4025928917115c98c75edf7c796cd4.tar.gz wayland-caaa308c0d4025928917115c98c75edf7c796cd4.tar.bz2 wayland-caaa308c0d4025928917115c98c75edf7c796cd4.tar.lz wayland-caaa308c0d4025928917115c98c75edf7c796cd4.tar.xz wayland-caaa308c0d4025928917115c98c75edf7c796cd4.tar.zst wayland-caaa308c0d4025928917115c98c75edf7c796cd4.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>
Diffstat (limited to 'src')
| -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); |
