00001 #ifndef EventTargetGroupPOOL_H_
00002 #define EventTargetGroupPOOL_H_
00003
00004 #include "EvSimObject.h"
00005
00006 #include <cstring>
00007
00008 #include <list>
00009 using std::list;
00010
00011 #include <vector>
00012 using std::vector;
00013
00014 #include <utility>
00015 using std::pair;
00016
00017
00018 class EventTargetGroupPool
00019 {
00020 public:
00021
00022 struct EventTarget
00023 {
00024 EventTarget( ): receiver(NULL), port(0) {};
00025 EventTarget(EvSimObject * receiver, port_id_t p): receiver(receiver), port(p) {};
00026
00027 EvSimObject * receiver;
00028 port_id_t port;
00029
00030 };
00031
00032 typedef list<EventTarget> EventTargetContainer;
00033 typedef EventTargetContainer::const_iterator const_iterator ;
00034
00035 EventTargetGroupPool();
00036
00037 virtual ~EventTargetGroupPool();
00038
00039 event_target_group_id_t createEventTargetGroup( EvSimObject* receiver, port_id_t port );
00040
00041 event_target_group_id_t addEventTarget( event_target_group_id_t group, EvSimObject* receiver, port_id_t port );
00042
00043 inline const_iterator begin(event_target_group_id_t group)
00044 {
00045 return pool[group].begin();
00046 }
00047
00048 inline const_iterator end(event_target_group_id_t group)
00049 {
00050 return pool[group].end();
00051 }
00052
00053 inline size_t size(event_target_group_id_t group)
00054 {
00055 return pool[group].size();
00056 }
00057
00058 unsigned numETGroups()
00059 {
00060 return pool.size();
00061 };
00062
00063
00064 protected:
00065 vector<EventTargetContainer> pool;
00066
00067 };
00068
00069 #endif