StaticFlowControl.cxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "StaticFlowControl.hxx"
00024 #include "Processing.hxx"
00025 #include "OutPort.hxx"
00026 #include "InPort.hxx"
00027 #include "Network.hxx"
00028
00029 namespace CLAM
00030 {
00031
00032 StaticFlowControl::StaticFlowControl( int frameSize, StaticCycle& c )
00033 : FlowControl (frameSize)
00034 {
00035 SetCycle(c);
00036 }
00037
00038 void StaticFlowControl::SetCycle(StaticCycle& c )
00039 {
00040 mCycleDef = c;
00041 }
00042
00043
00044 void StaticFlowControl::Do()
00045 {
00046 std::list<Processing*>::iterator next;
00047 if(mCycle.size()==0)
00048 AddProcessingsToDo(mCycle);
00049 for(next=mCycle.begin(); next!=mCycle.end(); next++)
00050 {
00051 (*next)->Do();
00052 }
00053 }
00054
00055 void StaticFlowControl::AddProcessingsToDo(std::list<Processing*> & toDo )
00056 {
00057 int i;
00058 std::list<StaticCycleBranch>::iterator branch;
00059 std::list<std::string>::iterator processing;
00060 for(branch=mCycleDef.begin(); branch!=mCycleDef.end(); branch++)
00061 {
00062 for(i=0;i<(*branch).nLoops;i++)
00063 {
00064 for(processing=(*branch).processingNames.begin(); processing!=(*branch).processingNames.end(); processing++)
00065 {
00066 toDo.push_back(&mNetwork->GetProcessing((*processing)));
00067 }
00068 }
00069 }
00070 }
00071
00072 };
00073
00074