switch (get_fundamental_type (type))
{ case G_TYPE_BOOLEAN: case G_TYPE_CHAR: case G_TYPE_UCHAR: case G_TYPE_INT: case G_TYPE_UINT: case G_TYPE_LONG: case G_TYPE_ULONG: case G_TYPE_INT64: case G_TYPE_UINT64: case G_TYPE_ENUM: case G_TYPE_FLAGS: case G_TYPE_POINTER: case G_TYPE_FLOAT: case G_TYPE_DOUBLE:
new_list->data = list->data; break; case G_TYPE_STRING:
new_list->data.v_pointer = g_strdup (list->data.v_pointer); break; case G_TYPE_OBJECT: case G_TYPE_INTERFACE:
new_list->data.v_pointer = list->data.v_pointer; if (new_list->data.v_pointer)
g_object_ref (new_list->data.v_pointer); break; case G_TYPE_BOXED: if (list->data.v_pointer)
new_list->data.v_pointer = g_boxed_copy (type, list->data.v_pointer); else
new_list->data.v_pointer = NULL; break; case G_TYPE_VARIANT: if (list->data.v_pointer)
new_list->data.v_pointer = g_variant_ref (list->data.v_pointer); else
new_list->data.v_pointer = NULL; break; default:
g_warning ("Unsupported node type (%s) copied.", g_type_name (type)); break;
}
return new_list;
}
int
_gtk_tree_data_list_compare_func (GtkTreeModel *model,
GtkTreeIter *a,
GtkTreeIter *b,
gpointer user_data)
{ int column = GPOINTER_TO_INT (user_data);
GType type = gtk_tree_model_get_column_type (model, column);
GValue a_value = G_VALUE_INIT;
GValue b_value = G_VALUE_INIT; int retval; constchar *stra, *strb;
gtk_tree_model_get_value (model, a, column, &a_value);
gtk_tree_model_get_value (model, b, column, &b_value);
switch (get_fundamental_type (type))
{ case G_TYPE_BOOLEAN: if (g_value_get_boolean (&a_value) < g_value_get_boolean (&b_value))
retval = -1; elseif (g_value_get_boolean (&a_value) == g_value_get_boolean (&b_value))
retval = 0; else
retval = 1; break; case G_TYPE_CHAR: if (g_value_get_schar (&a_value) < g_value_get_schar (&b_value))
retval = -1; elseif (g_value_get_schar (&a_value) == g_value_get_schar (&b_value))
retval = 0; else
retval = 1; break; case G_TYPE_UCHAR: if (g_value_get_uchar (&a_value) < g_value_get_uchar (&b_value))
retval = -1; elseif (g_value_get_uchar (&a_value) == g_value_get_uchar (&b_value))
retval = 0; else
retval = 1; break; case G_TYPE_INT: if (g_value_get_int (&a_value) < g_value_get_int (&b_value))
retval = -1; elseif (g_value_get_int (&a_value) == g_value_get_int (&b_value))
retval = 0; else
retval = 1; break; case G_TYPE_UINT: if (g_value_get_uint (&a_value) < g_value_get_uint (&b_value))
retval = -1; elseif (g_value_get_uint (&a_value) == g_value_get_uint (&b_value))
retval = 0; else
retval = 1; break; case G_TYPE_LONG: if (g_value_get_long (&a_value) < g_value_get_long (&b_value))
retval = -1; elseif (g_value_get_long (&a_value) == g_value_get_long (&b_value))
retval = 0; else
retval = 1; break; case G_TYPE_ULONG: if (g_value_get_ulong (&a_value) < g_value_get_ulong (&b_value))
retval = -1; elseif (g_value_get_ulong (&a_value) == g_value_get_ulong (&b_value))
retval = 0; else
retval = 1; break; case G_TYPE_INT64: if (g_value_get_int64 (&a_value) < g_value_get_int64 (&b_value))
retval = -1; elseif (g_value_get_int64 (&a_value) == g_value_get_int64 (&b_value))
retval = 0; else
retval = 1; break; case G_TYPE_UINT64: if (g_value_get_uint64 (&a_value) < g_value_get_uint64 (&b_value))
retval = -1; elseif (g_value_get_uint64 (&a_value) == g_value_get_uint64 (&b_value))
retval = 0; else
retval = 1; break; case G_TYPE_ENUM: /* this is somewhat bogus. */ if (g_value_get_enum (&a_value) < g_value_get_enum (&b_value))
retval = -1; elseif (g_value_get_enum (&a_value) == g_value_get_enum (&b_value))
retval = 0; else
retval = 1; break; case G_TYPE_FLAGS: /* this is even more bogus. */ if (g_value_get_flags (&a_value) < g_value_get_flags (&b_value))
retval = -1; elseif (g_value_get_flags (&a_value) == g_value_get_flags (&b_value))
retval = 0; else
retval = 1; break; case G_TYPE_FLOAT: if (g_value_get_float (&a_value) < g_value_get_float (&b_value))
retval = -1; elseif (g_value_get_float (&a_value) == g_value_get_float (&b_value))
retval = 0; else
retval = 1; break; case G_TYPE_DOUBLE: if (g_value_get_double (&a_value) < g_value_get_double (&b_value))
retval = -1; elseif (g_value_get_double (&a_value) == g_value_get_double (&b_value))
retval = 0; else
retval = 1; break; case G_TYPE_STRING:
stra = g_value_get_string (&a_value);
strb = g_value_get_string (&b_value); if (stra == NULL) stra = ""; if (strb == NULL) strb = "";
retval = g_utf8_collate (stra, strb); break; case G_TYPE_VARIANT: case G_TYPE_POINTER: case G_TYPE_BOXED: case G_TYPE_OBJECT: default:
g_warning ("Attempting to sort on invalid type %s", g_type_name (type));
retval = FALSE; break;
}
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.10Bemerkung:
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-07-02)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.