summaryrefslogtreecommitdiffstats
path: root/python_modules
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2010-06-23 13:37:25 +0200
committerAlexander Larsson <alexl@redhat.com>2010-06-23 16:33:07 +0200
commit06fe6a91c2e5eb91ae97b4f3b09c02aa07953768 (patch)
tree3e4c9a6533a91323da1d1986e865b848cac4996d /python_modules
parent10c16b3c82f179e05360d38c29431115895dcba5 (diff)
downloadspice-06fe6a91c2e5eb91ae97b4f3b09c02aa07953768.tar.gz
spice-06fe6a91c2e5eb91ae97b4f3b09c02aa07953768.tar.xz
spice-06fe6a91c2e5eb91ae97b4f3b09c02aa07953768.zip
Fix handling of @ptr32 network size
Diffstat (limited to 'python_modules')
-rw-r--r--python_modules/ptypes.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/python_modules/ptypes.py b/python_modules/ptypes.py
index 101538ca..9141539c 100644
--- a/python_modules/ptypes.py
+++ b/python_modules/ptypes.py
@@ -426,6 +426,7 @@ class PointerType(Type):
Type.__init__(self)
self.name = None
self.target_type = target_type
+ self.pointer_size = 8
def __str__(self):
return "%s*" % (str(self.target_type))
@@ -434,8 +435,8 @@ class PointerType(Type):
self.target_type = self.target_type.resolve()
return self
- def get_fixed_size(self):
- return 8 # offsets are 64bit
+ def set_ptr_size(self, new_size):
+ self.pointer_size = new_size
def is_fixed_nw_size(self):
return True
@@ -444,10 +445,13 @@ class PointerType(Type):
return True
def primitive_type(self):
- return "uint64"
+ if self.pointer_size == 4:
+ return "uint32"
+ else:
+ return "uint64"
def get_fixed_nw_size(self):
- return 8
+ return self.pointer_size
def c_type(self):
return "SPICE_ADDRESS"
@@ -504,6 +508,8 @@ class Member(Containee):
self.container = container
self.member_type = self.member_type.resolve()
self.member_type.register()
+ if self.has_attr("ptr32") and self.member_type.is_pointer():
+ self.member_type.set_ptr_size(4)
return self
def is_primitive(self):