Re: private data con gobject en C
- From: Claudio Saavedra <csaavedra alumnos utalca cl>
- To: avaldes utalca cl
- Cc: "Advocacy, chit-chat and event planning in Chile" <gnome-cl-list gnome org>
- Subject: Re: private data con gobject en C
- Date: Wed, 18 Apr 2007 16:47:29 -0400
El Wed, 18-04-2007 a las 09:18 -0400, Alejandro Valdes Jimenez escribi� On Tue, 2007-04-10 at 16:22 -0400, Germ�Po�ama�rote:
> > typedef struct _MyObjectPriv MyObjectPriv;
> >
> > A diferencia de MyObject y MyObjectClass, la definici�e
> > MyObjectPriv
> > no la a�s en el .h; por razones obvias: No quieres que nadie
> > utilice
> > los datos de una estructura privada. En el .h s�van los s�olos
> > que
> > quieres exportar.
> >
> > Luego, en el .c declaras _MyObjectPrivate. Todos los elementos de
> > dicha estructura son privados; dado que son visibles dentro del �ito
> > del archivo .c y nada m�
Voy a tratar de explicar m�claramente esto, creo que quiz�no fu�00% expl�to (cosas que pasan cuando uno conoce el c�o de memoria y
asume que para el resto es igual de claro).
La raz�or la que el c�o est�eparado en gyrus-admin.c y
gyrus-admin-mailbox.c es netamente para ordenar un poco el c�o de la
clase GyrusAdmin. Sin embargo, ambos archivos *son parte* de la clase, y
son los �s que deben tener acceso a los elementos privados.
>
> me queda claro el "como" deben separarse las definiciones sin embargo, a
> riesgo de quedar como "humbertiro", cuando necesito utilizar tal
> structura privada desde otro archivo .c no funcionar�en la compilaci� se ver�eflejado),
No debes acceder a la estructura GyrusAdminPrivate desde ning�chivo .c que no sea los antes mencionados. No hay raz�ara hacerlo.
Para eso existen los m�dos p�os (los definidos en gyrus-admin.h).
> en ese caso no me queda mas opci�ue definir la
> estructura privada en el .h e incluir esa cabecera en el otro
> archivo .c. pero eso no cumple con lo que me indicas.
Debes incluirlo en gyrus-admin.c y gyrus-admin-mailbox.c, y s�ahi.
Ambos archivos *son* la clase GyrusAdmin. gyrus-admin-mailbox.c *no es*
una clase distinta.
>
> Ser�sto �o un indicio de que talv�el c�o est�esordenado?,
No exactamente. El c�o est�eparado por comodidad. Piensa un poco en
C# desde el dialecto 2.0. Puedes definir una clase parcialmente en
archivos diferentes, si eso te ayuda a ordenar el c�o.
> �como lo hago cuando desde otro archivo .c necesito utilizar la
> estructura privada definida en otro archivo .c?
No puedes. A menos que incluyas el archivo .c donde la estructura est�efinida, lo cual es muy mala idea.
> talv�me estoy ahogando en un vaso de agua...
Yo creo que s�De todas maneras, esta discusi�st�- offtopic.
Podemos continuarla en gyrus-list gnome org o en el reporte del bug
relacionado con esto[1] (a menos que la audiencia pida a gritos que nos
quedemos :-)
Claudio
[1] http://bugzilla.gnome.org/show_bug.cgi?id=429138
--
Claudio Saavedra <csaavedra alumnos utalca cl>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]