00001 /*-*-c++-*-***************************************************************** 00002 ** 00003 ------------------- 00004 begin : 00005 copyright : (C) 2004 by Christian Stimming 00006 email : stimming@tuhh.de 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * * 00011 * This library is free software; you can redistribute it and/or * 00012 * modify it under the terms of the GNU Lesser General Public * 00013 * License as published by the Free Software Foundation; either * 00014 * version 2.1 of the License, or (at your option) any later version. * 00015 * * 00016 * This library is distributed in the hope that it will be useful, * 00017 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 00019 * Lesser General Public License for more details. * 00020 * * 00021 * You should have received a copy of the GNU Lesser General Public * 00022 * License along with this library; if not, write to the Free Software * 00023 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * 00024 * MA 02111-1307 USA * 00025 * * 00026 ***************************************************************************/ 00027 00031 #ifndef _MIMOLIB_MULTIPLEXER_H 00032 #define _MIMOLIB_MULTIPLEXER_H 00033 00034 #include <vector> 00035 #include <simthetic/basicdevice.h> 00036 00037 namespace mimo { 00038 00039 template<class devT, 00040 class seqT_in, class seqT_in_internal, 00041 class seqT_out_internal, class seqT_out> 00042 class Vectorize : public simth::Device 00043 { 00044 typedef std::vector<devT*> devlist_t; 00045 00046 // The number of blocks 00047 unsigned nr_blocks; 00048 00049 // The list of devices owned by this block. 00050 devlist_t devlist; 00051 00052 // The deviceID for devlist[0] and consecutive ones. 00053 unsigned startDevId; 00054 00055 public: 00056 Vectorize(int deviceID, simth::DeviceSystemIntf* system, 00057 const simth::PropertyList& pl); 00058 virtual void updateInputLengths(); 00059 virtual void updateOutputLengths(); 00060 virtual void acceptNewData(int interfaceID); 00061 virtual void process(); 00062 virtual void startOfSimulation(); 00063 }; 00064 00065 } // namespace 00066 00067 #endif // _MIMOLIB_MULTIPLEXER_H