⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gvaluetypes.c

📁 嵌入式下基于MiniGUI的Web Browser
💻 C
📖 第 1 页 / 共 2 页
字号:
    g_assert (type == G_TYPE_ULONG);  }    /* G_TYPE_INT64 / G_TYPE_UINT64   */  {    static const GTypeValueTable value_table = {      value_init_int64,		/* value_init */      NULL,			/* value_free */      value_copy_int64,		/* value_copy */      NULL,                     /* value_peek_pointer */      "q",			/* collect_format */      value_collect_int64,	/* collect_value */      "p",			/* lcopy_format */      value_lcopy_int64,	/* lcopy_value */    };    info.value_table = &value_table;    type = g_type_register_fundamental (G_TYPE_INT64, "gint64", &info, &finfo, 0);    g_assert (type == G_TYPE_INT64);    type = g_type_register_fundamental (G_TYPE_UINT64, "guint64", &info, &finfo, 0);    g_assert (type == G_TYPE_UINT64);  }    /* G_TYPE_FLOAT   */  {    static const GTypeValueTable value_table = {      value_init_float,		 /* value_init */      NULL,			 /* value_free */      value_copy_float,		 /* value_copy */      NULL,                      /* value_peek_pointer */      "d",			 /* collect_format */      value_collect_float,	 /* collect_value */      "p",			 /* lcopy_format */      value_lcopy_float,	 /* lcopy_value */    };    info.value_table = &value_table;    type = g_type_register_fundamental (G_TYPE_FLOAT, "gfloat", &info, &finfo, 0);    g_assert (type == G_TYPE_FLOAT);  }    /* G_TYPE_DOUBLE   */  {    static const GTypeValueTable value_table = {      value_init_double,	/* value_init */      NULL,			/* value_free */      value_copy_double,	/* value_copy */      NULL,                     /* value_peek_pointer */      "d",			/* collect_format */      value_collect_double,	/* collect_value */      "p",			/* lcopy_format */      value_lcopy_double,	/* lcopy_value */    };    info.value_table = &value_table;    type = g_type_register_fundamental (G_TYPE_DOUBLE, "gdouble", &info, &finfo, 0);    g_assert (type == G_TYPE_DOUBLE);  }  /* G_TYPE_STRING   */  {    static const GTypeValueTable value_table = {      value_init_string,	/* value_init */      value_free_string,	/* value_free */      value_copy_string,	/* value_copy */      value_peek_pointer0,	/* value_peek_pointer */      "p",			/* collect_format */      value_collect_string,	/* collect_value */      "p",			/* lcopy_format */      value_lcopy_string,	/* lcopy_value */    };    info.value_table = &value_table;    type = g_type_register_fundamental (G_TYPE_STRING, "gchararray", &info, &finfo, 0);    g_assert (type == G_TYPE_STRING);  }  /* G_TYPE_POINTER   */  {    static const GTypeValueTable value_table = {      value_init_pointer,	/* value_init */      NULL,			/* value_free */      value_copy_pointer,	/* value_copy */      value_peek_pointer0,	/* value_peek_pointer */      "p",			/* collect_format */      value_collect_pointer,	/* collect_value */      "p",			/* lcopy_format */      value_lcopy_pointer,	/* lcopy_value */    };    info.value_table = &value_table;    type = g_type_register_fundamental (G_TYPE_POINTER, "gpointer", &info, &finfo, 0);    g_assert (type == G_TYPE_POINTER);  }}/* --- GValue functions --- */voidg_value_set_char (GValue *value,		  gchar	  v_char){  g_return_if_fail (G_VALUE_HOLDS_CHAR (value));    value->data[0].v_int = v_char;}gcharg_value_get_char (const GValue *value){  g_return_val_if_fail (G_VALUE_HOLDS_CHAR (value), 0);    return value->data[0].v_int;}voidg_value_set_uchar (GValue *value,		   guchar  v_uchar){  g_return_if_fail (G_VALUE_HOLDS_UCHAR (value));    value->data[0].v_uint = v_uchar;}gucharg_value_get_uchar (const GValue *value){  g_return_val_if_fail (G_VALUE_HOLDS_UCHAR (value), 0);    return value->data[0].v_uint;}voidg_value_set_boolean (GValue  *value,		     gboolean v_boolean){  g_return_if_fail (G_VALUE_HOLDS_BOOLEAN (value));    value->data[0].v_int = v_boolean != FALSE;}gbooleang_value_get_boolean (const GValue *value){  g_return_val_if_fail (G_VALUE_HOLDS_BOOLEAN (value), 0);    return value->data[0].v_int;}voidg_value_set_int (GValue *value,		 gint	 v_int){  g_return_if_fail (G_VALUE_HOLDS_INT (value));    value->data[0].v_int = v_int;}gintg_value_get_int (const GValue *value){  g_return_val_if_fail (G_VALUE_HOLDS_INT (value), 0);    return value->data[0].v_int;}voidg_value_set_uint (GValue *value,		  guint	  v_uint){  g_return_if_fail (G_VALUE_HOLDS_UINT (value));    value->data[0].v_uint = v_uint;}guintg_value_get_uint (const GValue *value){  g_return_val_if_fail (G_VALUE_HOLDS_UINT (value), 0);    return value->data[0].v_uint;}voidg_value_set_long (GValue *value,		  glong	  v_long){  g_return_if_fail (G_VALUE_HOLDS_LONG (value));    value->data[0].v_long = v_long;}glongg_value_get_long (const GValue *value){  g_return_val_if_fail (G_VALUE_HOLDS_LONG (value), 0);    return value->data[0].v_long;}voidg_value_set_ulong (GValue *value,		   gulong  v_ulong){  g_return_if_fail (G_VALUE_HOLDS_ULONG (value));    value->data[0].v_ulong = v_ulong;}gulongg_value_get_ulong (const GValue *value){  g_return_val_if_fail (G_VALUE_HOLDS_ULONG (value), 0);    return value->data[0].v_ulong;}voidg_value_set_int64 (GValue *value,		   gint64  v_int64){  g_return_if_fail (G_VALUE_HOLDS_INT64 (value));    value->data[0].v_int64 = v_int64;}gint64g_value_get_int64 (const GValue *value){  g_return_val_if_fail (G_VALUE_HOLDS_INT64 (value), 0);    return value->data[0].v_int64;}voidg_value_set_uint64 (GValue *value,		    guint64 v_uint64){  g_return_if_fail (G_VALUE_HOLDS_UINT64 (value));    value->data[0].v_uint64 = v_uint64;}guint64g_value_get_uint64 (const GValue *value){  g_return_val_if_fail (G_VALUE_HOLDS_UINT64 (value), 0);    return value->data[0].v_uint64;}voidg_value_set_float (GValue *value,		   gfloat  v_float){  g_return_if_fail (G_VALUE_HOLDS_FLOAT (value));    value->data[0].v_float = v_float;}gfloatg_value_get_float (const GValue *value){  g_return_val_if_fail (G_VALUE_HOLDS_FLOAT (value), 0);    return value->data[0].v_float;}voidg_value_set_double (GValue *value,		    gdouble v_double){  g_return_if_fail (G_VALUE_HOLDS_DOUBLE (value));    value->data[0].v_double = v_double;}gdoubleg_value_get_double (const GValue *value){  g_return_val_if_fail (G_VALUE_HOLDS_DOUBLE (value), 0);    return value->data[0].v_double;}voidg_value_set_string (GValue	*value,		    const gchar *v_string){  g_return_if_fail (G_VALUE_HOLDS_STRING (value));    if (value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS)    value->data[1].v_uint = 0;  else    g_free (value->data[0].v_pointer);  value->data[0].v_pointer = g_strdup (v_string);}voidg_value_set_static_string (GValue      *value,			   const gchar *v_string){  g_return_if_fail (G_VALUE_HOLDS_STRING (value));    if (!(value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS))    g_free (value->data[0].v_pointer);  value->data[1].v_uint = G_VALUE_NOCOPY_CONTENTS;  value->data[0].v_pointer = (gchar*) v_string;}voidg_value_set_string_take_ownership (GValue *value,				   gchar  *v_string){  g_return_if_fail (G_VALUE_HOLDS_STRING (value));    if (value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS)    value->data[1].v_uint = 0;  else    g_free (value->data[0].v_pointer);  value->data[0].v_pointer = v_string;}G_CONST_RETURN gchar*g_value_get_string (const GValue *value){  g_return_val_if_fail (G_VALUE_HOLDS_STRING (value), NULL);    return value->data[0].v_pointer;}gchar*g_value_dup_string (const GValue *value){  g_return_val_if_fail (G_VALUE_HOLDS_STRING (value), NULL);    return g_strdup (value->data[0].v_pointer);}voidg_value_set_pointer (GValue  *value,		     gpointer v_pointer){  g_return_if_fail (G_VALUE_HOLDS_POINTER (value));  value->data[0].v_pointer = v_pointer;}gpointerg_value_get_pointer (const GValue *value){  g_return_val_if_fail (G_VALUE_HOLDS_POINTER (value), NULL);  return value->data[0].v_pointer;}/* need extra includes for g_strdup_value_contents() ;( */#include "gobject.h"#include "gparam.h"#include "gboxed.h"#include "genums.h"gchar*g_strdup_value_contents (const GValue *value){  const gchar *src;  gchar *contents;  g_return_val_if_fail (G_IS_VALUE (value), NULL);    if (G_VALUE_HOLDS_STRING (value))    {      src = g_value_get_string (value);            if (!src)	contents = g_strdup ("NULL");      else	{	  gchar *s = g_strescape (src, NULL);	  contents = g_strdup_printf ("\"%s\"", s);	  g_free (s);	}    }  else if (g_value_type_transformable (G_VALUE_TYPE (value), G_TYPE_STRING))    {      GValue tmp_value = { 0, };      gchar *s;      g_value_init (&tmp_value, G_TYPE_STRING);      g_value_transform (value, &tmp_value);      s = g_strescape (g_value_get_string (&tmp_value), NULL);      g_value_unset (&tmp_value);      if (G_VALUE_HOLDS_ENUM (value) || G_VALUE_HOLDS_FLAGS (value))	contents = g_strdup_printf ("((%s) %s)",				    g_type_name (G_VALUE_TYPE (value)),				    s);      else	contents = g_strdup (s ? s : "NULL");      g_free (s);    }  else if (g_value_fits_pointer (value))    {      gpointer p = g_value_peek_pointer (value);      if (!p)	contents = g_strdup ("NULL");      else if (G_VALUE_HOLDS_OBJECT (value))	contents = g_strdup_printf ("((%s*) %p)", G_OBJECT_TYPE_NAME (p), p);      else if (G_VALUE_HOLDS_PARAM (value))	contents = g_strdup_printf ("((%s*) %p)", G_PARAM_SPEC_TYPE_NAME (p), p);      else if (G_VALUE_HOLDS_BOXED (value))	contents = g_strdup_printf ("((%s*) %p)", g_type_name (G_VALUE_TYPE (value)), p);      else if (G_VALUE_HOLDS_POINTER (value))	contents = g_strdup_printf ("((gpointer) %p)", p);      else	contents = g_strdup ("???");    }  else    contents = g_strdup ("???");  return contents;}GTypeg_pointer_type_register_static (const gchar *name){  static const GTypeInfo type_info = {    0,			/* class_size */    NULL,		/* base_init */    NULL,		/* base_finalize */    NULL,		/* class_init */    NULL,		/* class_finalize */    NULL,		/* class_data */    0,			/* instance_size */    0,			/* n_preallocs */    NULL,		/* instance_init */    NULL		/* value_table */  };  GType type;  g_return_val_if_fail (name != NULL, 0);  g_return_val_if_fail (g_type_from_name (name) == 0, 0);  type = g_type_register_static (G_TYPE_POINTER, name, &type_info, 0);  return type;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -