[gobject-introspection] scanner: Add simplified parsing for nested structs



commit dae7e628d5da911c5a427309c935f64747dfa516
Author: Simon Feltman <sfeltman src gnome org>
Date:   Fri Jan 3 11:08:31 2014 -0800

    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 files changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/giscanner/transformer.py b/giscanner/transformer.py
index 0012806..d2631b2 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)
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]