splitter.h

00001 /***************************************************************************
00002  *   Copyright (C) 2003 by Gav Wood                                        *
00003  *   gav@cs.york.ac.uk                                                     *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU Library General Public License as       *
00007  *   published by the Free Software Foundation; either version 2 of the    *
00008  *   License, or (at your option) any later version.                       *
00009  ***************************************************************************/
00010 
00011 #ifndef _GEDDEI_SPLITTER_H
00012 #define _GEDDEI_SPLITTER_H
00013 
00014 #include <qptrlist.h>
00015 
00016 #ifdef __GEDDEI_BUILD
00017 #include "lxconnection.h"
00018 #include "lxconnectionreal.h"
00019 #else
00020 #include <geddei/lxconnection.h>
00021 #include <geddei/lxconnectionreal.h>
00022 #endif
00023 using namespace Geddei;
00024 
00025 namespace Geddei
00026 {
00027 
00028 class Processor;
00029 
00035 class Splitter: public LxConnection, public Source
00036 {
00037  //* Reimplementations from Source
00038  virtual void checkExit();
00039  virtual const bool confirmTypes();
00040  virtual void doRegisterOut(LxConnection *me, const uint port);
00041  virtual void undoRegisterOut(LxConnection *me, const uint port);
00042  virtual const Processor *processor() const { return dynamic_cast<Processor *>(theSource); }
00043 
00044  //* Reimplementations from Connection
00045  virtual const SignalTypeRef type();
00046 
00047  //* Reimplementations from ScratchOwner, LxConnection
00048  virtual void pushScratch(const BufferData &data);
00049  virtual void forgetScratch(const BufferData &data);
00050 
00051  //* Reimplementations from LxConnection
00052  virtual const bool waitUntilReady();
00053  virtual void setType(const SignalType *type);
00054  virtual void resetType();
00055  virtual void sourceStopping();
00056  virtual void sourceStopped();
00057  virtual void reset();
00058  virtual BufferData makeScratchElements(const uint elements, bool autoPush = false);
00059  virtual void push(const BufferData &data);
00060  virtual void pushPlunger();
00061  virtual void startPlungers();
00062  virtual void plungerSent();
00063  virtual void noMorePlungers();
00064  virtual const uint maximumScratchElements(const uint minimum = 1);
00065  virtual const uint maximumScratchElementsEver();
00066  virtual void enforceMinimum(const uint elements);
00067 
00068  QPtrList<LxConnection> theConnections;
00069 
00070 public:
00071  Splitter(Processor *source, const uint sourceIndex);
00072  virtual ~Splitter();
00073 };
00074 
00075 };
00076 
00077 #endif

Generated on Fri Nov 10 21:58:26 2006 for Exscalibar by  doxygen 1.5.1