seed r770 - trunk/libseed



Author: racarr
Date: Mon Jan 19 16:43:04 2009
New Revision: 770
URL: http://svn.gnome.org/viewvc/seed?rev=770&view=rev

Log:
Add support for UINT8 arrays

Modified:
   trunk/libseed/seed-types.c

Modified: trunk/libseed/seed-types.c
==============================================================================
--- trunk/libseed/seed-types.c	(original)
+++ trunk/libseed/seed-types.c	Mon Jan 19 16:43:04 2009
@@ -128,6 +128,7 @@
 				break;
 			case GI_TYPE_TAG_GTYPE:
 			case GI_TYPE_TAG_FLOAT:
+			case GI_TYPE_TAG_UINT8:
 				g_free(arg->v_pointer);
 				break;
 			default:
@@ -271,7 +272,9 @@
 
 	element_type = g_type_info_get_tag(param_type);
 
-	if (element_type == GI_TYPE_TAG_UTF8)
+	switch (element_type)
+	{
+	case GI_TYPE_TAG_UTF8:
 	{
 		char **result;
 		guint i;
@@ -289,7 +292,8 @@
 
 		*array_p = result;
 	}
-	else if (element_type == GI_TYPE_TAG_GTYPE)
+	break;
+	case GI_TYPE_TAG_GTYPE:
 	{
 		GType *result;
 		guint i;
@@ -307,7 +311,8 @@
 
 		*array_p = result;
 	}
-	else if (element_type == GI_TYPE_TAG_FLOAT)
+	break;
+	case GI_TYPE_TAG_FLOAT:
 	{
 		gfloat * result;
 		guint i;
@@ -325,8 +330,27 @@
 		
 		*array_p = result;
 	}
-	else
+	break;
+	case GI_TYPE_TAG_UINT8:
 	{
+		guint8 * result;
+		guint i;
+		
+		result = g_new0(guint8, length+1);
+		
+		for (i = 0; i < length; i++)
+		{
+			JSValueRef elem = JSObjectGetPropertyAtIndex(ctx,
+														 (JSObjectRef) array,
+														 i,
+														 exception);
+			result[i] = seed_value_to_uchar(ctx, elem, exception);
+		}
+		
+		*array_p = result;
+	}
+	break;
+	default:
 		seed_make_exception(ctx, exception, "ArgumentError",
 							"Unhandled array element type");
 		return FALSE;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]