00001
00002
00003
00004
00005
00006
00007
00008
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
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
00045 virtual const SignalTypeRef type();
00046
00047
00048 virtual void pushScratch(const BufferData &data);
00049 virtual void forgetScratch(const BufferData &data);
00050
00051
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