move and copy constructors
This commit is contained in:
parent
5a2c9d9b1a
commit
dd3b2a4b9a
1 changed files with 24 additions and 4 deletions
|
|
@ -33,6 +33,8 @@ namespace Crafter {
|
||||||
public:
|
public:
|
||||||
int priority;
|
int priority;
|
||||||
EventListener();
|
EventListener();
|
||||||
|
EventListener(EventListener&) = delete;
|
||||||
|
EventListener& operator=(EventListener&) = delete;
|
||||||
void SetEvent(Event<T>* eventToListenTo, std::function<void(T)> function, int priority = 0);
|
void SetEvent(Event<T>* eventToListenTo, std::function<void(T)> function, int priority = 0);
|
||||||
EventListener(Event<T>* eventToListenTo, std::function<void(T)> function, int priority = 0);
|
EventListener(Event<T>* eventToListenTo, std::function<void(T)> function, int priority = 0);
|
||||||
~EventListener();
|
~EventListener();
|
||||||
|
|
@ -45,6 +47,8 @@ namespace Crafter {
|
||||||
public:
|
public:
|
||||||
int priority;
|
int priority;
|
||||||
EventListener();
|
EventListener();
|
||||||
|
EventListener(EventListener&) = delete;
|
||||||
|
EventListener& operator=(EventListener&) = delete;
|
||||||
void SetEvent(Event<void>* eventToListenTo, std::function<void()> function, int priority = 0);
|
void SetEvent(Event<void>* eventToListenTo, std::function<void()> function, int priority = 0);
|
||||||
EventListener(Event<void>* eventToListenTo, std::function<void()> function, int priority = 0);
|
EventListener(Event<void>* eventToListenTo, std::function<void()> function, int priority = 0);
|
||||||
~EventListener();
|
~EventListener();
|
||||||
|
|
@ -56,10 +60,18 @@ namespace Crafter {
|
||||||
class Event {
|
class Event {
|
||||||
public:
|
public:
|
||||||
std::map<int, std::vector<EventListener<T>*>> listeners;
|
std::map<int, std::vector<EventListener<T>*>> listeners;
|
||||||
|
Event(Event&& other) : listeners(std::move(other.listeners)) {
|
||||||
|
for (const auto& listenerSlice : listeners) {
|
||||||
|
for (const auto& listener : listenerSlice.second) {
|
||||||
|
listener->eventToListenTo = this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Event(Event&) = delete;
|
||||||
|
Event& operator=(Event&) = delete;
|
||||||
~Event() {
|
~Event() {
|
||||||
for (const auto& listenerSlice : listeners) {
|
for (const auto& listenerSlice : listeners) {
|
||||||
const std::vector<EventListener<T>*> slice = listenerSlice.second;
|
for (const auto& listener : listenerSlice.second) {
|
||||||
for (const auto& listener : slice) {
|
|
||||||
listener->eventToListenTo = nullptr;
|
listener->eventToListenTo = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -80,8 +92,7 @@ namespace Crafter {
|
||||||
|
|
||||||
void Invoke(T data) {
|
void Invoke(T data) {
|
||||||
for (const auto& listenerSlice : listeners) {
|
for (const auto& listenerSlice : listeners) {
|
||||||
const std::vector<EventListener<T>*> slice = listenerSlice.second;
|
for (const auto& listener : listenerSlice.second) {
|
||||||
for (const auto& listener : slice) {
|
|
||||||
listener->function(data);
|
listener->function(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -117,6 +128,15 @@ namespace Crafter {
|
||||||
class Event<void> {
|
class Event<void> {
|
||||||
public:
|
public:
|
||||||
std::map<int, std::vector<EventListener<void>*>> listeners;
|
std::map<int, std::vector<EventListener<void>*>> listeners;
|
||||||
|
Event(Event&& other) : listeners(std::move(other.listeners)) {
|
||||||
|
for (const auto& listenerSlice : listeners) {
|
||||||
|
for (const auto& listener : listenerSlice.second) {
|
||||||
|
listener->eventToListenTo = this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Event(Event&) = delete;
|
||||||
|
Event& operator=(Event&) = delete;
|
||||||
~Event() {
|
~Event() {
|
||||||
for (const auto& listenerSlice : listeners) {
|
for (const auto& listenerSlice : listeners) {
|
||||||
const std::vector<EventListener<void>*> slice = listenerSlice.second;
|
const std::vector<EventListener<void>*> slice = listenerSlice.second;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue