summaryrefslogtreecommitdiffstats
path: root/python_modules/ptypes.py
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2010-07-01 17:55:33 +0200
committerAlexander Larsson <alexl@redhat.com>2010-07-07 23:58:33 +0200
commit5ac88aa79fa6445f96e5419d8bf4fce81da63b90 (patch)
treeae702a8569fda96e8bfe27c6b2655d90bcef7ce4 /python_modules/ptypes.py
parent26c1a0767f3fdcd0211b6b4c91a63ac9bc7abc6f (diff)
downloadspice-5ac88aa79fa6445f96e5419d8bf4fce81da63b90.tar.gz
spice-5ac88aa79fa6445f96e5419d8bf4fce81da63b90.tar.xz
spice-5ac88aa79fa6445f96e5419d8bf4fce81da63b90.zip
Properly parse QXLImage to the new-world SpiceImage
SpiceImage now replaces RedImage and has all image types in it. All image data are now chunked (and as such not copied when demarshalling).
Diffstat (limited to 'python_modules/ptypes.py')
-rw-r--r--python_modules/ptypes.py31
1 files changed, 24 insertions, 7 deletions
diff --git a/python_modules/ptypes.py b/python_modules/ptypes.py
index 68cf3dfe..715544fb 100644
--- a/python_modules/ptypes.py
+++ b/python_modules/ptypes.py
@@ -811,14 +811,31 @@ class ContainerType(Type):
return str(fixed)
def lookup_member(self, name):
+ dot = name.find('.')
+ rest = None
+ if dot >= 0:
+ rest = name[dot+1:]
+ name = name[:dot]
+
+ member = None
if self.members_by_name.has_key(name):
- return self.members_by_name[name]
- for m in self.members:
- if m.is_switch():
- member = m.lookup_case_member(name)
- if member:
- return member
- raise Exception, "No member called %s found" % name
+ member = self.members_by_name[name]
+ else:
+ for m in self.members:
+ if m.is_switch():
+ member = m.lookup_case_member(name)
+ if member != None:
+ break
+ if member != None:
+ break
+
+ if member == None:
+ raise Exception, "No member called %s found" % name
+
+ if rest != None:
+ return member.member_type.lookup_member(rest)
+
+ return member
class StructType(ContainerType):
def __init__(self, name, members, attribute_list):