/******************************************************************* * * DESCRIPTION: class Coupled * * AUTHOR: Amir Barylko & Jorge Beyoglonian * VERSION 2: Daniel Rodriguez * * EMAIL: mailto://amir@dc.uba.ar * mailto://jbeyoglo@dc.uba.ar * mailto://drodrigu@dc.uba.arName * * DATE: 27/6/1998 * DATE: 27/2/1999 (v2) * *******************************************************************/ /** include files **/ #include #include "coupled.h" // base header #include "procadm.h" // SingleProcessorAdmin #include "modeladm.h" /** public functions **/ /******************************************************************* * Function Name: addModel * Description: add a model to the list of children ********************************************************************/ Model &Coupled::addModel( Model &mod ) { // mod.parentId( id() ); mod.parent(this); /* * ModelList::iterator cursor = find_if( childs.begin(), childs.end(), bind2nd( greater(), mod.id() ) ); childs.insert( cursor, mod.id() ); */ DModelList::iterator childCursor ; for (childCursor = dchilds.begin(); childCursor != dchilds.end() ; childCursor++) if ( (*childCursor)->id() == mod.id() ) break; if (childCursor == dchilds.end()) dchilds.push_back(&mod); // Rami // dependents[mod.id()] = Time::Inf; return *this; } /******************************************************************* * Function Name: addInfluence * Description: add a link between two ports ********************************************************************/ Model &Coupled::addInfluence( const string &sourceName, const string &sourcePort, const string &destName, const string &destPort) { //Rami // Port &port1( SingleProcessorAdmin::Instance().processor( sourceName ).model().port( sourcePort ) ); Port &port1( SingleModelAdm::Instance().model( sourceName ).port( sourcePort )); //Rami // Port &port2( SingleProcessorAdmin::Instance().processor( destName ).model().port( destPort ) ); Port &port2( SingleModelAdm::Instance().model( destName ).port( destPort ) ) ; port1.addInfluence( port2 ); return *this; } Processor &Coupled::createProcessor() { return SingleProcessorAdmin::Instance().generateProcessor(this, localProc()); }