summaryrefslogtreecommitdiff
path: root/python_modules
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2010-07-19 10:12:41 +0200
committerMarc-André Lureau <marcandre.lureau@gmail.com>2012-03-20 15:25:48 +0100
commitbfffc11787124bd85a363e7e5a5fd561ae6f2f7b (patch)
tree84366cae89869c62f6549d9c722b4ec0af885c54 /python_modules
parentbe1c38df3e1228fc05b57da0692e9188e99713e3 (diff)
codegen: Pass member to SubMarshallingSource rather than name
This way we can check attributes on the member.
Diffstat (limited to 'python_modules')
-rw-r--r--python_modules/marshal.py19
1 files changed, 10 insertions, 9 deletions
diff --git a/python_modules/marshal.py b/python_modules/marshal.py
index df0c3b3..6b2d428 100644
--- a/python_modules/marshal.py
+++ b/python_modules/marshal.py
@@ -29,8 +29,8 @@ class MarshallingSource:
def child_at_end(self, t):
return RootMarshallingSource(self, t.c_type(), t.sizeof())
- def child_sub(self, member):
- return SubMarshallingSource(self, member)
+ def child_sub(self, containee):
+ return SubMarshallingSource(self, containee)
def declare(self, writer):
return writer.optional_block(self.reuse_scope)
@@ -84,18 +84,19 @@ class RootMarshallingSource(MarshallingSource):
return writer.partial_block(scope)
class SubMarshallingSource(MarshallingSource):
- def __init__(self, parent_src, member):
+ def __init__(self, parent_src, containee):
self.reuse_scope = None
self.parent_src = parent_src
self.base_var = parent_src.base_var
- self.member = member
+ self.containee = containee
+ self.name = containee.name
self.is_helper = False
def get_self_ref(self):
- return "&%s" % self.parent_src.get_ref(self.member)
+ return "&%s" % self.parent_src.get_ref(self.name)
def get_ref(self, member):
- return self.parent_src.get_ref(self.member) + "." + member
+ return self.parent_src.get_ref(self.name) + "." + member
def write_marshal_ptr_function(writer, target_type):
if target_type.is_array():
@@ -263,9 +264,9 @@ def write_switch_marshaller(writer, container, switch, src, scope):
src2 = src
else:
if t.is_struct():
- src2 = src.child_sub(switch.name + "." + m.name)
+ src2 = src.child_sub(switch).child_sub(m)
else:
- src2 = src.child_sub(switch.name)
+ src2 = src.child_sub(switch)
src2.reuse_scope = block
if t.is_struct():
@@ -331,7 +332,7 @@ def write_member_marshaller(writer, container, member, src, scope):
if member.has_end_attr():
src2 = src.child_at_end(t)
else:
- src2 = src.child_sub(member.name)
+ src2 = src.child_sub(member)
writer.comment(member.name)
write_container_marshaller(writer, t, src2)
else: