diff options
author | Alexander Larsson <alexl@redhat.com> | 2010-07-19 10:12:41 +0200 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2010-07-19 16:28:21 +0200 |
commit | 2962bdaea056d7069303badc3d73ed9530fdbb15 (patch) | |
tree | fb2331256b71cbee089c833ad4cd922ff567382f | |
parent | b8832e039153c5be516c6fc4fca5b0e11b8fc55f (diff) |
codegen: Pass member to SubMarshallingSource rather than name
This way we can check attributes on the member.
-rw-r--r-- | python_modules/marshal.py | 19 |
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: |