55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
#ifndef seafire__common__invoke_hxx_
|
|
#define seafire__common__invoke_hxx_
|
|
|
|
#include <seafire/server/request.hxx>
|
|
#include <seafire/server/response.hxx>
|
|
|
|
namespace seafire::common
|
|
{
|
|
|
|
template<typename Ret, typename T, typename... Direct, typename... Params>
|
|
Ret
|
|
do_invoke(T& target,
|
|
server::request_t& req,
|
|
Direct const&... direct,
|
|
Ret (T::*func)(Direct const&..., Params const&...));
|
|
|
|
template<typename Ret, typename T, typename... Params, typename... Direct>
|
|
Ret
|
|
invoke(T& target,
|
|
server::request_t& req,
|
|
Ret (T::*func)(Params const&...),
|
|
Direct const&... direct);
|
|
|
|
template<typename Ret, typename T, typename... Direct, typename... Params>
|
|
Ret
|
|
do_invoke(T const& target,
|
|
server::request_t& req,
|
|
Direct const&... direct,
|
|
Ret (T::*func)(Direct const&..., Params const&...) const);
|
|
|
|
template<typename Ret, typename T, typename... Params, typename... Direct>
|
|
Ret
|
|
invoke(T const& target,
|
|
server::request_t& req,
|
|
Ret (T::*func)(Params const&...) const,
|
|
Direct const&... direct);
|
|
|
|
template<typename Ret, typename... Direct, typename... Params>
|
|
Ret
|
|
do_invoke(server::request_t& req,
|
|
Direct&&... direct,
|
|
Ret (*func)(Direct..., Params...));
|
|
|
|
template<typename Ret, typename... Params, typename... Direct>
|
|
Ret
|
|
invoke(server::request_t& req,
|
|
Ret (*func)(Params...),
|
|
Direct&&... direct);
|
|
|
|
} // namespace seafire::common
|
|
|
|
#include <seafire/common/invoke.txx>
|
|
|
|
#endif
|