[TYPEDEF] more fixes from revert problems with git
[gnome.gobject-introspection] / giscanner / transformer.py
index 3094a71..6a2484f 100644 (file)
@@ -33,7 +33,7 @@ from .odict import odict
 from .sourcescanner import (
     SourceSymbol, ctype_name, CTYPE_POINTER,
     CTYPE_BASIC_TYPE, CTYPE_UNION, CTYPE_ARRAY, CTYPE_TYPEDEF,
-    CTYPE_VOID, CTYPE_ENUM, CTYPE_FUNCTION, CTYPE_STRUCT,
+    CTYPE_VOID, CTYPE_ENUM, CTYPE_FUNCTION, CTYPE_STRUCT, CTYPE_INVALID,
     CSYMBOL_TYPE_FUNCTION, CSYMBOL_TYPE_TYPEDEF, CSYMBOL_TYPE_STRUCT,
     CSYMBOL_TYPE_ENUM, CSYMBOL_TYPE_UNION, CSYMBOL_TYPE_OBJECT,
     CSYMBOL_TYPE_MEMBER, CSYMBOL_TYPE_ELLIPSIS, CSYMBOL_TYPE_CONST,
@@ -198,7 +198,7 @@ class Transformer(object):
 
         if (stripped and self._strip_suffix and 
             len(name) > len(self._strip_suffix) and
-            name.endswith(self._strip_suffix)
+            name.endswith(self._strip_suffix)):
             name = name[:-1*len(self._strip_suffix)]
             
         return name
@@ -350,12 +350,24 @@ class Transformer(object):
             value = 'void'
         elif source_type.type == CTYPE_BASIC_TYPE:
             value = source_type.name
+            # skip adding invalid types.
+            # share the const down the tree..
+            if not source_type.base_type:
+                return value
+            value_add = self._create_source_type(source_type.base_type)
+            if len(value_add):
+                value += ' ' + value_add
         elif source_type.type == CTYPE_TYPEDEF:
             value = source_type.name
         elif source_type.type == CTYPE_ARRAY:
             return self._create_source_type(source_type.base_type)
         elif source_type.type == CTYPE_POINTER:
             value = self._create_source_type(source_type.base_type) + '*'
+        elif source_type.type == CTYPE_STRUCT:
+            value = source_type.name
+        elif source_type.type == CTYPE_INVALID:
+            #this happens if const is after the type..
+            value = ''
         else:
             value = 'any'
         return value
@@ -417,8 +429,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)
+#        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)