• Main Page
  • Classes
  • Files
  • File List

ProjectedEventSender.h

00001 #ifndef PROJECTEDEVENTSENDER_H_
00002 #define PROJECTEDEVENTSENDER_H_
00003 
00004 #include "globals.h"
00005 #include "EvSimObject.h"
00006 #include "SimContext.h"
00007 #include "DirectEventSender.h"
00008 
00009 #include "evesim_hash.h"
00010 
00011 #ifndef SWIG
00012 
00013 #include <utility>
00014 using std::make_pair;
00015 
00016 #endif
00017 
00018 class ProjectedOutputPortIterator;
00019 
00020 
00021 class ProjectedEventSender : public DirectEventSender {
00022 public:
00023         virtual ~ProjectedEventSender();
00024 
00025         virtual global_proj_out_port_id_t getProjOutPortGlobalID(port_id_t port_id) const = 0;
00026 
00027         virtual void setFirstProjOutPortGlobalID(global_proj_out_port_id_t port_id) = 0;
00028 
00029         virtual void changeProjectedEventTime(SimContext &ai, port_id_t port_id,Time new_time);
00030 
00031         virtual void setupProjectedOutPorts() = 0;
00032 
00033         virtual ProjectedOutputPortIterator getProjectedPortIterator() = 0;
00034 
00035         virtual pair<port_id_t, global_proj_out_port_id_t> getFirstProjectedPortInfo() = 0;
00036 
00037 };
00038 
00039 
00040 
00041 
00042 class SingleOutputProjectedEventSender : public ProjectedEventSender {
00043 public:
00044         virtual ~SingleOutputProjectedEventSender();
00045 
00046         virtual global_proj_out_port_id_t getProjOutPortGlobalID(port_id_t port_id) const;
00047 
00048         virtual void setFirstProjOutPortGlobalID(global_proj_out_port_id_t port_id);
00049 
00050         virtual ProjectedOutputPortIterator getProjectedPortIterator();
00051 
00052         virtual pair<port_id_t, global_proj_out_port_id_t> getFirstProjectedPortInfo();
00053 
00054         virtual void setupProjectedOutPorts() {};
00055 
00056 protected:
00057         global_proj_out_port_id_t first_proj_port_global_id;
00058 };
00059 
00060 
00061 class MultiOutputProjectedEventSender : public ProjectedEventSender {
00062 
00063 public:
00064         virtual ~MultiOutputProjectedEventSender() {};
00065 
00066         virtual global_proj_out_port_id_t getProjOutPortGlobalID(port_id_t port_id) const;
00067 
00068         virtual void setFirstProjOutPortGlobalID(global_proj_out_port_id_t port_id);
00069 
00070         virtual void setupProjectedOutPorts();
00071 
00072         virtual ProjectedOutputPortIterator getProjectedPortIterator();
00073 
00074         virtual pair<port_id_t, global_proj_out_port_id_t> getFirstProjectedPortInfo();
00075 
00076 protected:
00077         typedef hash_map< port_id_t, global_proj_out_port_id_t, evesim::hash<port_id_t> > ProjOutPortsGlobalIDMap;
00078 
00079         friend class ProjectedOutputPortIterator;
00080 
00081         ProjOutPortsGlobalIDMap proj_out_ports_global_ids;
00082 };
00083 
00084 
00085 #endif /* PROJECTEDEVENTSENDER_H_ */

Generated on Wed Sep 18 2013 11:25:40 for NEVESIM by  doxygen 1.7.1