GUI
EventQueue.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017 by Maciej Wiecierzewski
3  */
4 
5 #ifndef EVENTQUEUE_H
6 #define EVENTQUEUE_H
7 
8 #include <functional>
9 #include <utility>
10 #include <queue>
11 
12 #include "Event.h"
13 #include "EventEmitter.h"
14 #include "events.h"
15 
16 namespace gui
17 {
18 
20 
22 {
23  public:
24  EventQueue() {};
26 
33  void addToQueue(Event&& event, EventListener eventListener);
34 
40  bool empty();
41 
48  Event getNextEvent(EventListener &eventListener);
49 
50  protected:
51 
52  private:
53 
55 
56  struct Entry
57  {
60 
61  Entry(Event& event, EventListener& eventListener) :
62  event(std::move(event)),
63  eventListener(eventListener)
64  {
65  }
66 
67  Entry(Entry&& other) :
68  event(std::move(other.event)),
69  eventListener(std::move(other.eventListener))
70  {
71  }
72 
73  Entry(Entry&) = delete;
74  };
75 
76  std::queue<Entry> queue;
77 };
78 
79 }
80 
81 #endif // EVENTQUEUE_H