Planeshift

genericevent.h

Go to the documentation of this file.
00001 /*
00002  * genericevent.h
00003  *
00004  * Copyright (C) 2006 Atomic Blue ([email protected], http://www.atomicblue.org)
00005  *
00006  *
00007  * This program is free software; you can redistribute it and/or
00008  * modify it under the terms of the GNU General Public License
00009  * as published by the Free Software Foundation (version 2 of the License)
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  * GNU General Public License for more details.
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program; if not, write to the Free Software
00016  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00017  *
00018  */
00019 
00020 #ifndef _PS_GENERIC_EVENT_HANDLER_
00021 #define _PS_GENERIC_EVENT_HANDLER_
00022 
00023 #include <csutil/scf_implementation.h>
00024 #include <iutil/eventh.h>
00025 
00037 #define DeclareGenericEventHandler(handlerName,parentType,eventName)                \
00038 class handlerName : public scfImplementation1<handlerName,iEventHandler>            \
00039 {                                                                                   \
00040 private:                                                                            \
00041     parentType* parent;                                                             \
00042                                                                                     \
00043 public:                                                                             \
00044     handlerName(parentType* p)                                                      \
00045         : scfImplementationType(this), parent(p) {}                                 \
00046                                                                                     \
00047     virtual ~handlerName() {}                                                       \
00048                                                                                     \
00049     virtual bool HandleEvent(iEvent& event)                                         \
00050     {                                                                               \
00051         return parent->HandleEvent(event);                                          \
00052     }                                                                               \
00053                                                                                     \
00054     CS_EVENTHANDLER_NAMES(eventName);                                               \
00055     CS_EVENTHANDLER_NIL_CONSTRAINTS;                                                \
00056 }
00057 
00060 #endif
00061