5 #include <libcopp/utils/config/libcopp_build_features.h>
9 LIBCOPP_COTASK_NAMESPACE_BEGIN
15 template <
typename TR,
typename TF>
16 static LIBCOPP_COTASK_API_HEAD_ONLY
int call(TR (TF::*)(
void *), TF &fn,
void *priv_data) {
21 template <
typename TR,
typename TF>
22 static LIBCOPP_COTASK_API_HEAD_ONLY
int call(TR (TF::*)(
void *)
const,
const TF &fn,
void *priv_data) {
28 template <
typename TF>
29 static LIBCOPP_COTASK_API_HEAD_ONLY
int call(
int (TF::*)(
void *), TF &fn,
void *priv_data) {
33 template <
typename TF>
34 static LIBCOPP_COTASK_API_HEAD_ONLY
int call(
int (TF::*)(
void *)
const,
const TF &fn,
void *priv_data) {
39 template <
typename TR,
typename TF>
40 static LIBCOPP_COTASK_API_HEAD_ONLY
int call(TR (TF::*)(), TF &fn,
void * ) {
45 template <
typename TR,
typename TF>
46 static LIBCOPP_COTASK_API_HEAD_ONLY
int call(TR (TF::*)()
const,
const TF &fn,
void * ) {
52 template <
typename TF>
53 static LIBCOPP_COTASK_API_HEAD_ONLY
int call(
int (TF::*)(), TF &fn,
void * ) {
57 template <
typename TF>
58 static LIBCOPP_COTASK_API_HEAD_ONLY
int call(
int (TF::*)()
const,
const TF &fn,
void * ) {
65 template <
typename Ty>
70 template <
typename... TARG>
73 template <
typename... TARG>
76 template <
typename... TARG>
85 if (
nullptr == selfp) {
98 template <
typename Ty>
104 template <
class Tz,
bool IS_INTEGRAL>
110 return static_cast<int>((*in.
func_)(priv_data));
117 (*in.
func_)(priv_data);
131 if (
nullptr == selfp) {
144 template <
typename Ty,
typename Tc>
150 template <
class Tz,
bool IS_INTEGRAL>
177 if (
nullptr == selfp) {
190 template <
typename Ty>
192 if (
nullptr == selfp) {
196 Ty *
self =
reinterpret_cast<Ty *
>(selfp);
202 template <
typename Ty>
207 template <
typename Ty>
212 template <
typename Ty,
typename Tc>
218 template <
typename Ty>
220 return &placement_destroy<Ty>;
222 LIBCOPP_COTASK_NAMESPACE_END
task_action_function(value_type func)
static void placement_destroy(void *selfp)
int operator()(void *priv_data) override
int operator()(void *priv_data) override
static void placement_destroy(void *selfp)
task_action_functor(task_action_functor &&other, TARG &&...)
task_action_functor(TARG &&...arg)
task_action_functor(const task_action_functor &other, TARG &&...)
typename std::decay< Ty >::type value_type
task_action_mem_function(value_type func, Tc *inst)
int operator()(void *priv_data) override
~task_action_mem_function()
static void placement_destroy(void *selfp)
static LIBCOPP_COTASK_API_HEAD_ONLY int call(TR(TF::*)() const, const TF &fn, void *)
static LIBCOPP_COTASK_API_HEAD_ONLY int call(TR(TF::*)(void *), TF &fn, void *priv_data)
static LIBCOPP_COTASK_API_HEAD_ONLY int call(TR(TF::*)(void *) const, const TF &fn, void *priv_data)
static LIBCOPP_COTASK_API_HEAD_ONLY int call(int(TF::*)(void *) const, const TF &fn, void *priv_data)
static LIBCOPP_COTASK_API_HEAD_ONLY int call(int(TF::*)(), TF &fn, void *)
static LIBCOPP_COTASK_API_HEAD_ONLY int call(int(TF::*)() const, const TF &fn, void *)
static LIBCOPP_COTASK_API_HEAD_ONLY int call(int(TF::*)(void *), TF &fn, void *priv_data)
static LIBCOPP_COTASK_API_HEAD_ONLY int call(TR(TF::*)(), TF &fn, void *)
static UTIL_FORCEINLINE int invoke(task_action_function &in, void *priv_data)
static UTIL_FORCEINLINE int invoke(task_action_function &in, void *priv_data)
static UTIL_FORCEINLINE int invoke(task_action_mem_function &in, void *priv_data)
static UTIL_FORCEINLINE int invoke(task_action_mem_function &in, void *priv_data)
void(*)(void *) placement_destroy_fn_t
LIBCOPP_COTASK_API_HEAD_ONLY void placement_destroy(void *selfp)
LIBCOPP_COTASK_API_HEAD_ONLY placement_destroy_fn_t get_placement_destroy(task_action_functor< Ty > *)