mirror of
https://gitlab.freedesktop.org/libinput/libei.git
synced 2026-01-06 18:50:12 +01:00
scanner: add enum verification checks
This commit is contained in:
parent
8d2da0d857
commit
91ec792d74
1 changed files with 11 additions and 4 deletions
|
|
@ -70,6 +70,7 @@ class Argument:
|
|||
name: str = attr.ib()
|
||||
signature: str = attr.ib(converter=proto_to_type)
|
||||
summary: str = attr.ib()
|
||||
enum: Optional["Enum"] = attr.ib()
|
||||
|
||||
@property
|
||||
def as_arg(self) -> str:
|
||||
|
|
@ -105,9 +106,10 @@ class Argument:
|
|||
assert value in types, f"Failed to parse signature {value}"
|
||||
|
||||
@classmethod
|
||||
def create(cls, name: str, signature: str, summary: str = "") -> "Argument":
|
||||
# FIXME: enum value checks
|
||||
return cls(name, signature, summary)
|
||||
def create(
|
||||
cls, name: str, signature: str, summary: str = "", enum: Optional["Enum"] = None
|
||||
) -> "Argument":
|
||||
return cls(name, signature, summary, enum)
|
||||
|
||||
|
||||
@attr.s
|
||||
|
|
@ -313,7 +315,12 @@ class Protocol(xml.sax.handler.ContentHandler):
|
|||
name = attrs["name"]
|
||||
sig = attrs["type"]
|
||||
summary = attrs.get("summary", "")
|
||||
arg = Argument.create(name=name, signature=sig, summary=summary)
|
||||
enum = attrs.get("enum", None)
|
||||
if enum is not None:
|
||||
assert enum in [
|
||||
e.name for e in self.current_interface.enums
|
||||
], f"Failed to find enum '{self.current_interface.name}.{enum}'"
|
||||
arg = Argument.create(name=name, signature=sig, summary=summary, enum=enum)
|
||||
self.current_message.add_argument(arg)
|
||||
elif element == "entry":
|
||||
assert self.current_interface is not None
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue