From ad6c1828a3c1d7bf67f23167a7e7aa8208f6f133 Mon Sep 17 00:00:00 2001 From: billh Date: Sun, 30 Sep 2001 23:59:43 +0000 Subject: [PATCH] Added initial implementations of DeviceEventController and KeystrokeListener. git-svn-id: http://svn.gnome.org/svn/at-spi/trunk@68 e2bd861d-eb25-0410-b326-f6ed22b6b98c --- ChangeLog | 11 ++- libspi/Makefile.am | 8 +- libspi/deviceeventcontroller.c | 178 ++++++++++++++++++++++++++++++++++++++ libspi/deviceeventcontroller.h | 54 ++++++++++++ libspi/keystrokelistener.c | 143 ++++++++++++++++++++++++++++++ libspi/keystrokelistener.h | 56 ++++++++++++ registryd/deviceeventcontroller.c | 178 ++++++++++++++++++++++++++++++++++++++ registryd/deviceeventcontroller.h | 54 ++++++++++++ 8 files changed, 680 insertions(+), 2 deletions(-) create mode 100644 libspi/deviceeventcontroller.c create mode 100644 libspi/deviceeventcontroller.h create mode 100644 libspi/keystrokelistener.c create mode 100644 libspi/keystrokelistener.h create mode 100644 registryd/deviceeventcontroller.c create mode 100644 registryd/deviceeventcontroller.h diff --git a/ChangeLog b/ChangeLog index 649fd17..3b59f81 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ <2001-09-30 Bill Haneman - + + * libspi/keystrokelistener.h: + * libspi/keystrokelistener.c: + Began (no-op) implementations of KeystrokeListener + (see below). + * libspi/deviceeventcontroller.c: + * libspi/deviceeventcontroller.h: + Began creating implementations of DeviceEventController, + to handle keystroke and mouse event listening and + synthesis. * libspi/accessible.c: Stubbed-in the implementations for Accessibility_Accessible_getState and diff --git a/libspi/Makefile.am b/libspi/Makefile.am index f3d02aa..ea022d1 100644 --- a/libspi/Makefile.am +++ b/libspi/Makefile.am @@ -27,8 +27,10 @@ libspiinclude_HEADERS = accessible.h \ table.h\ text.h\ value.h\ - listener.h \ + listener.h \ + keystrokelistener.h \ accessibleeventlistener.h \ + deviceeventcontroller.h \ registry.h \ Accessibility.h @@ -58,6 +60,8 @@ libspi_la_SOURCES = accessible.c \ component.h \ desktop.c \ desktop.h \ + deviceeventcontroller.c \ + deviceeventcontroller.h \ editabletext.c\ editabletext.h\ hyperlink.c\ @@ -66,6 +70,8 @@ libspi_la_SOURCES = accessible.c \ hypertext.h\ image.c\ image.h\ + keystrokelistener.c\ + keystrokelistener.h\ selection.c\ selection.h\ table.c\ diff --git a/libspi/deviceeventcontroller.c b/libspi/deviceeventcontroller.c new file mode 100644 index 0000000..33adf5d --- /dev/null +++ b/libspi/deviceeventcontroller.c @@ -0,0 +1,178 @@ +/* + * AT-SPI - Assistive Technology Service Provider Interface + * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap) + * + * Copyright 2001 Sun Microsystems Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * listener.c: test for accessibility implementation + * + */ + +#ifdef SPI_DEBUG +#include +#endif + +#include +#include +#include + +/* + * This pulls the definition for the BonoboObject (GType) + */ +#include "deviceeventcontroller.h" + +/* + * Our parent Gtk object type + */ +#define PARENT_TYPE BONOBO_OBJECT_TYPE + +/* + * A pointer to our parent object class + */ +static GObjectClass *device_event_controller_parent_class; + +/* + * Implemented GObject::finalize + */ +static void +device_event_controller_object_finalize (GObject *object) +{ + +#ifdef SPI_DEBUG + fprintf(stderr, "device_event_controller_object_finalize called\n"); +#endif + device_event_controller_parent_class->finalize (object); +} + +/* + * CORBA Accessibility::DeviceEventController::registerKeystrokeListener + * method implementation + */ +static void +impl_register_keystroke_listener (PortableServer_Servant servant, + const Accessibility_KeystrokeListener l, + CORBA_Environment *ev) +{ +#ifdef SPI_DEBUG + fprintf (stderr, "registering keystroke listener %p\n", l); +#endif +} +/* + * CORBA Accessibility::DeviceEventController::registerMouseListener + * method implementation + */ +/* +static void +impl_register_mouse_listener (PortableServer_Servant servant, + const Accessibility_MouseListener *l, + CORBA_Environment *ev) +{ +#ifdef SPI_DEBUG + fprintf (stderr, "registering mouse listener %p\n", l); +#endif +} +*/ + +/* + * CORBA Accessibility::DeviceEventController::registerKeystrokeListener + * method implementation + */ +static void +impl_generate_key_event (PortableServer_Servant servant, + const CORBA_long keyEventID, + CORBA_Environment *ev) +{ +#ifdef SPI_DEBUG + fprintf (stderr, "synthesizing keystroke %ld\n", keyEventID); +#endif +} + +/* + * CORBA Accessibility::DeviceEventController::generateMouseEvent + * method implementation + */ +static void +impl_generate_mouse_event (PortableServer_Servant servant, + const CORBA_long x, + const CORBA_long y, + const CORBA_char * eventName, + CORBA_Environment *ev) +{ +#ifdef SPI_DEBUG + fprintf (stderr, "generating mouse %s event at %ld, %ld\n", eventName, x, y); +#endif +} + +static void +device_event_controller_class_init (DeviceEventControllerClass *klass) +{ + GObjectClass * object_class = (GObjectClass *) klass; + POA_Accessibility_DeviceEventController__epv *epv = &klass->epv; + device_event_controller_parent_class = g_type_class_ref (BONOBO_OBJECT_TYPE); + + object_class->finalize = device_event_controller_object_finalize; + + epv->registerKeystrokeListener = impl_register_keystroke_listener; +/* epv->registerMouseListener = impl_register_mouse_listener; */ + epv->generateKeyEvent = impl_generate_key_event; + epv->generateMouseEvent = impl_generate_mouse_event; +} + +static void +device_event_controller_init (DeviceEventController *device_event_controller) +{ +} + +GType +device_event_controller_get_type (void) +{ + static GType type = 0; + + if (!type) { + static const GTypeInfo tinfo = { + sizeof (DeviceEventControllerClass), + (GBaseInitFunc) NULL, + (GBaseFinalizeFunc) NULL, + (GClassInitFunc) device_event_controller_class_init, + (GClassFinalizeFunc) NULL, + NULL, /* class data */ + sizeof (DeviceEventController), + 0, /* n preallocs */ + (GInstanceInitFunc) device_event_controller_init, + NULL /* value table */ + }; + /* + * Here we use bonobo_type_unique instead of + * gtk_type_unique, this auto-generates a load of + * CORBA structures for us. All derived types must + * use bonobo_type_unique. + */ + type = bonobo_type_unique ( + PARENT_TYPE, + POA_Accessibility_DeviceEventController__init, + NULL, + G_STRUCT_OFFSET (DeviceEventControllerClass, epv), + &tinfo, + "DeviceEventController"); + } + + return type; +} + diff --git a/libspi/deviceeventcontroller.h b/libspi/deviceeventcontroller.h new file mode 100644 index 0000000..60255da --- /dev/null +++ b/libspi/deviceeventcontroller.h @@ -0,0 +1,54 @@ +/* + * AT-SPI - Assistive Technology Service Provider Interface + * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap) + * + * Copyright 2001 Sun Microsystems Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef DEVICE_EVENT_CONTROLLER_H_ +#define DEVICE_EVENT_CONTROLLER_H_ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include +#include + +#define DEVICE_EVENT_CONTROLLER_TYPE (device_event_controller_get_type ()) +#define DEVICE_EVENT_CONTROLLER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), DEVICE_EVENT_CONTROLLER_TYPE, DeviceEventController)) +#define DEVICE_EVENT_CONTROLLER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), DEVICE_EVENT_CONTROLLER_TYPE, DeviceEventControllerClass)) +#define IS_DEVICE_EVENT_CONTROLLER(o) (G_TYPE_CHECK__INSTANCE_TYPE ((o), DEVICE_EVENT_CONTROLLER_TYPE)) +#define IS_DEVICE_EVENT_CONTROLLER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), DEVICE_EVENT_CONTROLLER_TYPE)) + +typedef struct { + BonoboObject parent; +} DeviceEventController; + +typedef struct { + BonoboObjectClass parent_class; + POA_Accessibility_DeviceEventController__epv epv; +} DeviceEventControllerClass; + +GType device_event_controller_get_type (void); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* DEVICEEVENTCONTROLLER_H_ */ diff --git a/libspi/keystrokelistener.c b/libspi/keystrokelistener.c new file mode 100644 index 0000000..61f883c --- /dev/null +++ b/libspi/keystrokelistener.c @@ -0,0 +1,143 @@ +/* + * AT-SPI - Assistive Technology Service Provider Interface + * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap) + * + * Copyright 2001 Sun Microsystems Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * listener.c: test for accessibility implementation + * + */ + +#ifdef SPI_DEBUG +#include +#endif + +#include +#include +#include + +/* + * This pulls the definition for the BonoboObject (GType) + */ +#include "keystrokelistener.h" + +/* + * Our parent Gtk object type + */ +#define PARENT_TYPE BONOBO_OBJECT_TYPE + +/* + * A pointer to our parent object class + */ +static GObjectClass *keystroke_listener_parent_class; + +/* + * Implemented GObject::finalize + */ +static void +keystroke_listener_object_finalize (GObject *object) +{ +/* KeystrokeListener *keystroke_listener = KEYSTROKE_LISTENER (object); */ + +#ifdef SPI_DEBUG + fprintf(stderr, "keystroke_listener_object_finalize called\n"); +#endif + keystroke_listener_parent_class->finalize (object); +} + +/* + * CORBA Accessibility::KeystrokeListener::keyEvent method implementation + */ + +static void +impl_key_event (PortableServer_Servant servant, + const Accessibility_KeyStroke *key, + CORBA_Environment *ev) +{ +#ifdef SPI_DEBUG + if (ev->_major != CORBA_NO_EXCEPTION) { + fprintf(stderr, + ("Accessibility app error: exception during keystroke notification: %s\n"), + CORBA_exception_id(ev)); + exit(-1); + } +#endif +} + +static void +keystroke_listener_class_init (KeystrokeListenerClass *klass) +{ + GObjectClass * object_class = (GObjectClass *) klass; + POA_Accessibility_KeystrokeListener__epv *epv = &klass->epv; + keystroke_listener_parent_class = g_type_class_ref (BONOBO_OBJECT_TYPE); + + object_class->finalize = keystroke_listener_object_finalize; + + epv->keyEvent = impl_key_event; +} + +static void +keystroke_listener_init (KeystrokeListener *keystroke_listener) +{ +} + +GType +keystroke_listener_get_type (void) +{ + static GType type = 0; + + if (!type) { + static const GTypeInfo tinfo = { + sizeof (KeystrokeListenerClass), + (GBaseInitFunc) NULL, + (GBaseFinalizeFunc) NULL, + (GClassInitFunc) keystroke_listener_class_init, + (GClassFinalizeFunc) NULL, + NULL, /* class data */ + sizeof (KeystrokeListener), + 0, /* n preallocs */ + (GInstanceInitFunc) keystroke_listener_init, + NULL /* value table */ + }; + /* + * Here we use bonobo_type_unique instead of + * gtk_type_unique, this auto-generates a load of + * CORBA structures for us. All derived types must + * use bonobo_type_unique. + */ + type = bonobo_type_unique ( + PARENT_TYPE, + POA_Accessibility_KeystrokeListener__init, + NULL, + G_STRUCT_OFFSET (KeystrokeListenerClass, epv), + &tinfo, + "KeystrokeListener"); + } + + return type; +} + +KeystrokeListener * +keystroke_listener_new (void) +{ + KeystrokeListener *retval = + KEYSTROKE_LISTENER (g_object_new (keystroke_listener_get_type (), NULL)); + return retval; +} diff --git a/libspi/keystrokelistener.h b/libspi/keystrokelistener.h new file mode 100644 index 0000000..93a15a6 --- /dev/null +++ b/libspi/keystrokelistener.h @@ -0,0 +1,56 @@ +/* + * AT-SPI - Assistive Technology Service Provider Interface + * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap) + * + * Copyright 2001 Sun Microsystems Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef KEYSTROKE_LISTENER_H_ +#define KEYSTROKE_LISTENER_H_ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include +#include +#include + +#define KEYSTROKE_LISTENER_TYPE (keystroke_listener_get_type ()) +#define KEYSTROKE_LISTENER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), KEYSTROKE_LISTENER_TYPE, KeystrokeListener)) +#define KEYSTROKE_LISTENER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), KEYSTROKE_LISTENER_TYPE, KeystrokeListenerClass)) +#define IS_KEYSTROKE_LISTENER(o) (G_TYPE_CHECK__INSTANCE_TYPE ((o), KEYSTROKE_LISTENER_TYPE)) +#define IS_KEYSTROKE_LISTENER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), KEYSTROKE_LISTENER_TYPE)) + +typedef struct { + BonoboObject parent; +} KeystrokeListener; + +typedef struct { + BonoboObjectClass parent_class; + POA_Accessibility_KeystrokeListener__epv epv; +} KeystrokeListenerClass; + +GType keystroke_listener_get_type (void); +KeystrokeListener *keystroke_listener_new (void); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* KEYSTROKE_LISTENER_H_ */ diff --git a/registryd/deviceeventcontroller.c b/registryd/deviceeventcontroller.c new file mode 100644 index 0000000..33adf5d --- /dev/null +++ b/registryd/deviceeventcontroller.c @@ -0,0 +1,178 @@ +/* + * AT-SPI - Assistive Technology Service Provider Interface + * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap) + * + * Copyright 2001 Sun Microsystems Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * listener.c: test for accessibility implementation + * + */ + +#ifdef SPI_DEBUG +#include +#endif + +#include +#include +#include + +/* + * This pulls the definition for the BonoboObject (GType) + */ +#include "deviceeventcontroller.h" + +/* + * Our parent Gtk object type + */ +#define PARENT_TYPE BONOBO_OBJECT_TYPE + +/* + * A pointer to our parent object class + */ +static GObjectClass *device_event_controller_parent_class; + +/* + * Implemented GObject::finalize + */ +static void +device_event_controller_object_finalize (GObject *object) +{ + +#ifdef SPI_DEBUG + fprintf(stderr, "device_event_controller_object_finalize called\n"); +#endif + device_event_controller_parent_class->finalize (object); +} + +/* + * CORBA Accessibility::DeviceEventController::registerKeystrokeListener + * method implementation + */ +static void +impl_register_keystroke_listener (PortableServer_Servant servant, + const Accessibility_KeystrokeListener l, + CORBA_Environment *ev) +{ +#ifdef SPI_DEBUG + fprintf (stderr, "registering keystroke listener %p\n", l); +#endif +} +/* + * CORBA Accessibility::DeviceEventController::registerMouseListener + * method implementation + */ +/* +static void +impl_register_mouse_listener (PortableServer_Servant servant, + const Accessibility_MouseListener *l, + CORBA_Environment *ev) +{ +#ifdef SPI_DEBUG + fprintf (stderr, "registering mouse listener %p\n", l); +#endif +} +*/ + +/* + * CORBA Accessibility::DeviceEventController::registerKeystrokeListener + * method implementation + */ +static void +impl_generate_key_event (PortableServer_Servant servant, + const CORBA_long keyEventID, + CORBA_Environment *ev) +{ +#ifdef SPI_DEBUG + fprintf (stderr, "synthesizing keystroke %ld\n", keyEventID); +#endif +} + +/* + * CORBA Accessibility::DeviceEventController::generateMouseEvent + * method implementation + */ +static void +impl_generate_mouse_event (PortableServer_Servant servant, + const CORBA_long x, + const CORBA_long y, + const CORBA_char * eventName, + CORBA_Environment *ev) +{ +#ifdef SPI_DEBUG + fprintf (stderr, "generating mouse %s event at %ld, %ld\n", eventName, x, y); +#endif +} + +static void +device_event_controller_class_init (DeviceEventControllerClass *klass) +{ + GObjectClass * object_class = (GObjectClass *) klass; + POA_Accessibility_DeviceEventController__epv *epv = &klass->epv; + device_event_controller_parent_class = g_type_class_ref (BONOBO_OBJECT_TYPE); + + object_class->finalize = device_event_controller_object_finalize; + + epv->registerKeystrokeListener = impl_register_keystroke_listener; +/* epv->registerMouseListener = impl_register_mouse_listener; */ + epv->generateKeyEvent = impl_generate_key_event; + epv->generateMouseEvent = impl_generate_mouse_event; +} + +static void +device_event_controller_init (DeviceEventController *device_event_controller) +{ +} + +GType +device_event_controller_get_type (void) +{ + static GType type = 0; + + if (!type) { + static const GTypeInfo tinfo = { + sizeof (DeviceEventControllerClass), + (GBaseInitFunc) NULL, + (GBaseFinalizeFunc) NULL, + (GClassInitFunc) device_event_controller_class_init, + (GClassFinalizeFunc) NULL, + NULL, /* class data */ + sizeof (DeviceEventController), + 0, /* n preallocs */ + (GInstanceInitFunc) device_event_controller_init, + NULL /* value table */ + }; + /* + * Here we use bonobo_type_unique instead of + * gtk_type_unique, this auto-generates a load of + * CORBA structures for us. All derived types must + * use bonobo_type_unique. + */ + type = bonobo_type_unique ( + PARENT_TYPE, + POA_Accessibility_DeviceEventController__init, + NULL, + G_STRUCT_OFFSET (DeviceEventControllerClass, epv), + &tinfo, + "DeviceEventController"); + } + + return type; +} + diff --git a/registryd/deviceeventcontroller.h b/registryd/deviceeventcontroller.h new file mode 100644 index 0000000..60255da --- /dev/null +++ b/registryd/deviceeventcontroller.h @@ -0,0 +1,54 @@ +/* + * AT-SPI - Assistive Technology Service Provider Interface + * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap) + * + * Copyright 2001 Sun Microsystems Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef DEVICE_EVENT_CONTROLLER_H_ +#define DEVICE_EVENT_CONTROLLER_H_ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include +#include + +#define DEVICE_EVENT_CONTROLLER_TYPE (device_event_controller_get_type ()) +#define DEVICE_EVENT_CONTROLLER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), DEVICE_EVENT_CONTROLLER_TYPE, DeviceEventController)) +#define DEVICE_EVENT_CONTROLLER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), DEVICE_EVENT_CONTROLLER_TYPE, DeviceEventControllerClass)) +#define IS_DEVICE_EVENT_CONTROLLER(o) (G_TYPE_CHECK__INSTANCE_TYPE ((o), DEVICE_EVENT_CONTROLLER_TYPE)) +#define IS_DEVICE_EVENT_CONTROLLER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), DEVICE_EVENT_CONTROLLER_TYPE)) + +typedef struct { + BonoboObject parent; +} DeviceEventController; + +typedef struct { + BonoboObjectClass parent_class; + POA_Accessibility_DeviceEventController__epv epv; +} DeviceEventControllerClass; + +GType device_event_controller_get_type (void); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* DEVICEEVENTCONTROLLER_H_ */ -- 2.7.4