mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-10-29 05:40:16 -04:00
scanner: warn on value 0 in bitfields
Sometimes they're used legitimately, but in some cases they're just nonsense. For the legitimate use cases, this adds an optional "valid-zero" attribute for bitfield entries, which can be used to suppress the warning.
This commit is contained in:
parent
90187031e6
commit
82c1730db1
3 changed files with 15 additions and 2 deletions
|
|
@ -24,6 +24,7 @@
|
|||
<!ATTLIST entry summary CDATA #IMPLIED>
|
||||
<!ATTLIST entry since CDATA #IMPLIED>
|
||||
<!ATTLIST entry deprecated-since CDATA #IMPLIED>
|
||||
<!ATTLIST entry valid-zero CDATA #IMPLIED>
|
||||
<!ELEMENT arg (description?)>
|
||||
<!ATTLIST arg name CDATA #REQUIRED>
|
||||
<!ATTLIST arg type CDATA #REQUIRED>
|
||||
|
|
|
|||
|
|
@ -1084,7 +1084,7 @@
|
|||
or drags initiated with other buttons than BTN_LEFT to specific
|
||||
actions (e.g. "ask").
|
||||
</description>
|
||||
<entry name="none" value="0" summary="no action"/>
|
||||
<entry name="none" value="0" summary="no action" valid-zero="true"/>
|
||||
<entry name="copy" value="1" summary="copy action"/>
|
||||
<entry name="move" value="2" summary="move action"/>
|
||||
<entry name="ask" value="4" summary="ask action"/>
|
||||
|
|
@ -1163,7 +1163,7 @@
|
|||
use this information to adapt its behavior, e.g. choose
|
||||
an appropriate cursor image.
|
||||
</description>
|
||||
<entry name="none" value="0" summary="no edge"/>
|
||||
<entry name="none" value="0" summary="no edge" valid-zero="true"/>
|
||||
<entry name="top" value="1" summary="top edge"/>
|
||||
<entry name="bottom" value="2" summary="bottom edge"/>
|
||||
<entry name="left" value="4" summary="left edge"/>
|
||||
|
|
|
|||
|
|
@ -737,6 +737,7 @@ start_element(void *data, const char *element_name, const char **atts)
|
|||
const char *enumeration_name = NULL;
|
||||
const char *bitfield = NULL;
|
||||
int i, version = 0;
|
||||
bool valid_zero = false;
|
||||
|
||||
ctx->loc.line_number = XML_GetCurrentLineNumber(ctx->parser);
|
||||
for (i = 0; atts[i]; i += 2) {
|
||||
|
|
@ -761,6 +762,14 @@ start_element(void *data, const char *element_name, const char **atts)
|
|||
deprecated_since = atts[i + 1];
|
||||
if (strcmp(atts[i], "allow-null") == 0)
|
||||
allow_null = atts[i + 1];
|
||||
if (strcmp(atts[i], "valid-zero") == 0) {
|
||||
if (strcmp(atts[i + 1], "true") == 0)
|
||||
valid_zero = true;
|
||||
else
|
||||
fail(&ctx->loc,
|
||||
"Invalid value for valid-zero: %s",
|
||||
atts[i + 1]);
|
||||
}
|
||||
if (strcmp(atts[i], "enum") == 0)
|
||||
enumeration_name = atts[i + 1];
|
||||
if (strcmp(atts[i], "bitfield") == 0)
|
||||
|
|
@ -914,6 +923,9 @@ start_element(void *data, const char *element_name, const char **atts)
|
|||
version, entry->since);
|
||||
entry->deprecated_since = version;
|
||||
|
||||
if (ctx->enumeration->bitfield && !valid_zero && strcmp(entry->value, "0") == 0)
|
||||
warn(&ctx->loc, "value 0 used in a bitfield entry");
|
||||
|
||||
if (summary)
|
||||
entry->summary = xstrdup(summary);
|
||||
else
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue