Señales
Las señales constituyen la forma que tienen las clases en GLib de informar de determinados cambios de estado o de requerir la ejecución de determinadas acciones. Pero antes de entrar en detalle sobre qué son y para qué sirven las señales, es necesario el estudio de una serie de conceptos, que se detallan a continuación.
GValue
GValue representa una forma única de contener un valor de cualquier tipo. Viendo su definición se comprueba mejor qué significa esto:
1 struct _GValue
2 {
3 GType g_type;
4
5 /* public for GTypeValueTable methods */
6 union {
7 gint v_int;
8 guint v_uint;
9 glong v_long;
10 gulong v_ulong;
11 gint64 v_int64;
12 guint64 v_uint64;
13 gfloat v_float;
14 gdouble v_double;
15 gpointerv_pointer;
16 } data[2];
17 };
18
19 GValue* g_value_init (GValue *value,
20 GType g_type);
21
22 void g_value_unset (GValue *value);
Como puede observarse, GValue permite albergar valores de distintos tipos, todo ello en una unión de C. Lo interesante es que, a partir de esta simple organización (una estructura que contiene el tipo del valor almacenado y el valor), se pueden pasar valores de distintos tipos de un sitio a otro, usando un método común entre todas las partes involucradas.
Existen multitud de funciones relacionados con GValue, que permiten desde copiarlo (g_value_copy) a alterar su contenido fácilmente (g_value_get/_set).
Volver a: Sistema de objetos de GLib