/******************************************************************* * * DESCRIPTION: class Port * * AUTHOR: Amir Barylko & Jorge Beyoglonian * Version 2: Daniel A. Rodriguez * Version 3: Alejandro Troccoli * EMAIL: mailto://amir@dc.uba.ar * mailto://jbeyoglo@dc.uba.ar * mailto://drodrigu@dc.uba.ar * * DATE: 27/6/1998 * DATE: 28/2/1999 (v2) * DATE: 25/1/2001 (v3) *******************************************************************/ #ifndef __PORT_H #define __PORT_H /** include files **/ #include // Template list #include // class string #include "modelid.h" // class ModelId #include "pmodeladm.h" //class SingleParallelModelAdmin /** foward declarations **/ class Port; class Coupled ; /** definitions **/ typedef Port Influence ; typedef const Influence* CPInf ; //jacky: Constant Pointer to Port typedef list InfluenceList; // jacky: a list of influences (Constant Pointer to Port) typedef int PortId ; class Port { public: Port( const string & , const ModelId & ) ; // Default constructor const InfluenceList &influences() const { return influenceList; } const string &name() const { return pname; } Port &name( const string & ) ; const PortId &id() const { return pid; } const ModelId &modelId() const { return mid; } const Model &model() const { return SingleParallelModelAdm::Instance().model(mid); } bool operator ==( const Port &port ) const // Equality operator { return pid == port.id(); } const string asString() const { return pname; } static int newPortId(); Port &addInfluence( const Influence & ); protected: Port(const Port&); // Copy constructor Port& operator=( const Port& ); // Assignment operator private: InfluenceList influenceList; //jacky: a list of constant ptrs to the ports that will receive msgs from this port PortId pid ; //jacky: port id string pname ; //jacky: port name const ModelId& mid ; //jacky: id of the model to which this port belongs static int idCount ; //jacky: assign a unique id for each port in the simulation }; // class Port #endif //__PORT_H