[TYPEDEF] Fixes for function defs in typedefs and Support for typedef aaa *bbb
authorAlan Knowles <alan@akbkhome.com>
Sat, 3 Apr 2010 10:33:39 +0000 (18:33 +0800)
committerAlan Knowles <alan@akbkhome.com>
Sat, 3 Apr 2010 10:33:39 +0000 (18:33 +0800)
Found while parsing numerous libraries.

giscanner/transformer.py

index 6179c2b..1aa7568 100644 (file)
@@ -417,6 +417,8 @@ class Transformer(object):
         if (ctype == CTYPE_POINTER and
             symbol.base_type.base_type.type == CTYPE_FUNCTION):
             node = self._create_typedef_callback(symbol)
+        if (ctype ==  CTYPE_FUNCTION):
+            node = self._create_typedef_callback(symbol)
         elif (ctype == CTYPE_POINTER and
             symbol.base_type.base_type.type == CTYPE_STRUCT):
             node = self._create_typedef_struct(symbol, disguised=True)
@@ -433,6 +435,13 @@ class Transformer(object):
             name = self.remove_prefix(symbol.ident)
             if symbol.base_type.name:
                 target = self.remove_prefix(symbol.base_type.name)
+            elif (ctype == CTYPE_POINTER and
+                symbol.base_type.base_type.name):
+                target = self.remove_prefix(
+                    symbol.base_type.base_type.name) + '*'
+            elif (ctype == CTYPE_POINTER and
+                symbol.base_type.base_type.type == CTYPE_VOID):
+                target = 'any'
             else:
                 target = 'none'
             if name in type_names: