Re: private data con gobject en C
- From: Alejandro Valdes Jimenez <avaldes utalca cl>
- To: Germán Poó Caamaño <gpoo ubiobio cl>
- Cc: "Advocacy, chit-chat and event planning in Chile" <gnome-cl-list gnome org>
- Subject: Re: private data con gobject en C
- Date: Thu, 12 Apr 2007 10:07:06 -0400
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]