• Main Page
  • Classes
  • Files
  • File List

PropagatedUpdateList.h

00001 #ifndef PROPAGATEDUPDATELIST_H_
00002 #define PROPAGATEDUPDATELIST_H_
00003 
00004 #include "globals.h"
00005 
00006 #include "EvSimObjectPool.h"
00007 #include "EventTargetGroupPool.h"
00008 #include "UpdateLinksMap.h"
00009 #include "EvSimObject.h"
00010 
00011 typedef vector<update_id_t> UpdateIDVector;
00012 
00013 struct UpdateTarget
00014 {
00015         UpdateTarget(EvSimObject *object,  UpdateIDVector * update_id_vec)
00016             : object(object),  update_id_vec(update_id_vec) {};
00017 
00018         UpdateTarget(EvSimObject *object, bool is_single_update_id, update_id_t update_id, UpdateIDVector *update_id_vec)
00019                 : object(object), is_single_update_id(is_single_update_id)
00020         {
00021                 if (is_single_update_id)
00022                         this->update_id = update_id;
00023                 else
00024                         this->update_id_vec = update_id_vec;
00025         }
00026 
00027         ~UpdateTarget() {}
00028 
00029         EvSimObject * object;
00030         bool is_single_update_id;
00031         union {
00032                 UpdateIDVector* update_id_vec;
00033                 update_id_t update_id;
00034         };
00035 };
00036 
00037 
00038 class PropagatedUpdateList {
00039 public:
00040         typedef vector<UpdateTarget>::const_iterator const_iterator;
00041 
00042         PropagatedUpdateList(EventTargetGroupPool & etgpool, UpdateLinksMap & upd_links_map, EvSimObjectPool & obj_pool)
00043         : etgpool(etgpool), upd_links_map(upd_links_map), obj_pool(obj_pool)
00044         {}
00045 
00046 
00047         ~PropagatedUpdateList();
00048 
00049         void prepare();
00050 
00051         const_iterator begin(event_target_group_id_t etg_id) {
00052                 return update_list[etg_id].begin();
00053         }
00054 
00055         const_iterator end(event_target_group_id_t etg_id) {
00056                 return update_list[etg_id].end();
00057         }
00058 
00059 
00060 protected:
00061 
00062         void createUpdateListForETG(event_target_group_id_t etg_id);
00063 
00064         void printUpdateLinksMap();
00065         void printUpdateList();
00066 
00067 
00068         EventTargetGroupPool & etgpool;
00069         UpdateLinksMap & upd_links_map;
00070         EvSimObjectPool & obj_pool;
00071 
00072         vector< vector< UpdateTarget > > update_list;
00073 };
00074 
00075 #endif /* PROPAGATEDUPDATELIST_H_ */

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