summaryrefslogtreecommitdiffstats
path: root/python_modules/ptypes.py
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2010-06-30 22:19:12 +0200
committerAlexander Larsson <alexl@redhat.com>2010-07-02 16:47:51 +0200
commit3764a3647224a5e9dde021828d3b17fe5fc9fdeb (patch)
tree7ed113c9743447bcd43d03bc2df388f4864ef996 /python_modules/ptypes.py
parent7e0099e18e98452d909d76997258ed0f44cf9a19 (diff)
downloadspice-3764a3647224a5e9dde021828d3b17fe5fc9fdeb.tar.gz
spice-3764a3647224a5e9dde021828d3b17fe5fc9fdeb.tar.xz
spice-3764a3647224a5e9dde021828d3b17fe5fc9fdeb.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 b7bcac94..055034eb 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"):