From dae7e628d5da911c5a427309c935f64747dfa516 Mon Sep 17 00:00:00 2001 From: Simon Feltman Date: Fri, 3 Jan 2014 11:08:31 -0800 Subject: scanner: Add simplified parsing for nested structs Add _create_member_struct for the parsing of nested structs. This is precursory work to remove the member/anonymous flag from other struct/union creation code and allow simplification of those code paths. https://bugzilla.gnome.org/show_bug.cgi?id=581525 --- giscanner/transformer.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/giscanner/transformer.py b/giscanner/transformer.py index 00128064..d2631b28 100644 --- a/giscanner/transformer.py +++ b/giscanner/transformer.py @@ -531,7 +531,7 @@ raise ValueError.""" and symbol.base_type.base_type.type == CTYPE_FUNCTION): node = self._create_callback(symbol, member=True) elif source_type.type == CTYPE_STRUCT and source_type.name is None: - node = self._create_struct(symbol, anonymous=True) + node = self._create_member_struct(symbol) elif source_type.type == CTYPE_UNION and source_type.name is None: node = self._create_union(symbol, anonymous=True) else: @@ -844,6 +844,12 @@ raise ValueError.""" struct.add_symbol_reference(symbol) return struct + def _create_member_struct(self, symbol): + struct = ast.Record(symbol.ident, symbol.ident) + self._parse_fields(symbol, struct) + struct.add_symbol_reference(symbol) + return struct + def _create_typedef_union(self, symbol): try: name = self.strip_identifier(symbol.ident) @@ -904,9 +910,6 @@ raise ValueError.""" compound.add_symbol_reference(symbol) return compound - def _create_struct(self, symbol, anonymous=False): - return self._create_compound(ast.Record, symbol, anonymous) - def _create_union(self, symbol, anonymous=False): return self._create_compound(ast.Union, symbol, anonymous) -- cgit v1.2.1