Glib

De Wiki GNOME Chile
Revisión a fecha de 22:48 4 ago 2006; FelipeBarros (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Contenido

Introducción

glib es una librería que contiene multitud de funcionalidad que es necesaria prácticamente en todos los programas, a la vez que incluye algunas funcionalidades de más alto nivel, como es, por ejemplo, el sistema de objetos. Se podría definir glib como una librería de ayuda para la programación en C, aunque, como vamos a ver, no sólo se queda en ello.

Nos ofrece lo siguiente:

  • Tipos de datos portables: debido a las diferencias entre sistemas operativos/arquitecturas en cuanto a los tamaños de los tipos de datos se refiere, se vuelve a veces complejo el hacer que los programas funcionen sin cambios al cambiar de S.O o hardware. Así, glib ofrece una serie de tipos de datos propios (gchar, gint, gint32, guint, guint32, guchar, etc) que permiten al programador abstraerse completamente de esas diferencias.
  • Gestión de memoria: la gestión de memoria es una tarea especialmente delicada, por lo que glib ofrece su ayuda tambien en este campo. Para ello, se ofrecen funciones equivalentes a las funciones de asignación de memoria de la libc que ofrecen un control más exhaustivo de lo que se hace con la memoria.

    Una característica interesante es que las funciones de asignación de memoria de glib (g_malloc, g_malloc0, g_new, g_new0) siempre devuelven un puntero válido, pues siempre intentan varias veces la operación de asignación de memoria si fallara, terminando el programa si, tras un número determinado de intentos, no tiene éxito. Esto nos evita el tener que llenar el código de nuestro programa de comprobaciones.

  • Estructuras de datos: en glib no podían faltar funciones para el tratamiento de estructuras de datos, algo extremadamente comun en la programación en C. Así, tenemos a nuestra disposición funciones para tratar con listas enlazadas (simple y doblemente enlazadas), arrays dinámicos (GArray, GPtrArray...), tablas de "hash" (GHashTable), y otras más, menos comunes, pero que vendrán de maravilla en muchas situaciones.
  • Bucle de ejecución: una de las cosas más interesantes de glib es el bucle de ejecución (GMainLoop) que incluye, que nos permite convertir nuestras aplicaciones en asíncronas, de forma que permanezcan a la escucha de determinados eventos, actuando sólo cuando se produzcan esos eventos, permaneciendo en espera el resto del tiempo. Esto es algo especialmente útil para aplicaciones con interfaz gráfica, como vermos más adelante, pero puede ser muy útil tambien en otras situaciones.

    El tipo de eventos que se pueden usar son alarmas (temporizadores), momentos de inactividad de la aplicación, y, el más interesante de todos, eventos de E/S en ficheros (o tuberías, sockets, etc)

  • Sistema de objetos: el sistema de objetos que, a partir de la versión 2.0 de glib/GTK+, está disponible en glib fue creado inicialmente como parte de GTK+. Pero, durante todo este tiempo, se ha visto que este sistema de objetos, que, básicamente no tiene absolutamente nada que ver con el interfaz gráfico, puede ser muy útil en todo tipo de aplicaciones. Por ello, se ha decidido traspasarlo todo a glib, eso si, manteniendo la compatibilidad, a nivel de código fuente, con las aplicaciones GTK+.
    Este sistema de objetos nos permite usar programación orientada a objetos en C, ofreciéndonos así todas las bondades de esta técnica de programación. Al estar implementado en C, evidentemente el soporte POO no es tan completo como puede serlo en otro lenguaje realmente orientado a objetos, pero esto, más que una desventaja, en ocasiones se convierte en una ventaja, pues nos aleja de algunas de las complejidades de la POO. Aun así, el soporte POO es bastante completo, y nos permite cosas como la herencia de clases, los métodos virtuales.


Extracto del Libro GNOME

  1. Glib
    1. Tipos de datos de GLib
    2. Mensajes de salida
    3. Trabajar con cadenas
    4. Jugando con el tiempo
    5. Miscelánea de funciones
    6. Bucles de ejecución
    7. Tratamiento de archivos y canales de entrada/salida
    8. Manejo de memoria dinámica
    9. Estructuras de datos: listas enlazadas, pilas y colas
    10. Estructuras de datos avanzadas
    11. GLib avanzado
  1. Sistema de objetos de GLib.
    1. GObject introducción
    2. Gestión dinámica de tipos.
    3. Señales
    4. GObject, la clase base.
    5. Parámetros y valores.

Ejemplos

Enlaces externos

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Herramientas