fbpx
Wikipedia

GObject

GLib Object System, o GObject, es una biblioteca de software libre bajo la licencia LGPL que provee un sistema de objetos portable 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.

Historia

Dependiendo sólo de GLib y libc, GObject es la piedra angular de GNOME y es utilizada en todo GTK+, Pango, Accessibility Toolkit, 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 GtkObject.)

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 GtkObject se trasladó hasta GObject, la nueva clase base común. Habiendo existido como una biblioteca separada desde el 11 de marzo de 2002 (la fecha de lanzamiento de GTK+ 2.0), la biblioteca GObject es ahora utilizada por muchos programas sin GUI como la línea de comandos y las aplicaciones de servidor.

Relación con GLib

Aunque 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 libglib2.0).

El sistema de tipos

En 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 GValue, un tipo de contenedor genérico que puede contener valores de cualquier tipo conocido por el sistema de tipo. Estos contenedores son particularmente útiles cuando interactúan dinámicamente con entornos de lenguajes tipados en los que todos los valores nativos residen en contenedores de tipos etiquetados.

Tipos fundamentales

Tipos 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 GObject.

A partir de GLib 2.9.2 , los tipos no claseados fundamentales integrados son

  • un tipo vacío, correspondiente al void de C (G_TYPE_NONE);
  • tipos correspondientes a los tipos con signo y sin signo de C char, int, long y enteros de 64-bit (G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_INT64 y G_TYPE_UINT64);
  • un tipo booleano (G_TYPE_BOOLEAN);
  • un tipo enumerado y un tipo "flags”, ambos corresponientes al tipo enum de C, pero difiriendo en que este último es solo usado para campos de bit (G_TYPE_ENUM y G_TYPE_FLAGS);
  • tipos para simple y doble precisión IEEE punto flotante, correspondiente al float y double de C (G_TYPE_FLOAT y G_TYPE_DOUBLE);
  • un tipo cadena, correspondiente al char * de C (G_TYPE_STRING);
  • un tipo de puntero opaco, correspondiente al void * de C (G_TYPE_POINTER).

Los tipos claseados fundamentales integrados son:

  • un tipo de clase base para instancias de GObject, la raíz de la clase estándar de árbol de herencia (G_TYPE_OBJECT)
  • un tipo de interfaz base, análogo a tipo de clase base pero representando la raíz de la interfaz estándar del árbol de herencia (G_TYPE_INTERFACE)
  • un tipo para la estructura boxed, que es usada para envolver valores simples de objetos o objetos ajenos a las "boxes" de referencia contada (G_TYPE_BOXED)
  • un tipo para "especificaciones de parámetros de objetos", que son usados en GObject para describir metadatos para propiedades de objetos (G_TYPE_PARAM).

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én

Referencias

  1. GObject Reference Manual

Enlaces externos

  • The GObject Reference Manual (and tutorial)
  • GOB2 — the GObject Builder
  • Vala Homepage
  •   Datos: Q605962

gobject, glib, object, system, biblioteca, software, libre, bajo, licencia, lgpl, provee, sistema, objetos, portable, interoperabilidad, multilenguaje, transparente, está, diseñado, para, utilización, directa, programas, través, bindings, otros, lenguajes, Índ. GLib Object System o GObject es una biblioteca de software libre bajo la licencia LGPL que provee un sistema de objetos portable y una interoperabilidad multilenguaje transparente GObject esta disenado para su utilizacion directa en programas C y a traves de bindings a otros lenguajes Indice 1 Historia 2 Relacion con GLib 3 El sistema de tipos 3 1 Tipos fundamentales 4 Vease tambien 5 Referencias 6 Enlaces externosHistoria EditarDependiendo solo de GLib y libc GObject es la piedra angular de GNOME y es utilizada en todo GTK Pango Accessibility Toolkit y la mayoria de aplicaciones y bibliotecas de alto nivel de GNOME Antes de GTK 2 0 el codigo GObject era parte del codigo base de GTK El nombre de GObject todavia no estaba en uso el nombre comun de la clase base fue llamado GtkObject La liberacion de GTK 2 0 tenia extraido el sistema de objetos en una biblioteca separada debido a su utilidad general En el proceso la mayoria de GUI no especifica de partes de la clase GtkObject se traslado hasta GObject la nueva clase base comun Habiendo existido como una biblioteca separada desde el 11 de marzo de 2002 la fecha de lanzamiento de GTK 2 0 la biblioteca GObject es ahora utilizada por muchos programas sin GUI como la linea de comandos y las aplicaciones de servidor Relacion con GLib EditarAunque GObject tiene su propio conjunto separado de documentacion 1 y esta normalmente compilado en su propio archivo de biblioteca compartida el codigo fuente de GObject reside en el arbol de codigo fuente GLib y se distribuye junto con GLib Por esta razon GObject utiliza los numeros de version de GLib y suele ser empaquetado junto con GLib por ejemplo Debian pone GObject en su familia de paquetes libglib2 0 El sistema de tipos EditarEn el nivel mas basico del framework de GObject radica un tipo de dato generico y dinamico llamado GType El sistema GType mantiene una descripcion en tiempo de ejecucion de todos los objetos que permiten encolar codigo para facilitar multiples bindings de lenguajes El sistema de tipos puede manejar cualquier estructura de clase de herencia multiple ademas de tipos sin clase como punteros opacos cadenas y varios tamanos de numeros de enteros y punto flotante El sistema de tipo sabe como 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 solo aumentara 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 asignacion de memoria Esta funcionalidad basica se utiliza para implementar GValue un tipo de contenedor generico que puede contener valores de cualquier tipo conocido por el sistema de tipo Estos contenedores son particularmente utiles cuando interactuan dinamicamente con entornos de lenguajes tipados en los que todos los valores nativos residen en contenedores de tipos etiquetados Tipos fundamentales Editar Tipos 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 raiz 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 jerarquias de clase personalizadas por ejemplo las jerarquias de clase no basadas en la clase GObject A partir de GLib 2 9 2 1 los tipos no claseados fundamentales integrados son un tipo vacio correspondiente al void de C G TYPE NONE tipos correspondientes a los tipos con signo y sin signo de C char int long y enteros de 64 bit G TYPE CHAR G TYPE UCHAR G TYPE INT G TYPE UINT G TYPE LONG G TYPE ULONG G TYPE INT64 y G TYPE UINT64 un tipo booleano G TYPE BOOLEAN un tipo enumerado y un tipo flags ambos corresponientes al tipo enum de C pero difiriendo en que este ultimo es solo usado para campos de bit G TYPE ENUM y G TYPE FLAGS tipos para simple y doble precision IEEE punto flotante correspondiente al float y double de C G TYPE FLOAT y G TYPE DOUBLE un tipo cadena correspondiente al char de C G TYPE STRING un tipo de puntero opaco correspondiente al void de C G TYPE POINTER Los tipos claseados fundamentales integrados son un tipo de clase base para instancias de GObject la raiz de la clase estandar de arbol de herencia G TYPE OBJECT un tipo de interfaz base analogo a tipo de clase base pero representando la raiz de la interfaz estandar del arbol de herencia G TYPE INTERFACE un tipo para la estructura boxed que es usada para envolver valores simples de objetos o objetos ajenos a las boxes de referencia contada G TYPE BOXED un tipo para especificaciones de parametros de objetos que son usados en GObject para describir metadatos para propiedades de objetos G TYPE PARAM Los tipos que puede ser instanciados automaticamente por el sistema de tipos son llamados instanciables Una caracteristica 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 razon cualquier tipo instanciable debe ser claseado Contrapositivamente cualquier tipo no claseado como integer o string debe ser no instanciable Por otro lado la mayoria de los tipos claseados son instanciables pero algunos como los tipos de interfaces no lo son Vease tambien EditarBiblioteca GLibReferencias Editar GObject Reference ManualEnlaces externos EditarThe GObject Reference Manual and tutorial GObject Tutorial Aug 2004 GOB2 the GObject Builder Vala Homepage Datos Q605962 Obtenido de https es wikipedia org w index php title GObject amp oldid 119300645, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos