/** * \file dispatcher.cpp * * \brief Stadardimplementation der virtuellen Member des Dispatcher-Managers. * * Für eine detailierte Beschreibung von Dispatcher und * Dispatcher-Manager schauen Sie bitte unter \ref dispatcher.h * * \author Georg Steffers * * \date 04.12.2003 * * \version ..2002 (Georg Steffers): erste funktionierende Implementation * \version 04.12.2003 (Georg Steffers): beginn der Dokumentation via doxygen */ /* * Copyright (C)2003 Georg Steffers * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ using namespace std; #include #include "dispatcher.h" disp_manager::disp_manager(dispatcher* d) { disp_count=0; disp=NULL; if(d!=NULL) { disp=new dispatcher*[1]; disp[0]=d; disp_count++; } } dispatcher*& disp_manager::operator[](unsigned index) { if(index+1>disp_count) { dispatcher** disp_tmp=new dispatcher*[index+1]; memcpy(disp_tmp, disp, sizeof(dispatcher*)*disp_count); delete [] disp; disp=disp_tmp; disp_count=index+1; } return disp[index]; } void disp_manager::start(void) { run=true; while(run) do_once(); } void disp_manager::do_once(void) { for(int i=0; ie_src) disp[i]->go(); }