IT++ Logo
events.cpp
Go to the documentation of this file.
1
30
31
32namespace itpp
33{
34
35Ttype Event_Queue::t = 0;
36
37unsigned long long int Base_Event::global_id = 0;
38
39std::priority_queue < Base_Event*,
40std::deque<Base_Event*, std::allocator<Base_Event*> >,
41Compare_Base_Event_Times > Event_Queue::event_queue;
42
43bool Event_Queue::keep_running = false;
44
46{
47 e->expire_t = t + e->delta_t;
48 event_queue.push(e);
49}
50
51void Event_Queue::_run()
52{
53 while (!event_queue.empty() && keep_running) {
54 Base_Event* e = event_queue.top(); // Next event to process.
55 event_queue.pop(); // Remove event.
56
57 if (e->active) { // Only process active events.
58 t = e->expire_t; // Update current time.
59 e->exec(); // Execute the event.
60 }
61
62 delete e; // This event is history!
63 }
64
65}
66
68{
69 keep_running = true;
70 _run();
71}
72
74{
75 keep_running = false;
76}
77
79{
80 stop();
81 Base_Event* e;
82
83 while (!event_queue.empty()) {
84 e = event_queue.top();
85 delete e;
86 event_queue.pop();
87 }
88
89 t = 0;
90}
91
92// void Event_Queue::cancel_all(BaseSignal *s){
93
94// }
95
96
97} // namespace itpp
Base Event Class.
Definition: events.h:69
bool active
ADD DOCUMENTATION HERE.
Definition: events.h:100
Ttype delta_t
ADD DOCUMENTATION HERE.
Definition: events.h:96
static unsigned long long int global_id
ADD DOCUMENTATION HERE.
Definition: events.h:104
virtual void exec(void)=0
ADD DOCUMENTATION HERE.
Ttype expire_t
ADD DOCUMENTATION HERE.
Definition: events.h:98
static void start()
Start executing events.
Definition: events.cpp:67
static void add(Base_Event *e)
Add event to Queue.
Definition: events.cpp:45
static void stop()
Stop execution of events.
Definition: events.cpp:73
static void clear()
Remove all events.
Definition: events.cpp:78
Definitions of an event-based simulation class.
itpp namespace
Definition: itmex.h:37
double Ttype
64-bit floating point time
Definition: events.h:54
SourceForge Logo

Generated on Tue Jan 24 2023 00:00:00 for IT++ by Doxygen 1.9.5