From 8e9511af0e47355211e189d5cba5dcd9ae97584c Mon Sep 17 00:00:00 2001 From: Chris Toshok Date: Tue, 5 Nov 2002 11:09:59 +0000 Subject: port to gnome 2. 2002-11-05 Chris Toshok * backend/pas/pas-backend-card-sexp.[ch]: port to gnome 2. * backend/pas/pas-backend-file.[ch]: same. * backend/pas/pas-backend-file.[ch]: same. * backend/pas/pas-backend-ldap.[ch]: same. * backend/pas/pas-backend-summary.[ch]: same. * backend/pas/pas-backend.[ch]: same. * backend/pas/pas-book-factory.[ch]: same. * backend/pas/pas-book-view.[ch]: same. * backend/pas/pas-book.[ch]: same. * backend/pas/pas-card-cursor.[ch]: same. * backend/pas/pas-marshal.list: list of marshallers. * backend/pas/Makefile.am (libpas_a_SOURCES): add pas-marshal.c also add the marshal building foo. * backend/pas/.cvsignore: ignore pas-marshal.[ch] svn path=/trunk/; revision=18544 --- addressbook/backend/pas/pas-card-cursor.c | 192 +++++++++++++++--------------- 1 file changed, 95 insertions(+), 97 deletions(-) (limited to 'addressbook/backend/pas/pas-card-cursor.c') diff --git a/addressbook/backend/pas/pas-card-cursor.c b/addressbook/backend/pas/pas-card-cursor.c index 572f63f46e..68230eca52 100644 --- a/addressbook/backend/pas/pas-card-cursor.c +++ b/addressbook/backend/pas/pas-card-cursor.c @@ -7,10 +7,13 @@ */ #include +#include #include "addressbook.h" #include "pas-card-cursor.h" struct _PASCardCursorPrivate { + PASCardCursorServant *servant; + GNOME_Evolution_Addressbook_CardCursor corba_cursor; long (*get_length) (PASCardCursor *cursor, gpointer data); char * (*get_nth) (PASCardCursor *cursor, long n, gpointer data); gpointer data; @@ -24,20 +27,20 @@ static BonoboObjectClass *parent_class; /* * The VEPV for the CardCursor object */ -static POA_GNOME_Evolution_Addressbook_CardCursor__vepv cursor_vepv; +static POA_GNOME_Evolution_Addressbook_CardCursor__vepv pas_card_cursor_vepv; /* - * Implemented GtkObject::destroy + * Implemented GObject::dispose */ static void -pas_card_cursor_destroy (GtkObject *object) +pas_card_cursor_dispose (GObject *object) { PASCardCursor *cursor = PAS_CARD_CURSOR (object); if ( cursor->priv ) g_free ( cursor->priv ); - GTK_OBJECT_CLASS (parent_class)->destroy (object); + G_OBJECT_CLASS (parent_class)->dispose (object); } /* @@ -72,134 +75,128 @@ impl_pas_card_cursor_get_nth (PortableServer_Servant servant, return CORBA_string_dup (""); } -/* - * If you want users to derive classes from your implementation - * you need to support this method. - */ -POA_GNOME_Evolution_Addressbook_CardCursor__epv * -pas_card_cursor_get_epv (void) + +static void +corba_class_init (PASCardCursorClass *klass) { + POA_GNOME_Evolution_Addressbook_CardCursor__vepv *vepv; POA_GNOME_Evolution_Addressbook_CardCursor__epv *epv; + PortableServer_ServantBase__epv *base_epv; + + base_epv = g_new0 (PortableServer_ServantBase__epv, 1); + base_epv->_private = NULL; + base_epv->finalize = NULL; + base_epv->default_POA = NULL; - epv = g_new0 (POA_GNOME_Evolution_Addressbook_CardCursor__epv, 1); + epv = &klass->epv; - /* - * This is the method invoked by CORBA - */ epv->count = impl_pas_card_cursor_get_length; epv->getNth = impl_pas_card_cursor_get_nth; - return epv; -} - -static void -init_pas_card_cursor_corba_class (void) -{ - cursor_vepv.Bonobo_Unknown_epv = bonobo_object_get_epv (); - cursor_vepv.GNOME_Evolution_Addressbook_CardCursor_epv = pas_card_cursor_get_epv (); + vepv = &pas_card_cursor_vepv; + vepv->_base_epv = base_epv; + vepv->GNOME_Evolution_Addressbook_CardCursor_epv = epv; } static void pas_card_cursor_class_init (PASCardCursorClass *klass) { - GtkObjectClass *object_class = (GtkObjectClass *) klass; + GObjectClass *object_class = G_OBJECT_CLASS (klass); - parent_class = gtk_type_class (bonobo_object_get_type ()); + parent_class = g_type_class_ref (BONOBO_TYPE_OBJECT); - object_class->destroy = pas_card_cursor_destroy; + object_class->dispose = pas_card_cursor_dispose; - init_pas_card_cursor_corba_class (); + corba_class_init (klass); } static void pas_card_cursor_init (PASCardCursor *cursor) { cursor->priv = g_new(PASCardCursorPrivate, 1); + cursor->priv->corba_cursor = CORBA_OBJECT_NIL; cursor->priv->get_length = NULL; cursor->priv->get_nth = NULL; cursor->priv->data = NULL; } -GtkType -pas_card_cursor_get_type (void) -{ - static GtkType type = 0; - - if (!type){ - GtkTypeInfo info = { - "PASCardCursor", - sizeof (PASCardCursor), - sizeof (PASCardCursorClass), - (GtkClassInitFunc) pas_card_cursor_class_init, - (GtkObjectInitFunc) pas_card_cursor_init, - NULL, /* reserved 1 */ - NULL, /* reserved 2 */ - (GtkClassInitFunc) NULL - }; - - type = gtk_type_unique (bonobo_object_get_type (), &info); - } +BONOBO_TYPE_FUNC_FULL ( + PASCardCursor, + GNOME_Evolution_Addressbook_CardCursor, + BONOBO_TYPE_OBJECT, + pas_card_cursor); - return type; -} - -PASCardCursor * +void pas_card_cursor_construct (PASCardCursor *cursor, GNOME_Evolution_Addressbook_CardCursor corba_cursor, PASCardCursorLengthFunc get_length, PASCardCursorNthFunc get_nth, gpointer data) { - g_return_val_if_fail (cursor != NULL, NULL); - g_return_val_if_fail (PAS_IS_CARD_CURSOR (cursor), NULL); - g_return_val_if_fail (corba_cursor != CORBA_OBJECT_NIL, NULL); - - /* - * Call parent constructor - */ - if (!bonobo_object_construct (BONOBO_OBJECT (cursor), (CORBA_Object) corba_cursor)) + PASCardCursorPrivate *priv; + + g_return_if_fail (cursor != NULL); + g_return_if_fail (PAS_IS_CARD_CURSOR (cursor)); + g_return_if_fail (corba_cursor != CORBA_OBJECT_NIL); + + priv = cursor->priv; + + g_return_if_fail (priv->corba_cursor == CORBA_OBJECT_NIL); + + priv->corba_cursor = corba_cursor; + priv->get_length = get_length; + priv->get_nth = get_nth; + priv->data = data; +} + +static PASCardCursorServant * +create_servant (PASCardCursor *cursor) +{ + PASCardCursorServant *servant; + POA_GNOME_Evolution_Addressbook_CardCursor *corba_servant; + CORBA_Environment ev; + + CORBA_exception_init (&ev); + + servant = g_new0 (PASCardCursorServant, 1); + corba_servant = (POA_GNOME_Evolution_Addressbook_CardCursor *) servant; + + corba_servant->vepv = &pas_card_cursor_vepv; + POA_GNOME_Evolution_Addressbook_CardCursor__init ((PortableServer_Servant) corba_servant, &ev); + if (ev._major != CORBA_NO_EXCEPTION) { + g_free (servant); + CORBA_exception_free (&ev); return NULL; + } - /* - * Initialize cursor - */ - cursor->priv->get_length = get_length; - cursor->priv->get_nth = get_nth; - cursor->priv->data = data; - - /* - * Success: return the GtkType we were given - */ - return cursor; + servant->object = cursor; + + CORBA_exception_free (&ev); + + return servant; } -/* - * This routine creates the ORBit CORBA server and initializes the - * CORBA side of things - */ static GNOME_Evolution_Addressbook_CardCursor -create_cursor (BonoboObject *cursor) +activate_servant (PASCardCursor *cursor, + POA_GNOME_Evolution_Addressbook_CardCursor *servant) { - POA_GNOME_Evolution_Addressbook_CardCursor *servant; + GNOME_Evolution_Addressbook_CardCursor corba_object; CORBA_Environment ev; - servant = (POA_GNOME_Evolution_Addressbook_CardCursor *) g_new0 (BonoboObjectServant, 1); - servant->vepv = &cursor_vepv; - CORBA_exception_init (&ev); - POA_GNOME_Evolution_Addressbook_CardCursor__init ((PortableServer_Servant) servant, &ev); - if (ev._major != CORBA_NO_EXCEPTION){ - g_free (servant); + + CORBA_free (PortableServer_POA_activate_object (bonobo_poa (), servant, &ev)); + + corba_object = PortableServer_POA_servant_to_reference (bonobo_poa(), servant, &ev); + + if (ev._major == CORBA_NO_EXCEPTION && ! CORBA_Object_is_nil (corba_object, &ev)) { CORBA_exception_free (&ev); - return CORBA_OBJECT_NIL; + return corba_object; } CORBA_exception_free (&ev); - /* - * Activates the CORBA object. - */ - return (GNOME_Evolution_Addressbook_CardCursor) bonobo_object_activate_servant (cursor, servant); + return CORBA_OBJECT_NIL; } PASCardCursor * @@ -208,19 +205,20 @@ pas_card_cursor_new (PASCardCursorLengthFunc get_length, gpointer data) { PASCardCursor *cursor; + PASCardCursorPrivate *priv; GNOME_Evolution_Addressbook_CardCursor corba_cursor; - cursor = gtk_type_new (pas_card_cursor_get_type ()); - corba_cursor = create_cursor (BONOBO_OBJECT (cursor)); + cursor = g_object_new (PAS_TYPE_CARD_CURSOR, NULL); + priv = cursor->priv; - if (corba_cursor == CORBA_OBJECT_NIL){ - gtk_object_unref (GTK_OBJECT (cursor)); - return NULL; - } - - return pas_card_cursor_construct (cursor, - corba_cursor, - get_length, - get_nth, - data); + priv->servant = create_servant (cursor); + corba_cursor = activate_servant (cursor, (POA_GNOME_Evolution_Addressbook_CardCursor*)priv->servant); + + pas_card_cursor_construct (cursor, + corba_cursor, + get_length, + get_nth, + data); + + return cursor; } -- cgit