2025-03-07 02:25:52 +01:00

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