// // Programmer: Craig Stuart Sapp // Creation Date: Fri Nov 1 23:35:02 PST 1996 // Last Modified: Fri Nov 1 23:35:02 PST 1996 // Filename: ...sig/maint/code/Action/Action.cpp // Web Address: http://sig.sapp.org/src/sig/Action.cpp // Documentation: http://sig.sapp.org/doc/classes/Action // Syntax: C++ // #include "Action.h" #include "Filter.h" #ifndef OLDCPP #include using namespace std; #else #include #endif ////////////////////////////// // // Action::Action -- // Action::Action(void) { ticker = 0; } ////////////////////////////// // // Action::~Action -- // Action::~Action() { } ////////////////////////////// // // Action::freezeState -- // void Action::freezeState(Signal& sig) { signalState.setSize(0); recurseSetState(&sig); } ////////////////////////////// // // Action::recursiveTick -- // default value: numTicks = 1 // void Action::recursiveTick(Signal& sig, long numTicks) { for (int i=0; i=0; j--) { signalState[j]->action(); } } } ////////////////////////////////////////////////////////////////////////////// // // Private functions // ////////////////////////////// // // Action::recurseSetState -- recurses through a signal stream storing // generator and filter pointers in an array in the correct order // (which is in reverse ticking order). // void Action::recurseSetState(Signal *sig) { int i; // check if signal has already been counted for (i=0; igetType()) { case GENERATOR: return; break; case FILTER: for (i=0; i<((Filter*)sig)->inputs.getSize(); i++) { if (((Filter*)sig)->inputs.connectionQ(i)) { recurseSetState(((Filter*)sig)->inputs.signal(i)); } } break; default: cerr << "Unknown signal type: " << sig->getType() << " for signal " << sig->getName() << endl; exit(1); } } // md5sum: c321175c4011365cc76b0875586c62a7 Action.cpp [20010708]