GObject
GLib Object System, o GObject, es una biblioteca de software libre bajo la licencia LGPL que provee un sistema de objetos portátil y una interoperabilidad multilenguaje transparente. GObject está diseñado para su utilización directa en programas C y a través de bindings, a otros lenguajes. HistoriaDependiendo sólo de GLib y libc, GObject es la piedra angular de GNOME y es utilizada en todo GTK+, Pango, ATK, y la mayoría de aplicaciones y bibliotecas de alto nivel de GNOME. Antes de GTK+ 2.0, el código GObject era parte del código base de GTK+. (El nombre de "GObject" todavía no estaba en uso; el nombre común de la clase base fue llamado La liberación de GTK+ 2.0 tenía extraído el sistema de objetos en una biblioteca separada debido a su utilidad general. En el proceso, la mayoría de GUI no específica de partes de la clase Relación con GLibAunque GObject tiene su propio conjunto separado de documentación[1] y está normalmente compilado en su propio archivo de biblioteca compartida, el código fuente de GObject reside en el árbol de código fuente GLib y se distribuye junto con GLib. Por esta razón, GObject utiliza los números de versión de GLib y suele ser empaquetado junto con GLib (por ejemplo, Debian pone GObject en su familia de paquetes El sistema de tiposEn el nivel más básico del framework de GObject radica un tipo de dato genérico y dinámico llamado GType. El sistema GType mantiene una descripción en tiempo de ejecución de todos los objetos que permiten encolar código para facilitar múltiples bindings de lenguajes. El sistema de tipos puede manejar cualquier estructura de clase de herencia múltiple, además de tipos sin clase como punteros opacos, cadenas, y varios tamaños de números de enteros y punto flotante. El sistema de tipo sabe cómo copiar, asignar y destruir valores pertenecientes a cualquiera de los tipos registrados. Esto es trivial para los tipos como enteros, pero muchos objetos complejos son contados por referencia, mientras que algunos son complejos pero no contados por referencia. Cuando el tipo de sistema "copia" un objeto de referencia contada, normalmente sólo aumentará su referencia contada, mientras que cuando se copia uno complejo, no un objeto de referencia contada (como una cadena), se suele crear una copia actual por asignación de memoria. Esta funcionalidad básica se utiliza para implementar Tipos fundamentalesTipos que no tienen ninguna clase asociada se denominan no claseados. Estos tipos, junto con todos los tipos que corresponden a alguna forma de la clase raíz, son conocidos como tipos fundamentales: los tipos a partir de la cual todos los otros tipos se derivan. Estos conforman un conjunto relativamente cerrado, pero aunque el usuario medio no se espera crear sus propios tipos fundamentales, la posibilidad existe y ha sido explotada para crear jerarquías de clase personalizadas - por ejemplo, las jerarquías de clase no basadas en la clase A partir de GLib 2.9.2 [1], los tipos no claseados fundamentales integrados son
Los tipos claseados fundamentales integrados son:
Los tipos que puede ser instanciados automáticamente por el sistema de tipos son llamados instanciables. Una característica importante de esos tipos es que el primer byte de cualquier instancia siempre contiene un puntero a la estructura de clase (una forma de tabla virtual) asociada al tipo de la instancia. Por esta razón, cualquier tipo instanciable debe ser claseado. Contrapositivamente, cualquier tipo no claseado (como integer o string') debe ser no instanciable. Por otro lado, la mayoría de los tipos claseados son instanciables, pero algunos, como los tipos de interfaces, no lo son.
Véase tambiénReferenciasEnlaces externos |
Portal di Ensiklopedia Dunia