Planeshift
|
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