Adds further ext deps as-is binaries copies from customers env.
Qt6 Migration CI / migrate (push) Canceled after 0s
Qt6 Migration CI / migrate (push) Canceled after 0s
This commit is contained in:
3700 files changed
+2132394
No files matched your search
@@ -0,0 +1,75 @@
|
||||
#pragma once
|
||||
|
||||
#include <functional>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
|
||||
|
||||
namespace ddkit {
|
||||
namespace utils {
|
||||
namespace callback {
|
||||
|
||||
template<class Actor, typename... Args>
|
||||
class Wrapper;
|
||||
|
||||
class Base {
|
||||
|
||||
public:
|
||||
virtual ~Base(){}
|
||||
|
||||
template<class Actor, typename... Args>
|
||||
void tryToInvoke(void (Actor::*func)(Args...), Args&&... args) {
|
||||
auto cb = dynamic_cast<Wrapper<Actor, Args...>*>(this);
|
||||
if(cb && cb->isFunction(func)){
|
||||
cb->invoke(args...);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
template<class Actor, typename... Args>
|
||||
class Wrapper : public Base {
|
||||
|
||||
public:
|
||||
using ActorType = Actor;
|
||||
using CallbackType = std::function<void(Args...)>;
|
||||
using ActorFunctionType = void (Actor::*)(Args...);
|
||||
|
||||
Wrapper() = delete;
|
||||
virtual ~Wrapper(){}
|
||||
|
||||
Wrapper(ActorFunctionType func, CallbackType cb)
|
||||
: m_actorFunction(func)
|
||||
, m_callback(cb)
|
||||
{
|
||||
}
|
||||
|
||||
bool isFunction(ActorFunctionType func){
|
||||
return m_actorFunction == func;
|
||||
}
|
||||
|
||||
void invoke(Args... args){
|
||||
m_callback(args...);
|
||||
}
|
||||
|
||||
private:
|
||||
friend class Base;
|
||||
|
||||
ActorFunctionType m_actorFunction;
|
||||
CallbackType m_callback;
|
||||
};
|
||||
|
||||
template<class Actor, typename... Args>
|
||||
Wrapper<Actor, Args...>* Callback(void (Actor::*pm)(Args...), std::function<void(Args...)> cb){
|
||||
return new Wrapper<Actor, Args...>(pm, cb);
|
||||
}
|
||||
|
||||
template<class Actor, typename... Args, typename Fn>
|
||||
Wrapper<Actor, Args...>* Callback(void (Actor::*pm)(Args...), const Fn& callback){
|
||||
return new Wrapper<Actor, Args...>(pm, std::function<void(Args...)>(callback));
|
||||
}
|
||||
|
||||
} // callback
|
||||
} // utils
|
||||
namespace callback = ddkit::utils::callback;
|
||||
} // ddkit
|
||||
Reference in new issue
Block a user