When doing type resolution on a string, treat it as its own ctype
authorColin Walters <walters@verbum.org>
Fri, 23 Oct 2009 03:53:37 +0000 (23:53 -0400)
committerColin Walters <walters@verbum.org>
Fri, 23 Oct 2009 03:53:37 +0000 (23:53 -0400)
Calling _resolve_param_type on a string instead of Node is fairly unusual,
and (as far as I could see) basically only happened in the Array processing
code.  We were passing None as the ctype in this case, but we might as well
try using the name as a ctype too.

This fixes using GCallback (and in general any item in an array that comes
from an included gir).

giscanner/transformer.py
tests/scanner/foo-1.0-expected.gir
tests/scanner/foo-1.0-expected.tgir
tests/scanner/foo.h

index bacdfab..86a2114 100644 (file)
@@ -667,7 +667,7 @@ class Transformer(object):
                                                      self.ctype_of(ptype),
                                                      names, **kwargs)
         elif isinstance(ptype, basestring):
-            return self.resolve_type_name_full(ptype, None, names, **kwargs)
+            return self.resolve_type_name_full(ptype, ptype, names, **kwargs)
         else:
             raise AssertionError("Unhandled param: %r" % (ptype, ))
         return ptype
index 5eae4cd..24e9fbb 100644 (file)
@@ -494,6 +494,11 @@ uses a C sugar return type.">
           </parameter>
         </parameters>
       </callback>
+      <field name="_reserved">
+        <array zero-terminated="0" c:type="GCallback" fixed-size="4">
+          <type name="GObject.Callback"/>
+        </array>
+      </field>
     </record>
     <constant name="PIE_IS_TASTY" value="3.14159">
       <type name="double"/>
index 81ebd02..2de826b 100644 (file)
       <field name="parent_class">
         <type name="GObject.ObjectClass"/>
       </field>
+      <field name="_reserved">
+        <array fixed-size="4">
+          <type name="GObject.Callback"/>
+        </array>
+      </field>
     </record>
     <constant name="PIE_IS_TASTY" value="3.141590">
       <type name="double"/>
index 2e018ce..7c2afe6 100644 (file)
@@ -87,6 +87,9 @@ struct _FooObjectClass
 
   /* Intended to match GFile */
   void (*read_fn) (FooObject *object, int offset, int length);
+  
+  /* Test reserved stuff */
+  GCallback _reserved[4];
 };
 
 gint                  foo_init                     (void);