mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice-protocol
synced 2025-12-26 22:55:30 +00:00
marshaller: Make @nonnull a propagated attribute
This cleans up some stuff
This commit is contained in:
parent
f22381505d
commit
32481bf381
@ -82,7 +82,6 @@ class ItemInfo:
|
||||
self.prefix = prefix
|
||||
self.subprefix = prefix
|
||||
self.position = position
|
||||
self.non_null = False
|
||||
self.member = None
|
||||
|
||||
def nw_size(self):
|
||||
@ -103,7 +102,6 @@ class MemberItemInfo(ItemInfo):
|
||||
self.type = member.member_type
|
||||
self.prefix = member.name
|
||||
self.subprefix = member.name
|
||||
self.non_null = member.has_attr("nonnull")
|
||||
self.position = "(%s + %s)" % (start, container.get_nw_offset(member, "", "__nw_size"))
|
||||
self.member = member
|
||||
|
||||
@ -123,7 +121,6 @@ def write_validate_switch_member(writer, container, switch_member, scope, parent
|
||||
with writer.if_block(check, not first, False) as if_scope:
|
||||
item.type = c.member.member_type
|
||||
item.subprefix = item.prefix + "_" + m.name
|
||||
item.non_null = c.member.has_attr("nonnull")
|
||||
sub_want_extra_size = want_extra_size
|
||||
if sub_want_extra_size and not m.contains_extra_size() and not m.is_extra_size():
|
||||
writer.assign(item.extra_size(), 0)
|
||||
@ -192,7 +189,7 @@ def write_validate_pointer_item(writer, container, item, scope, parent_scope, st
|
||||
target_type = item.type.target_type
|
||||
|
||||
v = write_read_primitive_item(writer, item, scope)
|
||||
if item.non_null:
|
||||
if item.type.has_attr("nonnull"):
|
||||
writer.error_check("%s == 0" % v)
|
||||
|
||||
# pointer target is struct, or array of primitives
|
||||
|
||||
@ -235,7 +235,7 @@ def write_pointer_marshaller(writer, member, src):
|
||||
submarshaller = "spice_marshaller_get_ptr_submarshaller(m, %d)" % (1 if member.get_fixed_nw_size() == 8 else 0)
|
||||
if member.has_attr("marshall"):
|
||||
writer.assign("m2", submarshaller)
|
||||
if member.has_attr("nonnull"):
|
||||
if t.has_attr("nonnull"):
|
||||
writer.statement("%s(m2, %s)" % (ptr_func, src.get_ref(member.name)))
|
||||
else:
|
||||
with writer.if_block("%s != NULL" % src.get_ref(member.name)) as block:
|
||||
|
||||
@ -60,7 +60,7 @@ class FixedSize:
|
||||
# only to attributes that affect pointer or array attributes, as these
|
||||
# are member local types, unlike e.g. a Struct that may be used by
|
||||
# other members
|
||||
propagated_attributes=["ptr_array", "c_ptr"]
|
||||
propagated_attributes=["ptr_array", "c_ptr", "nonnull"]
|
||||
|
||||
class Type:
|
||||
def __init__(self):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user