Skip to content
Snippets Groups Projects
Commit 728ea54a authored by Jens Nolte's avatar Jens Nolte
Browse files

Add callback template

parent c7e2e46e
No related branches found
No related tags found
1 merge request!16Merge dev branch into master
#pragma once
#include <functional>
namespace qthing {
template <typename... Args>
class Callback {
private:
using CallbackType = std::function<void(Args...)>;
mutable CallbackType callback = NULL;
public:
Callback(){};
void add(CallbackType newCallback) const {
if (callback == NULL) {
callback = newCallback;
} else {
auto oldCallback = callback;
callback = [newCallback, oldCallback](Args&&... args) {
oldCallback(std::forward<Args>(args)...);
newCallback(std::forward<Args>(args)...);
};
}
}
void operator()(Args&&... args) const {
if (callback != NULL) {
callback(std::forward<Args>(args)...);
}
}
};
} // namespace qthing
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment