Add support for @virtual markup in spice protocol

This means the member is not sent on the network at all.
Instead its initialized to the attribute argument when demarshalled.

This is useful for backwards compatibility support.
This commit is contained in:
Alexander Larsson 2010-06-22 16:03:34 +02:00 committed by Marc-André Lureau
parent 9f3a36f3f9
commit ee944c8314
3 changed files with 14 additions and 0 deletions

View File

@ -400,6 +400,9 @@ def write_validate_item(writer, container, item, scope, parent_scope, start,
def write_validate_member(writer, container, member, parent_scope, start,
want_nw_size, want_mem_size, want_extra_size):
if member.has_attr("virtual"):
return
if member.has_minor_attr():
prefix = "if (minor >= %s)" % (member.get_minor_attr())
newline = False
@ -740,6 +743,10 @@ def write_parse_pointer(writer, t, at_end, dest, member_name, is_64bit, scope):
writer.statement("n_ptr++")
def write_member_parser(writer, container, member, dest, scope):
if member.has_attr("virtual"):
writer.assign(dest.get_ref(member.name), member.attributes["virtual"][0])
return
if member.is_switch():
write_switch_parser(writer, container, member, dest, scope)
return

View File

@ -266,6 +266,9 @@ def write_switch_marshaller(writer, container, switch, src, scope):
def write_member_marshaller(writer, container, member, src, scope):
if member.has_attr("outvar"):
writer.out_prefix = "%s_%s" % (member.attributes["outvar"][0], writer.out_prefix)
if member.has_attr("virtual"):
writer.comment("Don't marshall @virtual %s" % member.name).newline()
return
if member.has_attr("nomarshal"):
writer.comment("Don't marshall @nomarshal %s" % member.name).newline()
return

View File

@ -518,9 +518,13 @@ class Member(Containee):
return self.has_end_attr()
def is_fixed_nw_size(self):
if self.has_attr("virtual"):
return True
return self.member_type.is_fixed_nw_size()
def get_fixed_nw_size(self):
if self.has_attr("virtual"):
return 0
size = self.member_type.get_fixed_nw_size()
if self.has_minor_attr():
minor = self.get_minor_attr()