[gobject-introspection] [gifieldinfo] Document, indent and check params



commit 77575989154b89b5bbc2ccf550aaebbf9b4e8a4e
Author: Johan Dahlin <johan gnome org>
Date:   Sun Jun 6 13:35:14 2010 -0300

    [gifieldinfo] Document, indent and check params
    
    Document the remaining functions, indent to match coding style
    and check so that all info params are set and of the right type.

 girepository/gifieldinfo.c |  741 +++++++++++++++++++++++--------------------
 1 files changed, 396 insertions(+), 345 deletions(-)
---
diff --git a/girepository/gifieldinfo.c b/girepository/gifieldinfo.c
index d6f2da9..878f411 100644
--- a/girepository/gifieldinfo.c
+++ b/girepository/gifieldinfo.c
@@ -43,9 +43,13 @@ GIFieldInfoFlags
 g_field_info_get_flags (GIFieldInfo *info)
 {
   GIFieldInfoFlags flags;
-
   GIRealInfo *rinfo = (GIRealInfo *)info;
-  FieldBlob *blob = (FieldBlob *)&rinfo->typelib->data[rinfo->offset];
+  FieldBlob *blob;
+
+  g_return_val_if_fail (info != NULL, 0);
+  g_return_val_if_fail (GI_IS_FIELD_INFO (info), 0);
+
+  blob = (FieldBlob *)&rinfo->typelib->data[rinfo->offset];
 
   flags = 0;
 
@@ -58,32 +62,73 @@ g_field_info_get_flags (GIFieldInfo *info)
   return flags;
 }
 
+/**
+ * g_field_info_get_size:
+ * @info: a #GIFieldInfo
+ *
+ * Obtain the size in bits of the field member, this is how
+ * much space you need to allocate to store the field.
+ *
+ * Returns: the field size
+ */
 gint
 g_field_info_get_size (GIFieldInfo *info)
 {
   GIRealInfo *rinfo = (GIRealInfo *)info;
-  FieldBlob *blob = (FieldBlob *)&rinfo->typelib->data[rinfo->offset];
+  FieldBlob *blob;
+
+  g_return_val_if_fail (info != NULL, 0);
+  g_return_val_if_fail (GI_IS_FIELD_INFO (info), 0);
+
+  blob = (FieldBlob *)&rinfo->typelib->data[rinfo->offset];
 
   return blob->bits;
 }
 
+/**
+ * g_field_info_get_offset:
+ * @info: a #GIFieldInfo
+ *
+ * Obtain the offset in bits of the field member, this is relative
+ * to the beginning of the struct or union.
+ *
+ * Returns: the field offset
+ */
 gint
 g_field_info_get_offset (GIFieldInfo *info)
 {
   GIRealInfo *rinfo = (GIRealInfo *)info;
-  FieldBlob *blob = (FieldBlob *)&rinfo->typelib->data[rinfo->offset];
+  FieldBlob *blob;
+
+  g_return_val_if_fail (info != NULL, 0);
+  g_return_val_if_fail (GI_IS_FIELD_INFO (info), 0);
+
+  blob = (FieldBlob *)&rinfo->typelib->data[rinfo->offset];
 
   return blob->struct_offset;
 }
 
+/**
+ * g_field_info_get_type:
+ *
+ * Obtain the type of a field as a #GITypeInfo.
+ *
+ * Returns: (transfer full): the #GITypeInfo. Free the struct by calling
+ * g_base_info_unref() when done.
+ */
 GITypeInfo *
 g_field_info_get_type (GIFieldInfo *info)
 {
   GIRealInfo *rinfo = (GIRealInfo *)info;
   Header *header = (Header *)rinfo->typelib->data;
-  FieldBlob *blob = (FieldBlob *)&rinfo->typelib->data[rinfo->offset];
+  FieldBlob *blob;
   GIRealInfo *type_info;
 
+  g_return_val_if_fail (info != NULL, NULL);
+  g_return_val_if_fail (GI_IS_FIELD_INFO (info), NULL);
+
+  blob = (FieldBlob *)&rinfo->typelib->data[rinfo->offset];
+
   if (blob->has_embedded_type)
     {
       type_info = (GIRealInfo *) g_info_new (GI_INFO_TYPE_TYPE,
@@ -115,195 +160,198 @@ g_field_info_get_field (GIFieldInfo *field_info,
 			gpointer     mem,
 			GArgument   *value)
 {
-    int offset;
-    GITypeInfo *type_info;
-    gboolean result = FALSE;
-
-    if ((g_field_info_get_flags (field_info) & GI_FIELD_IS_READABLE) == 0)
-      return FALSE;
-
-    offset = g_field_info_get_offset (field_info);
-    type_info = g_field_info_get_type (field_info);
-
-    if (g_type_info_is_pointer (type_info))
-      {
-	value->v_pointer = G_STRUCT_MEMBER(gpointer, mem, offset);
-	result = TRUE;
-      }
-    else
-      {
-	switch (g_type_info_get_tag (type_info))
-	  {
-	  case GI_TYPE_TAG_VOID:
-	    g_warning("Field %s: should not be have void type",
-		      g_base_info_get_name ((GIBaseInfo *)field_info));
-	    break;
-	  case GI_TYPE_TAG_BOOLEAN:
-	    value->v_boolean = G_STRUCT_MEMBER(gboolean, mem, offset) != FALSE;
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_INT8:
-	  case GI_TYPE_TAG_UINT8:
-	    value->v_uint8 = G_STRUCT_MEMBER(guint8, mem, offset);
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_INT16:
-	  case GI_TYPE_TAG_UINT16:
-	  case GI_TYPE_TAG_SHORT:
-	  case GI_TYPE_TAG_USHORT:
-	    value->v_uint16 = G_STRUCT_MEMBER(guint16, mem, offset);
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_INT32:
-	  case GI_TYPE_TAG_UINT32:
-	  case GI_TYPE_TAG_INT:
-	  case GI_TYPE_TAG_UINT:
-	    value->v_uint32 = G_STRUCT_MEMBER(guint32, mem, offset);
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_INT64:
-	  case GI_TYPE_TAG_UINT64:
-	    value->v_uint64 = G_STRUCT_MEMBER(guint64, mem, offset);
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_LONG:
-	  case GI_TYPE_TAG_ULONG:
-	    value->v_ulong = G_STRUCT_MEMBER(gulong, mem, offset);
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_SSIZE:
-	  case GI_TYPE_TAG_SIZE:
-	  case GI_TYPE_TAG_GTYPE:
-	    value->v_size = G_STRUCT_MEMBER(gsize, mem, offset);
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_FLOAT:
-	    value->v_float = G_STRUCT_MEMBER(gfloat, mem, offset);
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_DOUBLE:
-	    value->v_double = G_STRUCT_MEMBER(gdouble, mem, offset);
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_TIME_T:
+  int offset;
+  GITypeInfo *type_info;
+  gboolean result = FALSE;
+
+  g_return_val_if_fail (field_info != NULL, FALSE);
+  g_return_val_if_fail (GI_IS_FIELD_INFO (field_info), FALSE);
+
+  if ((g_field_info_get_flags (field_info) & GI_FIELD_IS_READABLE) == 0)
+    return FALSE;
+
+  offset = g_field_info_get_offset (field_info);
+  type_info = g_field_info_get_type (field_info);
+
+  if (g_type_info_is_pointer (type_info))
+    {
+      value->v_pointer = G_STRUCT_MEMBER (gpointer, mem, offset);
+      result = TRUE;
+    }
+  else
+    {
+      switch (g_type_info_get_tag (type_info))
+	{
+	case GI_TYPE_TAG_VOID:
+	  g_warning("Field %s: should not be have void type",
+		    g_base_info_get_name ((GIBaseInfo *)field_info));
+	  break;
+	case GI_TYPE_TAG_BOOLEAN:
+	  value->v_boolean = G_STRUCT_MEMBER (gboolean, mem, offset) != FALSE;
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_INT8:
+	case GI_TYPE_TAG_UINT8:
+	  value->v_uint8 = G_STRUCT_MEMBER (guint8, mem, offset);
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_INT16:
+	case GI_TYPE_TAG_UINT16:
+	case GI_TYPE_TAG_SHORT:
+	case GI_TYPE_TAG_USHORT:
+	  value->v_uint16 = G_STRUCT_MEMBER (guint16, mem, offset);
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_INT32:
+	case GI_TYPE_TAG_UINT32:
+	case GI_TYPE_TAG_INT:
+	case GI_TYPE_TAG_UINT:
+	  value->v_uint32 = G_STRUCT_MEMBER (guint32, mem, offset);
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_INT64:
+	case GI_TYPE_TAG_UINT64:
+	  value->v_uint64 = G_STRUCT_MEMBER (guint64, mem, offset);
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_LONG:
+	case GI_TYPE_TAG_ULONG:
+	  value->v_ulong = G_STRUCT_MEMBER (gulong, mem, offset);
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_SSIZE:
+	case GI_TYPE_TAG_SIZE:
+	case GI_TYPE_TAG_GTYPE:
+	  value->v_size = G_STRUCT_MEMBER (gsize, mem, offset);
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_FLOAT:
+	  value->v_float = G_STRUCT_MEMBER (gfloat, mem, offset);
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_DOUBLE:
+	  value->v_double = G_STRUCT_MEMBER (gdouble, mem, offset);
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_TIME_T:
 #if SIZEOF_TIME_T == 4
-	    value->v_int32 = G_STRUCT_MEMBER(time_t, mem, offset);
+	  value->v_int32 = G_STRUCT_MEMBER (time_t, mem, offset);
 #elif SIZEOF_TIME_T == 8
-	    value->v_int64 = G_STRUCT_MEMBER(time_t, mem, offset);
+	  value->v_int64 = G_STRUCT_MEMBER (time_t, mem, offset);
 #else
 #  error "Unexpected size for time_t: not 4 or 8"
 #endif
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_UTF8:
-	  case GI_TYPE_TAG_FILENAME:
-	  case GI_TYPE_TAG_ARRAY:
-	  case GI_TYPE_TAG_GLIST:
-	  case GI_TYPE_TAG_GSLIST:
-	  case GI_TYPE_TAG_GHASH:
-	    g_warning("Field %s: type %s should have is_pointer set",
-		      g_base_info_get_name ((GIBaseInfo *)field_info),
-		      g_type_tag_to_string (g_type_info_get_tag (type_info)));
-	    break;
-	  case GI_TYPE_TAG_ERROR:
-	    /* Needs to be handled by the language binding directly */
-	    break;
-	  case GI_TYPE_TAG_INTERFACE:
-	    {
-	      GIBaseInfo *interface = g_type_info_get_interface (type_info);
-	      switch (g_base_info_get_type (interface))
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_UTF8:
+	case GI_TYPE_TAG_FILENAME:
+	case GI_TYPE_TAG_ARRAY:
+	case GI_TYPE_TAG_GLIST:
+	case GI_TYPE_TAG_GSLIST:
+	case GI_TYPE_TAG_GHASH:
+	  g_warning("Field %s: type %s should have is_pointer set",
+		    g_base_info_get_name ((GIBaseInfo *)field_info),
+		    g_type_tag_to_string (g_type_info_get_tag (type_info)));
+	  break;
+	case GI_TYPE_TAG_ERROR:
+	  /* Needs to be handled by the language binding directly */
+	  break;
+	case GI_TYPE_TAG_INTERFACE:
+	  {
+	    GIBaseInfo *interface = g_type_info_get_interface (type_info);
+	    switch (g_base_info_get_type (interface))
+	      {
+	      case GI_INFO_TYPE_STRUCT:
+	      case GI_INFO_TYPE_UNION:
+	      case GI_INFO_TYPE_BOXED:
+		/* Needs to be handled by the language binding directly */
+		break;
+	      case GI_INFO_TYPE_OBJECT:
+		break;
+	      case GI_INFO_TYPE_ENUM:
+	      case GI_INFO_TYPE_FLAGS:
 		{
-		case GI_INFO_TYPE_STRUCT:
-		case GI_INFO_TYPE_UNION:
-		case GI_INFO_TYPE_BOXED:
-		  /* Needs to be handled by the language binding directly */
-		  break;
-		case GI_INFO_TYPE_OBJECT:
-		  break;
-		case GI_INFO_TYPE_ENUM:
-		case GI_INFO_TYPE_FLAGS:
-		  {
-		    /* FIXME: there's a mismatch here between the value->v_int we use
-		     * here and the glong result returned from g_value_info_get_value().
-		     * But to switch this to glong, we'd have to make g_function_info_invoke()
-		     * translate value->v_long to the proper ABI for an enum function
-		     * call parameter, which will usually be int, and then fix up language
-		     * bindings.
-		     */
-		    GITypeTag storage_type = g_enum_info_get_storage_type ((GIEnumInfo *)interface);
-		    switch (storage_type)
-		      {
-		      case GI_TYPE_TAG_INT8:
-		      case GI_TYPE_TAG_UINT8:
-			value->v_int = (gint)G_STRUCT_MEMBER(guint8, mem, offset);
-			result = TRUE;
-			break;
-		      case GI_TYPE_TAG_INT16:
-		      case GI_TYPE_TAG_UINT16:
-		      case GI_TYPE_TAG_SHORT:
-		      case GI_TYPE_TAG_USHORT:
-			value->v_int = (gint)G_STRUCT_MEMBER(guint16, mem, offset);
-			result = TRUE;
-			break;
-		      case GI_TYPE_TAG_INT32:
-		      case GI_TYPE_TAG_UINT32:
-		      case GI_TYPE_TAG_INT:
-		      case GI_TYPE_TAG_UINT:
-			value->v_int = (gint)G_STRUCT_MEMBER(guint32, mem, offset);
-			result = TRUE;
-			break;
-		      case GI_TYPE_TAG_INT64:
-		      case GI_TYPE_TAG_UINT64:
-			value->v_int = (gint)G_STRUCT_MEMBER(guint64, mem, offset);
-			result = TRUE;
-			break;
-		      case GI_TYPE_TAG_LONG:
-		      case GI_TYPE_TAG_ULONG:
-			value->v_int = (gint)G_STRUCT_MEMBER(gulong, mem, offset);
-			result = TRUE;
-			break;
-		      default:
-			g_warning("Field %s: Unexpected enum storage type %s",
-				  g_base_info_get_name ((GIBaseInfo *)field_info),
-				  g_type_tag_to_string (storage_type));
-			break;
-		      }
-		    break;
-		  }
-		case GI_INFO_TYPE_VFUNC:
-		case GI_INFO_TYPE_CALLBACK:
-		  g_warning("Field %s: Interface type %d should have is_pointer set",
-			    g_base_info_get_name ((GIBaseInfo *)field_info),
-			    g_base_info_get_type (interface));
-		  break;
-		case GI_INFO_TYPE_INVALID:
-		case GI_INFO_TYPE_INTERFACE:
-		case GI_INFO_TYPE_FUNCTION:
-		case GI_INFO_TYPE_CONSTANT:
-		case GI_INFO_TYPE_ERROR_DOMAIN:
-		case GI_INFO_TYPE_VALUE:
-		case GI_INFO_TYPE_SIGNAL:
-		case GI_INFO_TYPE_PROPERTY:
-		case GI_INFO_TYPE_FIELD:
-		case GI_INFO_TYPE_ARG:
-		case GI_INFO_TYPE_TYPE:
-		case GI_INFO_TYPE_UNRESOLVED:
-		  g_warning("Field %s: Interface type %d not expected",
-			    g_base_info_get_name ((GIBaseInfo *)field_info),
-			    g_base_info_get_type (interface));
+		  /* FIXME: there's a mismatch here between the value->v_int we use
+		   * here and the glong result returned from g_value_info_get_value().
+		   * But to switch this to glong, we'd have to make g_function_info_invoke()
+		   * translate value->v_long to the proper ABI for an enum function
+		   * call parameter, which will usually be int, and then fix up language
+		   * bindings.
+		   */
+		  GITypeTag storage_type = g_enum_info_get_storage_type ((GIEnumInfo *)interface);
+		  switch (storage_type)
+		    {
+		    case GI_TYPE_TAG_INT8:
+		    case GI_TYPE_TAG_UINT8:
+		      value->v_int = (gint)G_STRUCT_MEMBER (guint8, mem, offset);
+		      result = TRUE;
+		      break;
+		    case GI_TYPE_TAG_INT16:
+		    case GI_TYPE_TAG_UINT16:
+		    case GI_TYPE_TAG_SHORT:
+		    case GI_TYPE_TAG_USHORT:
+		      value->v_int = (gint)G_STRUCT_MEMBER (guint16, mem, offset);
+		      result = TRUE;
+		      break;
+		    case GI_TYPE_TAG_INT32:
+		    case GI_TYPE_TAG_UINT32:
+		    case GI_TYPE_TAG_INT:
+		    case GI_TYPE_TAG_UINT:
+		      value->v_int = (gint)G_STRUCT_MEMBER (guint32, mem, offset);
+		      result = TRUE;
+		      break;
+		    case GI_TYPE_TAG_INT64:
+		    case GI_TYPE_TAG_UINT64:
+		      value->v_int = (gint)G_STRUCT_MEMBER (guint64, mem, offset);
+		      result = TRUE;
+		      break;
+		    case GI_TYPE_TAG_LONG:
+		    case GI_TYPE_TAG_ULONG:
+		      value->v_int = (gint)G_STRUCT_MEMBER (gulong, mem, offset);
+		      result = TRUE;
+		      break;
+		    default:
+		      g_warning("Field %s: Unexpected enum storage type %s",
+				g_base_info_get_name ((GIBaseInfo *)field_info),
+				g_type_tag_to_string (storage_type));
+		      break;
+		    }
 		  break;
 		}
+	      case GI_INFO_TYPE_VFUNC:
+	      case GI_INFO_TYPE_CALLBACK:
+		g_warning("Field %s: Interface type %d should have is_pointer set",
+			  g_base_info_get_name ((GIBaseInfo *)field_info),
+			  g_base_info_get_type (interface));
+		break;
+	      case GI_INFO_TYPE_INVALID:
+	      case GI_INFO_TYPE_INTERFACE:
+	      case GI_INFO_TYPE_FUNCTION:
+	      case GI_INFO_TYPE_CONSTANT:
+	      case GI_INFO_TYPE_ERROR_DOMAIN:
+	      case GI_INFO_TYPE_VALUE:
+	      case GI_INFO_TYPE_SIGNAL:
+	      case GI_INFO_TYPE_PROPERTY:
+	      case GI_INFO_TYPE_FIELD:
+	      case GI_INFO_TYPE_ARG:
+	      case GI_INFO_TYPE_TYPE:
+	      case GI_INFO_TYPE_UNRESOLVED:
+		g_warning("Field %s: Interface type %d not expected",
+			  g_base_info_get_name ((GIBaseInfo *)field_info),
+			  g_base_info_get_type (interface));
+		break;
+	      }
 
-	      g_base_info_unref ((GIBaseInfo *)interface);
-	      break;
-	    }
+	    g_base_info_unref ((GIBaseInfo *)interface);
 	    break;
 	  }
-      }
+	  break;
+	}
+    }
 
-    g_base_info_unref ((GIBaseInfo *)type_info);
+  g_base_info_unref ((GIBaseInfo *)type_info);
 
-    return result;
+  return result;
 }
 
 /**
@@ -326,184 +374,187 @@ g_field_info_set_field (GIFieldInfo     *field_info,
 			gpointer         mem,
 			const GArgument *value)
 {
-    int offset;
-    GITypeInfo *type_info;
-    gboolean result = FALSE;
+  int offset;
+  GITypeInfo *type_info;
+  gboolean result = FALSE;
 
-    if ((g_field_info_get_flags (field_info) & GI_FIELD_IS_WRITABLE) == 0)
-      return FALSE;
+  g_return_val_if_fail (field_info != NULL, FALSE);
+  g_return_val_if_fail (GI_IS_FIELD_INFO (field_info), FALSE);
 
-    offset = g_field_info_get_offset (field_info);
-    type_info = g_field_info_get_type (field_info);
+  if ((g_field_info_get_flags (field_info) & GI_FIELD_IS_WRITABLE) == 0)
+    return FALSE;
 
-    if (!g_type_info_is_pointer (type_info))
-      {
-	switch (g_type_info_get_tag (type_info))
-	  {
-	  case GI_TYPE_TAG_VOID:
-	    g_warning("Field %s: should not be have void type",
-		      g_base_info_get_name ((GIBaseInfo *)field_info));
-	    break;
-	  case GI_TYPE_TAG_BOOLEAN:
-	    G_STRUCT_MEMBER(gboolean, mem, offset) = value->v_boolean != FALSE;
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_INT8:
-	  case GI_TYPE_TAG_UINT8:
-	    G_STRUCT_MEMBER(guint8, mem, offset) = value->v_uint8;
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_INT16:
-	  case GI_TYPE_TAG_UINT16:
-	  case GI_TYPE_TAG_SHORT:
-	  case GI_TYPE_TAG_USHORT:
-	    G_STRUCT_MEMBER(guint16, mem, offset) = value->v_uint16;
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_INT32:
-	  case GI_TYPE_TAG_UINT32:
-	  case GI_TYPE_TAG_INT:
-	  case GI_TYPE_TAG_UINT:
-	    G_STRUCT_MEMBER(guint32, mem, offset) = value->v_uint32;
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_INT64:
-	  case GI_TYPE_TAG_UINT64:
-	    G_STRUCT_MEMBER(guint64, mem, offset) = value->v_uint64;
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_LONG:
-	  case GI_TYPE_TAG_ULONG:
-	    G_STRUCT_MEMBER(gulong, mem, offset)= value->v_ulong;
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_SSIZE:
-	  case GI_TYPE_TAG_SIZE:
-	  case GI_TYPE_TAG_GTYPE:
-	    G_STRUCT_MEMBER(gsize, mem, offset) = value->v_size;
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_FLOAT:
-	    G_STRUCT_MEMBER(gfloat, mem, offset) = value->v_float;
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_DOUBLE:
-	    G_STRUCT_MEMBER(gdouble, mem, offset)= value->v_double;
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_TIME_T:
+  offset = g_field_info_get_offset (field_info);
+  type_info = g_field_info_get_type (field_info);
+
+  if (!g_type_info_is_pointer (type_info))
+    {
+      switch (g_type_info_get_tag (type_info))
+	{
+	case GI_TYPE_TAG_VOID:
+	  g_warning("Field %s: should not be have void type",
+		    g_base_info_get_name ((GIBaseInfo *)field_info));
+	  break;
+	case GI_TYPE_TAG_BOOLEAN:
+	  G_STRUCT_MEMBER (gboolean, mem, offset) = value->v_boolean != FALSE;
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_INT8:
+	case GI_TYPE_TAG_UINT8:
+	  G_STRUCT_MEMBER (guint8, mem, offset) = value->v_uint8;
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_INT16:
+	case GI_TYPE_TAG_UINT16:
+	case GI_TYPE_TAG_SHORT:
+	case GI_TYPE_TAG_USHORT:
+	  G_STRUCT_MEMBER (guint16, mem, offset) = value->v_uint16;
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_INT32:
+	case GI_TYPE_TAG_UINT32:
+	case GI_TYPE_TAG_INT:
+	case GI_TYPE_TAG_UINT:
+	  G_STRUCT_MEMBER (guint32, mem, offset) = value->v_uint32;
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_INT64:
+	case GI_TYPE_TAG_UINT64:
+	  G_STRUCT_MEMBER (guint64, mem, offset) = value->v_uint64;
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_LONG:
+	case GI_TYPE_TAG_ULONG:
+	  G_STRUCT_MEMBER (gulong, mem, offset)= value->v_ulong;
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_SSIZE:
+	case GI_TYPE_TAG_SIZE:
+	case GI_TYPE_TAG_GTYPE:
+	  G_STRUCT_MEMBER (gsize, mem, offset) = value->v_size;
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_FLOAT:
+	  G_STRUCT_MEMBER (gfloat, mem, offset) = value->v_float;
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_DOUBLE:
+	  G_STRUCT_MEMBER (gdouble, mem, offset)= value->v_double;
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_TIME_T:
 #if SIZEOF_TIME_T == 4
-            G_STRUCT_MEMBER(time_t, mem, offset) = value->v_int32;
+	  G_STRUCT_MEMBER (time_t, mem, offset) = value->v_int32;
 #elif SIZEOF_TIME_T == 8
-            G_STRUCT_MEMBER(time_t, mem, offset) = value->v_int64;
+	  G_STRUCT_MEMBER (time_t, mem, offset) = value->v_int64;
 #else
 #  error "Unexpected size for time_t: not 4 or 8"
 #endif
-	    result = TRUE;
-	    break;
-	  case GI_TYPE_TAG_UTF8:
-	  case GI_TYPE_TAG_FILENAME:
-	  case GI_TYPE_TAG_ARRAY:
-	  case GI_TYPE_TAG_GLIST:
-	  case GI_TYPE_TAG_GSLIST:
-	  case GI_TYPE_TAG_GHASH:
-	    g_warning("Field %s: type %s should have is_pointer set",
-		      g_base_info_get_name ((GIBaseInfo *)field_info),
-		      g_type_tag_to_string (g_type_info_get_tag (type_info)));
-	    break;
-	  case GI_TYPE_TAG_ERROR:
-	    /* Needs to be handled by the language binding directly */
-	    break;
-	  case GI_TYPE_TAG_INTERFACE:
-	    {
-	      GIBaseInfo *interface = g_type_info_get_interface (type_info);
-	      switch (g_base_info_get_type (interface))
+	  result = TRUE;
+	  break;
+	case GI_TYPE_TAG_UTF8:
+	case GI_TYPE_TAG_FILENAME:
+	case GI_TYPE_TAG_ARRAY:
+	case GI_TYPE_TAG_GLIST:
+	case GI_TYPE_TAG_GSLIST:
+	case GI_TYPE_TAG_GHASH:
+	  g_warning("Field %s: type %s should have is_pointer set",
+		    g_base_info_get_name ((GIBaseInfo *)field_info),
+		    g_type_tag_to_string (g_type_info_get_tag (type_info)));
+	  break;
+	case GI_TYPE_TAG_ERROR:
+	  /* Needs to be handled by the language binding directly */
+	  break;
+	case GI_TYPE_TAG_INTERFACE:
+	  {
+	    GIBaseInfo *interface = g_type_info_get_interface (type_info);
+	    switch (g_base_info_get_type (interface))
+	      {
+	      case GI_INFO_TYPE_STRUCT:
+	      case GI_INFO_TYPE_UNION:
+	      case GI_INFO_TYPE_BOXED:
+		/* Needs to be handled by the language binding directly */
+		break;
+	      case GI_INFO_TYPE_OBJECT:
+		break;
+	      case GI_INFO_TYPE_ENUM:
+	      case GI_INFO_TYPE_FLAGS:
 		{
-		case GI_INFO_TYPE_STRUCT:
-		case GI_INFO_TYPE_UNION:
-		case GI_INFO_TYPE_BOXED:
-		  /* Needs to be handled by the language binding directly */
-		  break;
-		case GI_INFO_TYPE_OBJECT:
-		  break;
-		case GI_INFO_TYPE_ENUM:
-		case GI_INFO_TYPE_FLAGS:
-		  {
-		    /* See FIXME above
-		     */
-		    GITypeTag storage_type = g_enum_info_get_storage_type ((GIEnumInfo *)interface);
-		    switch (storage_type)
-		      {
-		      case GI_TYPE_TAG_INT8:
-		      case GI_TYPE_TAG_UINT8:
-			G_STRUCT_MEMBER(guint8, mem, offset) = (guint8)value->v_int;
-			result = TRUE;
-			break;
-		      case GI_TYPE_TAG_INT16:
-		      case GI_TYPE_TAG_UINT16:
-		      case GI_TYPE_TAG_SHORT:
-		      case GI_TYPE_TAG_USHORT:
-			G_STRUCT_MEMBER(guint16, mem, offset) = (guint16)value->v_int;
-			result = TRUE;
-			break;
-		      case GI_TYPE_TAG_INT32:
-		      case GI_TYPE_TAG_UINT32:
-		      case GI_TYPE_TAG_INT:
-		      case GI_TYPE_TAG_UINT:
-			G_STRUCT_MEMBER(guint32, mem, offset) = (guint32)value->v_int;
-			result = TRUE;
-			break;
-		      case GI_TYPE_TAG_INT64:
-		      case GI_TYPE_TAG_UINT64:
-			G_STRUCT_MEMBER(guint64, mem, offset) = (guint64)value->v_int;
-			result = TRUE;
-			break;
-		      case GI_TYPE_TAG_LONG:
-		      case GI_TYPE_TAG_ULONG:
-			G_STRUCT_MEMBER(gulong, mem, offset) = (gulong)value->v_int;
-			result = TRUE;
-			break;
-		      default:
-			g_warning("Field %s: Unexpected enum storage type %s",
-				  g_base_info_get_name ((GIBaseInfo *)field_info),
-				  g_type_tag_to_string (storage_type));
-			break;
-		      }
-		    break;
-		  }
-		  break;
-		case GI_INFO_TYPE_VFUNC:
-		case GI_INFO_TYPE_CALLBACK:
-		  g_warning("Field%s: Interface type %d should have is_pointer set",
-			    g_base_info_get_name ((GIBaseInfo *)field_info),
-			    g_base_info_get_type (interface));
-		  break;
-		case GI_INFO_TYPE_INVALID:
-		case GI_INFO_TYPE_INTERFACE:
-		case GI_INFO_TYPE_FUNCTION:
-		case GI_INFO_TYPE_CONSTANT:
-		case GI_INFO_TYPE_ERROR_DOMAIN:
-		case GI_INFO_TYPE_VALUE:
-		case GI_INFO_TYPE_SIGNAL:
-		case GI_INFO_TYPE_PROPERTY:
-		case GI_INFO_TYPE_FIELD:
-		case GI_INFO_TYPE_ARG:
-		case GI_INFO_TYPE_TYPE:
-		case GI_INFO_TYPE_UNRESOLVED:
-		  g_warning("Field %s: Interface type %d not expected",
-			    g_base_info_get_name ((GIBaseInfo *)field_info),
-			    g_base_info_get_type (interface));
+		  /* See FIXME above
+		   */
+		  GITypeTag storage_type = g_enum_info_get_storage_type ((GIEnumInfo *)interface);
+		  switch (storage_type)
+		    {
+		    case GI_TYPE_TAG_INT8:
+		    case GI_TYPE_TAG_UINT8:
+		      G_STRUCT_MEMBER (guint8, mem, offset) = (guint8)value->v_int;
+		      result = TRUE;
+		      break;
+		    case GI_TYPE_TAG_INT16:
+		    case GI_TYPE_TAG_UINT16:
+		    case GI_TYPE_TAG_SHORT:
+		    case GI_TYPE_TAG_USHORT:
+		      G_STRUCT_MEMBER (guint16, mem, offset) = (guint16)value->v_int;
+		      result = TRUE;
+		      break;
+		    case GI_TYPE_TAG_INT32:
+		    case GI_TYPE_TAG_UINT32:
+		    case GI_TYPE_TAG_INT:
+		    case GI_TYPE_TAG_UINT:
+		      G_STRUCT_MEMBER (guint32, mem, offset) = (guint32)value->v_int;
+		      result = TRUE;
+		      break;
+		    case GI_TYPE_TAG_INT64:
+		    case GI_TYPE_TAG_UINT64:
+		      G_STRUCT_MEMBER (guint64, mem, offset) = (guint64)value->v_int;
+		      result = TRUE;
+		      break;
+		    case GI_TYPE_TAG_LONG:
+		    case GI_TYPE_TAG_ULONG:
+		      G_STRUCT_MEMBER (gulong, mem, offset) = (gulong)value->v_int;
+		      result = TRUE;
+		      break;
+		    default:
+		      g_warning("Field %s: Unexpected enum storage type %s",
+				g_base_info_get_name ((GIBaseInfo *)field_info),
+				g_type_tag_to_string (storage_type));
+		      break;
+		    }
 		  break;
 		}
+		break;
+	      case GI_INFO_TYPE_VFUNC:
+	      case GI_INFO_TYPE_CALLBACK:
+		g_warning("Field%s: Interface type %d should have is_pointer set",
+			  g_base_info_get_name ((GIBaseInfo *)field_info),
+			  g_base_info_get_type (interface));
+		break;
+	      case GI_INFO_TYPE_INVALID:
+	      case GI_INFO_TYPE_INTERFACE:
+	      case GI_INFO_TYPE_FUNCTION:
+	      case GI_INFO_TYPE_CONSTANT:
+	      case GI_INFO_TYPE_ERROR_DOMAIN:
+	      case GI_INFO_TYPE_VALUE:
+	      case GI_INFO_TYPE_SIGNAL:
+	      case GI_INFO_TYPE_PROPERTY:
+	      case GI_INFO_TYPE_FIELD:
+	      case GI_INFO_TYPE_ARG:
+	      case GI_INFO_TYPE_TYPE:
+	      case GI_INFO_TYPE_UNRESOLVED:
+		g_warning("Field %s: Interface type %d not expected",
+			  g_base_info_get_name ((GIBaseInfo *)field_info),
+			  g_base_info_get_type (interface));
+		break;
+	      }
 
-	      g_base_info_unref ((GIBaseInfo *)interface);
-	      break;
-	    }
+	    g_base_info_unref ((GIBaseInfo *)interface);
 	    break;
 	  }
-      }
+	  break;
+	}
+    }
 
-    g_base_info_unref ((GIBaseInfo *)type_info);
+  g_base_info_unref ((GIBaseInfo *)type_info);
 
-    return result;
+  return result;
 }



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