X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=libspi%2Fhyperlink.c;h=d5596c2a75e2864db5459bcf3d598d1a66b29254;hb=df4d0c5c3ca00a75eec51a16235b6d8edb8d71e2;hp=a858742c8fff99c24d851891de8e2b79404b6ce8;hpb=66c4375c7cd9a0a01e79f562e1bb0326fc4dcd21;p=platform%2Fupstream%2Fat-spi2-core.git diff --git a/libspi/hyperlink.c b/libspi/hyperlink.c index a858742..d5596c2 100644 --- a/libspi/hyperlink.c +++ b/libspi/hyperlink.c @@ -2,7 +2,8 @@ * AT-SPI - Assistive Technology Service Provider Interface * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap) * - * Copyright 2001 Sun Microsystems Inc. + * Copyright 2001, 2002 Sun Microsystems Inc., + * Copyright 2001, 2002 Ximian, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -20,35 +21,19 @@ * Boston, MA 02111-1307, USA. */ -/* - * component.c : bonobo wrapper for accessible component implementation - * - */ -#include -#include +/* hyperlink.c : implements the Hyperlink interface */ +#include #include +#include +#include -/* - * This pulls the CORBA definitions for the "Accessibility::Accessible" server - */ -#include - -/* - * This pulls the definition of the hyperlink bonobo object - */ -#include "hyperlink.h" - -/* - * Static function declarations - */ +/* Static function declarations */ static void spi_hyperlink_class_init (SpiHyperlinkClass *klass); static void spi_hyperlink_init (SpiHyperlink *hyperlink); -static void -spi_hyperlink_finalize (GObject *obj); static CORBA_string impl_getURI (PortableServer_Servant _servant, const CORBA_long i, CORBA_Environment * ev); @@ -69,52 +54,17 @@ static CORBA_boolean impl_isValid (PortableServer_Servant _servant, CORBA_Environment * ev); -static GObjectClass *parent_class; -GType -spi_hyperlink_get_type (void) -{ - static GType type = 0; - - if (!type) { - static const GTypeInfo tinfo = { - sizeof (SpiHyperlinkClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) spi_hyperlink_class_init, - (GClassFinalizeFunc) NULL, - NULL, /* class data */ - sizeof (SpiHyperlink), - 0, /* n preallocs */ - (GInstanceInitFunc) spi_hyperlink_init, - NULL /* value table */ - }; - - /* - * Bonobo_type_unique auto-generates a load of - * CORBA structures for us. All derived types must - * use bonobo_type_unique. - */ - type = bonobo_type_unique ( - BONOBO_OBJECT_TYPE, - POA_Accessibility_Hyperlink__init, - NULL, - G_STRUCT_OFFSET (SpiHyperlinkClass, epv), - &tinfo, - "SpiAccessibleHyperlink"); - } - - return type; -} +BONOBO_TYPE_FUNC_FULL (SpiHyperlink, + Accessibility_Hyperlink, + SPI_TYPE_BASE, + spi_hyperlink); + static void spi_hyperlink_class_init (SpiHyperlinkClass *klass) { - GObjectClass * object_class = (GObjectClass *) klass; POA_Accessibility_Hyperlink__epv *epv = &klass->epv; - parent_class = g_type_class_peek_parent (klass); - - object_class->finalize = spi_hyperlink_finalize; /* Initialize epv table */ @@ -126,103 +76,119 @@ spi_hyperlink_class_init (SpiHyperlinkClass *klass) epv->isValid = impl_isValid; } + static void spi_hyperlink_init (SpiHyperlink *hyperlink) { } -static void -spi_hyperlink_finalize (GObject *obj) -{ - SpiHyperlink *hyperlink = SPI_HYPERLINK(obj); - g_object_unref (hyperlink->atko); - hyperlink->atko = NULL; - parent_class->finalize (obj); -} SpiHyperlink * -spi_hyperlink_interface_new (AtkObject *obj) +spi_hyperlink_new (AtkObject *object) { - SpiHyperlink *new_hyperlink = - SPI_HYPERLINK(g_object_new (SPI_HYPERLINK_TYPE, NULL)); - new_hyperlink->atko = obj; - g_object_ref (obj); + SpiHyperlink *new_hyperlink = g_object_new ( + SPI_HYPERLINK_TYPE, NULL); + + spi_base_construct (SPI_BASE (new_hyperlink), G_OBJECT(object)); + return new_hyperlink; } +static AtkHyperlink * +get_hyperlink_from_servant (PortableServer_Servant servant) +{ + SpiBase *object = SPI_BASE (bonobo_object_from_servant (servant)); + + g_return_val_if_fail (object != NULL, NULL); + g_return_val_if_fail (ATK_IS_OBJECT(object->gobj), NULL); + return ATK_HYPERLINK (object->gobj); +} + static CORBA_short -impl__get_n_anchors (PortableServer_Servant _servant, - CORBA_Environment * ev) +impl__get_n_anchors (PortableServer_Servant servant, + CORBA_Environment *ev) { - SpiHyperlink *link = SPI_HYPERLINK(bonobo_object_from_servant(_servant)); - return (CORBA_short) atk_hyperlink_get_n_anchors (ATK_HYPERLINK(link->atko)); -} + AtkHyperlink *link = get_hyperlink_from_servant (servant); + g_return_val_if_fail (link != NULL, 0); + + return atk_hyperlink_get_n_anchors (link); +} static CORBA_long -impl__get_startIndex (PortableServer_Servant _servant, - CORBA_Environment * ev) +impl__get_startIndex (PortableServer_Servant servant, + CORBA_Environment *ev) { - SpiHyperlink *link = SPI_HYPERLINK(bonobo_object_from_servant(_servant)); - return (CORBA_long) atk_hyperlink_get_start_index (ATK_HYPERLINK(link->atko)); -} + AtkHyperlink *link = get_hyperlink_from_servant (servant); + + g_return_val_if_fail (link != NULL, -1); + return atk_hyperlink_get_start_index (link); +} static CORBA_long -impl__get_endIndex (PortableServer_Servant _servant, - CORBA_Environment * ev) +impl__get_endIndex (PortableServer_Servant servant, + CORBA_Environment *ev) { - SpiHyperlink *link = SPI_HYPERLINK(bonobo_object_from_servant(_servant)); - return (CORBA_long) atk_hyperlink_get_end_index (ATK_HYPERLINK(link->atko)); -} + AtkHyperlink *link = get_hyperlink_from_servant (servant); + g_return_val_if_fail (link != NULL, -1); + + return atk_hyperlink_get_end_index (link); +} static CORBA_string -impl_getURI (PortableServer_Servant _servant, - const CORBA_long i, CORBA_Environment * ev) +impl_getURI (PortableServer_Servant servant, + const CORBA_long i, CORBA_Environment *ev) { - SpiHyperlink *link = SPI_HYPERLINK(bonobo_object_from_servant(_servant)); gchar *uri; CORBA_char *rv; - uri = atk_hyperlink_get_uri (ATK_HYPERLINK(link->atko), (gint) i); + AtkHyperlink *link = get_hyperlink_from_servant (servant); + + g_return_val_if_fail (link != NULL, CORBA_string_dup ("")); + + uri = atk_hyperlink_get_uri (link, i); if (uri) { rv = CORBA_string_dup (uri); g_free (uri); - } + } else rv = CORBA_string_dup (""); + return rv; } - static Accessibility_Accessible -impl_getObject (PortableServer_Servant _servant, - const CORBA_long i, - CORBA_Environment * ev) +impl_getObject (PortableServer_Servant servant, + const CORBA_long i, + CORBA_Environment *ev) { - SpiHyperlink *link = SPI_HYPERLINK(bonobo_object_from_servant(_servant)); - AtkObject *atk_object; - Accessibility_Accessible rv; - atk_object = atk_hyperlink_get_object (ATK_HYPERLINK(link->atko), (gint) i); - rv = bonobo_object_corba_objref (BONOBO_OBJECT(spi_accessible_new(atk_object))); - return rv; -} + AtkObject *atk_object; + AtkHyperlink *link = get_hyperlink_from_servant (servant); + g_return_val_if_fail (link != NULL, CORBA_OBJECT_NIL); + + atk_object = atk_hyperlink_get_object (link, i); + + return spi_accessible_new_return (atk_object, FALSE, ev); +} static CORBA_boolean -impl_isValid (PortableServer_Servant _servant, - CORBA_Environment * ev) +impl_isValid (PortableServer_Servant servant, + CORBA_Environment *ev) { - SpiHyperlink *link = SPI_HYPERLINK(bonobo_object_from_servant(_servant)); - return (CORBA_boolean) atk_hyperlink_is_valid (ATK_HYPERLINK(link->atko)); -} + AtkHyperlink *link = get_hyperlink_from_servant (servant); + + g_return_val_if_fail (link != NULL, TRUE); + return atk_hyperlink_is_valid (link); +}