Fix Bug #610793 - support for array of GTypes
authoralan <alan@alanfast.akbkhome.com>
Wed, 24 Feb 2010 03:35:00 +0000 (11:35 +0800)
committeralan <alan@alanfast.akbkhome.com>
Wed, 24 Feb 2010 03:35:00 +0000 (11:35 +0800)
used by g_type_get_interfaces - which returns an array of Gtypes

libseed/seed-types.c

index be763f2..e4316bd 100644 (file)
@@ -282,6 +282,21 @@ seed_gi_make_jsarray (JSContextRef ctx,
       ret = (JSValueRef) JSObjectMakeArray (ctx, length, elements, exception);
     }
 
+  if (element_type == GI_TYPE_TAG_GTYPE)
+    {
+      GType* ptr = (GType*)array;
+      length = 0;
+      while (ptr[length])  length++;
+    
+      elements = g_alloca (sizeof (JSValueRef) * length);
+
+      for (i = 0; i < length; ++i)
+          elements[i] = seed_value_from_int (ctx, ptr[i], exception);
+        
+      return (JSValueRef) JSObjectMakeArray (ctx, length, elements, exception);
+
+    }
+
   return ret;
 }