mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice-protocol
synced 2025-12-26 22:55:30 +00:00
marshaller: Correctly determine if switches are fixed size
Switches are fixed size only if all cases have the same size *and* it has a default case or all the valid cases are listed.
This commit is contained in:
parent
32dbd8a6a5
commit
db5b8fa673
@ -630,14 +630,22 @@ class Switch(Containee):
|
||||
return True
|
||||
|
||||
size = None
|
||||
has_default = False
|
||||
for c in self.cases:
|
||||
for v in c.values:
|
||||
if v == None:
|
||||
has_default = True
|
||||
if not c.member.is_fixed_nw_size():
|
||||
return False
|
||||
if size == None:
|
||||
size = c.member.get_fixed_nw_size()
|
||||
elif size != c.member.get_fixed_nw_size():
|
||||
return False
|
||||
return True
|
||||
# Fixed size if all elements listed, or has default
|
||||
if has_default:
|
||||
return True
|
||||
key = self.container.lookup_member(self.variable)
|
||||
return len(self.cases) == len(key.member_type.values)
|
||||
|
||||
def is_extra_size(self):
|
||||
return self.has_end_attr()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user