📄 gvaluetransform.c
字号:
DEFINE_BOOL_CHECK (uint64_bool, v_uint64);/* string printouts */#define DEFINE_SPRINTF(func_name, from_member, format) \static void \value_transform_##func_name (const GValue *src_value, \ GValue *dest_value) \{ \ dest_value->data[0].v_pointer = g_strdup_printf ((format), \ src_value->data[0].from_member); \} extern void glib_dummy_decl (void)DEFINE_SPRINTF (int_string, v_int, "%d");DEFINE_SPRINTF (uint_string, v_uint, "%u");DEFINE_SPRINTF (long_string, v_long, "%ld");DEFINE_SPRINTF (ulong_string, v_ulong, "%lu");#ifdef G_GINT64_FORMATDEFINE_SPRINTF (int64_string, v_int64, "%" G_GINT64_FORMAT);#endif#ifdef G_GUINT64_FORMATDEFINE_SPRINTF (uint64_string, v_uint64, "%" G_GUINT64_FORMAT);#endifDEFINE_SPRINTF (float_string, v_float, "%f");DEFINE_SPRINTF (double_string, v_double, "%f");/* special cases */static voidvalue_transform_bool_string (const GValue *src_value, GValue *dest_value){ dest_value->data[0].v_pointer = g_strdup_printf ("%s", src_value->data[0].v_int ? "TRUE" : "FALSE");}static voidvalue_transform_string_string (const GValue *src_value, GValue *dest_value){ dest_value->data[0].v_pointer = g_strdup (src_value->data[0].v_pointer);}static voidvalue_transform_enum_string (const GValue *src_value, GValue *dest_value){ GEnumClass *class = g_type_class_ref (G_VALUE_TYPE (src_value)); GEnumValue *enum_value = g_enum_get_value (class, src_value->data[0].v_int); if (enum_value) dest_value->data[0].v_pointer = g_strdup (enum_value->value_name); else dest_value->data[0].v_pointer = g_strdup_printf ("%d", src_value->data[0].v_int); g_type_class_unref (class);}static voidvalue_transform_flags_string (const GValue *src_value, GValue *dest_value){ GFlagsClass *class = g_type_class_ref (G_VALUE_TYPE (src_value)); GFlagsValue *flags_value = g_flags_get_first_value (class, src_value->data[0].v_uint); if (flags_value) { GString *gstring = g_string_new (""); guint v_flags = src_value->data[0].v_uint; do { v_flags &= ~flags_value->value; if (gstring->str[0]) g_string_append (gstring, " | "); g_string_append (gstring, flags_value->value_name); flags_value = g_flags_get_first_value (class, v_flags); } while (flags_value); if (v_flags) dest_value->data[0].v_pointer = g_strdup_printf ("%s | %u", gstring->str, v_flags); else dest_value->data[0].v_pointer = g_strdup (gstring->str); g_string_free (gstring, TRUE); } else dest_value->data[0].v_pointer = g_strdup_printf ("%u", src_value->data[0].v_uint); g_type_class_unref (class);}/* registration */voidg_value_transforms_init (void) /* sync with gtype.c */{ /* some transformations are a bit questionable, * we currently skip those */#define SKIP____register_transform_func(type1,type2,transform_func) /* skip questionable transforms */ \ (void)0 /* numeric types (plus to string) */ g_value_register_transform_func (G_TYPE_CHAR, G_TYPE_CHAR, value_transform_int_int); g_value_register_transform_func (G_TYPE_CHAR, G_TYPE_UCHAR, value_transform_int_u8); g_value_register_transform_func (G_TYPE_CHAR, G_TYPE_BOOLEAN, value_transform_int_bool); g_value_register_transform_func (G_TYPE_CHAR, G_TYPE_INT, value_transform_int_int); g_value_register_transform_func (G_TYPE_CHAR, G_TYPE_UINT, value_transform_int_uint); g_value_register_transform_func (G_TYPE_CHAR, G_TYPE_LONG, value_transform_int_long); g_value_register_transform_func (G_TYPE_CHAR, G_TYPE_ULONG, value_transform_int_ulong); g_value_register_transform_func (G_TYPE_CHAR, G_TYPE_INT64, value_transform_int_int64); g_value_register_transform_func (G_TYPE_CHAR, G_TYPE_UINT64, value_transform_int_uint64); g_value_register_transform_func (G_TYPE_CHAR, G_TYPE_ENUM, value_transform_int_int); g_value_register_transform_func (G_TYPE_CHAR, G_TYPE_FLAGS, value_transform_int_uint); g_value_register_transform_func (G_TYPE_CHAR, G_TYPE_FLOAT, value_transform_int_float); g_value_register_transform_func (G_TYPE_CHAR, G_TYPE_DOUBLE, value_transform_int_double); g_value_register_transform_func (G_TYPE_CHAR, G_TYPE_STRING, value_transform_int_string); g_value_register_transform_func (G_TYPE_UCHAR, G_TYPE_CHAR, value_transform_uint_s8); g_value_register_transform_func (G_TYPE_UCHAR, G_TYPE_UCHAR, value_transform_uint_uint); g_value_register_transform_func (G_TYPE_UCHAR, G_TYPE_BOOLEAN, value_transform_uint_bool); g_value_register_transform_func (G_TYPE_UCHAR, G_TYPE_INT, value_transform_uint_int); g_value_register_transform_func (G_TYPE_UCHAR, G_TYPE_UINT, value_transform_uint_uint); g_value_register_transform_func (G_TYPE_UCHAR, G_TYPE_LONG, value_transform_uint_long); g_value_register_transform_func (G_TYPE_UCHAR, G_TYPE_ULONG, value_transform_uint_ulong); g_value_register_transform_func (G_TYPE_UCHAR, G_TYPE_INT64, value_transform_uint_int64); g_value_register_transform_func (G_TYPE_UCHAR, G_TYPE_UINT64, value_transform_uint_uint64); g_value_register_transform_func (G_TYPE_UCHAR, G_TYPE_ENUM, value_transform_uint_int); g_value_register_transform_func (G_TYPE_UCHAR, G_TYPE_FLAGS, value_transform_uint_uint); g_value_register_transform_func (G_TYPE_UCHAR, G_TYPE_FLOAT, value_transform_uint_float); g_value_register_transform_func (G_TYPE_UCHAR, G_TYPE_DOUBLE, value_transform_uint_double); g_value_register_transform_func (G_TYPE_UCHAR, G_TYPE_STRING, value_transform_uint_string); g_value_register_transform_func (G_TYPE_BOOLEAN, G_TYPE_CHAR, value_transform_int_s8); g_value_register_transform_func (G_TYPE_BOOLEAN, G_TYPE_UCHAR, value_transform_int_u8); g_value_register_transform_func (G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, value_transform_int_int); g_value_register_transform_func (G_TYPE_BOOLEAN, G_TYPE_INT, value_transform_int_int); g_value_register_transform_func (G_TYPE_BOOLEAN, G_TYPE_UINT, value_transform_int_uint); g_value_register_transform_func (G_TYPE_BOOLEAN, G_TYPE_LONG, value_transform_int_long); g_value_register_transform_func (G_TYPE_BOOLEAN, G_TYPE_ULONG, value_transform_int_ulong); g_value_register_transform_func (G_TYPE_BOOLEAN, G_TYPE_INT64, value_transform_int_int64); g_value_register_transform_func (G_TYPE_BOOLEAN, G_TYPE_UINT64, value_transform_int_uint64); g_value_register_transform_func (G_TYPE_BOOLEAN, G_TYPE_ENUM, value_transform_int_int); g_value_register_transform_func (G_TYPE_BOOLEAN, G_TYPE_FLAGS, value_transform_int_uint); SKIP____register_transform_func (G_TYPE_BOOLEAN, G_TYPE_FLOAT, value_transform_int_float); SKIP____register_transform_func (G_TYPE_BOOLEAN, G_TYPE_DOUBLE, value_transform_int_double); g_value_register_transform_func (G_TYPE_BOOLEAN, G_TYPE_STRING, value_transform_bool_string); g_value_register_transform_func (G_TYPE_INT, G_TYPE_CHAR, value_transform_int_s8); g_value_register_transform_func (G_TYPE_INT, G_TYPE_UCHAR, value_transform_int_u8);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -