[g-ir-generate] Write out array type
authorJohan Dahlin <johan@gnome.org>
Thu, 27 May 2010 03:17:56 +0000 (00:17 -0300)
committerJohan Dahlin <johan@gnome.org>
Thu, 27 May 2010 03:17:56 +0000 (00:17 -0300)
For GLib arrays, write out the array type to the tgir

tests/scanner/annotation-1.0-expected.tgir
tests/scanner/foo-1.0-expected.tgir
tools/generate.c

index aafd070..94e8e85 100644 (file)
       </return-value>
       <parameters>
         <parameter name="array" transfer-ownership="none">
-          <array>
+          <array name="GLib.PtrArray">
             <type name="GLib.Value"/>
           </array>
         </parameter>
index c0bedbe..d46a318 100644 (file)
     </function>
     <function name="test_array" c:identifier="foo_test_array">
       <return-value transfer-ownership="container">
-        <array>
+        <array name="GLib.Array">
           <type name="utf8"/>
         </array>
       </return-value>
index 42772da..3923596 100644 (file)
@@ -221,9 +221,29 @@ write_type_info (const gchar *namespace,
   else if (tag == GI_TYPE_TAG_ARRAY)
     {
       gint length, size;
+      char *name = NULL;
 
       xml_start_element (file, "array");
 
+      switch (g_type_info_get_array_type (info)) {
+        case GI_ARRAY_TYPE_C:
+            break;
+        case GI_ARRAY_TYPE_ARRAY:
+            name = "GLib.Array";
+            break;
+        case GI_ARRAY_TYPE_PTR_ARRAY:
+            name = "GLib.PtrArray";
+            break;
+        case GI_ARRAY_TYPE_BYTE_ARRAY:
+            name = "GLib.ByteArray";
+            break;
+        default:
+            break;
+      }
+
+      if (name)
+        xml_printf (file, " name=\"%s\"", name);
+
       type = g_type_info_get_param_type (info, 0);
 
       length = g_type_info_get_array_length (info);