Re: private data con gobject en C



Muchas gracias... 

On Tue, 2007-04-10 at 16:22 -0400, Germán Poó Caamaño wrote:
> Se tiene MyObject, entonces tu archivo de encabezado tendrás:
> 
> typedef struct _MyObjectPriv MyObjectPriv;
> 
> A diferencia de MyObject y MyObjectClass, la definición de
> MyObjectPriv
> no la añades en el .h; por razones obvias: No quieres que nadie
> utilice
> los datos de una estructura privada.  En el .h sólo van los símbolos
> que
> quieres exportar.
> 
> Luego, en el .c declaras _MyObjectPrivate.  Todos los elementos de 
> dicha estructura son privados; dado que son visibles dentro del ámbito
> del archivo .c y nada más.
> 
> Además, cuando se inicializa la clase (función my_object_class_init),
> inicializas los atributos privados.  **Debe hacerse al último**[1]
> Sería algo así como:
> 
> g_type_class_add_private (object_class, sizeof (MyObjectPrivate));
> 
> Cuando se inicializa una instancia (función my_object_init), entonces
> aplicas:
> 
> static void
> my_object_init (MyObject *my_object)
> {
>    ...
>    my_object->priv = G_TYPE_INSTANCE_GET_PRIVATE (my_object, 
>                            MY_TYPE_OBJECT, MyObjectPrivate);
>    ...
> }
> 
> Luego, ya puedes usar my_object->priv->atributo.
> 
> La lectura recomendada es "The Glib Object system":
> http://le-hacker.org/papers/gobject/
> 
> [1] Para garantizar la compatibilidad binaria entre versiones (ABI),
> pudiendo añadir la cantidad de atributos privados que desees en
> cualquier momento.
> 
> -- 
> Germán Poó Caamaño
> Concepción - Chile 
-- 
Alejandro Valdés Jiménez.
Area Plataforma
DTI - Dirección de Tecnologías de Información
Universidad de Talca.
Talca - Chile.
Teléfono: (56) (71) 200408




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]