summaryrefslogtreecommitdiffstats
path: root/python_modules/ptypes.py
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2010-06-30 22:19:12 +0200
committerMarc-André Lureau <marcandre.lureau@gmail.com>2012-03-20 15:25:46 +0100
commit6228ae633e58f484f0da5cc20dcfbf42ead4859b (patch)
treed640e227be1e83be7ce3538ed3b3ea640940fb1a /python_modules/ptypes.py
parent8ec1247dbe40ca7d0678e95c45f0d3a7b8908b77 (diff)
downloadspice-protocol-6228ae633e58f484f0da5cc20dcfbf42ead4859b.tar.gz
spice-protocol-6228ae633e58f484f0da5cc20dcfbf42ead4859b.tar.xz
spice-protocol-6228ae633e58f484f0da5cc20dcfbf42ead4859b.zip
Properly parse and marshall SpiceString
Diffstat (limited to 'python_modules/ptypes.py')
-rw-r--r--python_modules/ptypes.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/python_modules/ptypes.py b/python_modules/ptypes.py
index b7bcac9..055034e 100644
--- a/python_modules/ptypes.py
+++ b/python_modules/ptypes.py
@@ -353,6 +353,7 @@ class ArrayType(Type):
self.element_type = element_type
self.size = size
+ self.ptr_array = False
def __str__(self):
if self.size == None:
@@ -414,6 +415,9 @@ class ArrayType(Type):
return []
raise Exception, "Pointer names in arrays not supported"
+ def is_extra_size(self):
+ return self.ptr_array
+
def contains_extra_size(self):
return self.element_type.contains_extra_size()
@@ -512,6 +516,8 @@ class Member(Containee):
self.member_type.register()
if self.has_attr("ptr32") and self.member_type.is_pointer():
self.member_type.set_ptr_size(4)
+ if self.has_attr("ptr_array") and self.member_type.is_array():
+ self.member_type.ptr_array = True
return self
def is_primitive(self):
@@ -523,7 +529,7 @@ class Member(Containee):
return self.member_type.is_fixed_sizeof()
def is_extra_size(self):
- return self.has_end_attr()
+ return self.has_end_attr() or self.member_type.is_extra_size()
def is_fixed_nw_size(self):
if self.has_attr("virtual"):