📄 dl_call.hpp
字号:
, ss_typename_param_k A7
, ss_typename_param_k A8
, ss_typename_param_k A9
, ss_typename_param_k A10
, ss_typename_param_k A11
, ss_typename_param_k A12
, ss_typename_param_k A13
, ss_typename_param_k A14
, ss_typename_param_k A15
, ss_typename_param_k A16
, ss_typename_param_k A17
, ss_typename_param_k A18
, ss_typename_param_k A19
, ss_typename_param_k A20
, ss_typename_param_k A21
, ss_typename_param_k A22
, ss_typename_param_k A23
, ss_typename_param_k A24
, ss_typename_param_k A25
, ss_typename_param_k A26
, ss_typename_param_k A27
, ss_typename_param_k A28
>
inline R dl_call_invoke_cdecl(dl_call_traits::entry_point_type fp, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, A17 a17, A18 a18, A19 a19, A20 a20, A21 a21, A22 a22, A23 a23, A24 a24, A25 a25, A26 a26, A27 a27, A28 a28)
{
R (STLSOFT_CDECL *pfn)(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, A17 a17, A18 a18, A19 a19, A20 a20, A21 a21, A22 a22, A23 a23, A24 a24, A25 a25, A26 a26, A27 a27, A28 a28);
reinterpret_cast<dl_call_traits::entry_point_type&>(pfn) = fp;
return pfn(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28);
}
// 30 params
template< ss_typename_param_k R
, ss_typename_param_k A0
, ss_typename_param_k A1
, ss_typename_param_k A2
, ss_typename_param_k A3
, ss_typename_param_k A4
, ss_typename_param_k A5
, ss_typename_param_k A6
, ss_typename_param_k A7
, ss_typename_param_k A8
, ss_typename_param_k A9
, ss_typename_param_k A10
, ss_typename_param_k A11
, ss_typename_param_k A12
, ss_typename_param_k A13
, ss_typename_param_k A14
, ss_typename_param_k A15
, ss_typename_param_k A16
, ss_typename_param_k A17
, ss_typename_param_k A18
, ss_typename_param_k A19
, ss_typename_param_k A20
, ss_typename_param_k A21
, ss_typename_param_k A22
, ss_typename_param_k A23
, ss_typename_param_k A24
, ss_typename_param_k A25
, ss_typename_param_k A26
, ss_typename_param_k A27
, ss_typename_param_k A28
, ss_typename_param_k A29
>
inline R dl_call_invoke_cdecl(dl_call_traits::entry_point_type fp, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, A17 a17, A18 a18, A19 a19, A20 a20, A21 a21, A22 a22, A23 a23, A24 a24, A25 a25, A26 a26, A27 a27, A28 a28, A29 a29)
{
R (STLSOFT_CDECL *pfn)(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, A17 a17, A18 a18, A19 a19, A20 a20, A21 a21, A22 a22, A23 a23, A24 a24, A25 a25, A26 a26, A27 a27, A28 a28, A29 a29);
reinterpret_cast<dl_call_traits::entry_point_type&>(pfn) = fp;
return pfn(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29);
}
// 31 params
template< ss_typename_param_k R
, ss_typename_param_k A0
, ss_typename_param_k A1
, ss_typename_param_k A2
, ss_typename_param_k A3
, ss_typename_param_k A4
, ss_typename_param_k A5
, ss_typename_param_k A6
, ss_typename_param_k A7
, ss_typename_param_k A8
, ss_typename_param_k A9
, ss_typename_param_k A10
, ss_typename_param_k A11
, ss_typename_param_k A12
, ss_typename_param_k A13
, ss_typename_param_k A14
, ss_typename_param_k A15
, ss_typename_param_k A16
, ss_typename_param_k A17
, ss_typename_param_k A18
, ss_typename_param_k A19
, ss_typename_param_k A20
, ss_typename_param_k A21
, ss_typename_param_k A22
, ss_typename_param_k A23
, ss_typename_param_k A24
, ss_typename_param_k A25
, ss_typename_param_k A26
, ss_typename_param_k A27
, ss_typename_param_k A28
, ss_typename_param_k A29
, ss_typename_param_k A30
>
inline R dl_call_invoke_cdecl(dl_call_traits::entry_point_type fp, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, A17 a17, A18 a18, A19 a19, A20 a20, A21 a21, A22 a22, A23 a23, A24 a24, A25 a25, A26 a26, A27 a27, A28 a28, A29 a29, A30 a30)
{
R (STLSOFT_CDECL *pfn)(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, A17 a17, A18 a18, A19 a19, A20 a20, A21 a21, A22 a22, A23 a23, A24 a24, A25 a25, A26 a26, A27 a27, A28 a28, A29 a29, A30 a30);
reinterpret_cast<dl_call_traits::entry_point_type&>(pfn) = fp;
return pfn(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30);
}
// 32 params
template< ss_typename_param_k R
, ss_typename_param_k A0
, ss_typename_param_k A1
, ss_typename_param_k A2
, ss_typename_param_k A3
, ss_typename_param_k A4
, ss_typename_param_k A5
, ss_typename_param_k A6
, ss_typename_param_k A7
, ss_typename_param_k A8
, ss_typename_param_k A9
, ss_typename_param_k A10
, ss_typename_param_k A11
, ss_typename_param_k A12
, ss_typename_param_k A13
, ss_typename_param_k A14
, ss_typename_param_k A15
, ss_typename_param_k A16
, ss_typename_param_k A17
, ss_typename_param_k A18
, ss_typename_param_k A19
, ss_typename_param_k A20
, ss_typename_param_k A21
, ss_typename_param_k A22
, ss_typename_param_k A23
, ss_typename_param_k A24
, ss_typename_param_k A25
, ss_typename_param_k A26
, ss_typename_param_k A27
, ss_typename_param_k A28
, ss_typename_param_k A29
, ss_typename_param_k A30
, ss_typename_param_k A31
>
inline R dl_call_invoke_cdecl(dl_call_traits::entry_point_type fp, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, A17 a17, A18 a18, A19 a19, A20 a20, A21 a21, A22 a22, A23 a23, A24 a24, A25 a25, A26 a26, A27 a27, A28 a28, A29 a29, A30 a30, A31 a31)
{
R (STLSOFT_CDECL *pfn)(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, A17 a17, A18 a18, A19 a19, A20 a20, A21 a21, A22 a22, A23 a23, A24 a24, A25 a25, A26 a26, A27 a27, A28 a28, A29 a29, A30 a30, A31 a31);
reinterpret_cast<dl_call_traits::entry_point_type&>(pfn) = fp;
return pfn(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31);
}
//[<[STLSOFT-AUTO:DL_CALL-INVOCATORS:END]>]
/// @}
/* ////////////////////////////////////////////////////////////////////// */
/// \name Dispatchers
///
/// \ingroup group__library__dl
///
/// These calling convention-agnostic functions dispatch the function to the
/// appropriate invocator, with the requisite arguments.
/// @{
//[<[STLSOFT-AUTO:DL_CALL-DISPATCHERS:BEGIN]>]
// 0 params
template< ss_typename_param_k R
>
inline R dl_call_dispatch_0(dl_call_traits::entry_point_type fp)
{
UNIXSTL_ASSERT(NULL != fp);
return dl_call_invoke_cdecl<R>(fp);
}
// 1 param
template< ss_typename_param_k R
, ss_typename_param_k A0
>
inline R dl_call_dispatch_1(dl_call_traits::entry_point_type fp, A0 a0)
{
UNIXSTL_ASSERT(NULL != fp);
return dl_call_invoke_cdecl<R>(fp, a0);
}
// 2 params
template< ss_typename_param_k R
, ss_typename_param_k A0
, ss_typename_param_k A1
>
inline R dl_call_dispatch_2(dl_call_traits::entry_point_type fp, A0 a0, A1 a1)
{
UNIXSTL_ASSERT(NULL != fp);
return dl_call_invoke_cdecl<R>(fp, a0, a1);
}
// 3 params
template< ss_typename_param_k R
, ss_typename_param_k A0
, ss_typename_param_k A1
, ss_typename_param_k A2
>
inline R dl_call_dispatch_3(dl_call_traits::entry_point_type fp, A0 a0, A1 a1, A2 a2)
{
UNIXSTL_ASSERT(NULL != fp);
return dl_call_invoke_cdecl<R>(fp, a0, a1, a2);
}
// 4 params
template< ss_typename_param_k R
, ss_typename_param_k A0
, ss_typename_param_k A1
, ss_typename_param_k A2
, ss_typename_param_k A3
>
inline R dl_call_dispatch_4(dl_call_traits::entry_point_type fp, A0 a0, A1 a1, A2 a2, A3 a3)
{
UNIXSTL_ASSERT(NULL != fp);
return dl_call_invoke_cdecl<R>(fp, a0, a1, a2, a3);
}
// 5 params
template< ss_typename_param_k R
, ss_typename_param_k A0
, ss_typename_param_k A1
, ss_typename_param_k A2
, ss_typename_param_k A3
, ss_typename_param_k A4
>
inline R dl_call_dispatch_5(dl_call_traits::entry_point_type fp, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
{
UNIXSTL_ASSERT(NULL != fp);
return dl_call_invoke_cdecl<R>(fp, a0, a1, a2, a3, a4);
}
// 6 params
template< ss_typename_param_k R
, ss_typename_param_k A0
, ss_typename_param_k A1
, ss_typename_param_k A2
, ss_typename_param_k A3
, ss_typename_param_k A4
, ss_typename_param_k A5
>
inline R dl_call_dispatch_6(dl_call_traits::entry_point_type fp, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
{
UNIXSTL_ASSERT(NULL != fp);
return dl_call_invoke_cdecl<R>(fp, a0, a1, a2, a3, a4, a5);
}
// 7 params
template< ss_typename_param_k R
, ss_typename_param_k A0
, ss_typename_param_k A1
, ss_typename_param_k A2
, ss_typename_param_k A3
, ss_typename_param_k A4
, ss_typename_param_k A5
, ss_typename_param_k A6
>
inline R dl_call_dispatch_7(dl_call_traits::entry_point_type fp, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
{
UNIXSTL_ASSERT(NULL != fp);
return dl_call_invoke_cdecl<R>(fp, a0, a1, a2, a3, a4, a5, a6);
}
// 8 params
template< ss_typename_param_k R
, ss_typename_param_k A0
, ss_typename_param_k A1
, ss_typename_param_k A2
, ss_typename_param_k A3
, ss_typename_param_k A4
, ss_typename_param_k A5
, ss_typename_param_k A6
, ss_typename_param_k A7
>
inline R dl_call_dispatch_8(dl_call_traits::entry_point_type fp, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
{
UNIXSTL_ASSERT(NULL != fp);
return dl_call_invoke_cdecl<R>(fp, a0, a1, a2, a3, a4, a5, a6, a7);
}
// 9 params
template< ss_typename_param_k R
, ss_typename_param_k A0
, ss_typename_param_k A1
, ss_typename_param_k A2
, ss_typename_param_k A3
, ss_typename_param_k A4
, ss_typename_param_k A5
, ss_typename_param_k A6
, ss_typename_param_k A7
, ss_typename_param_k A8
>
inline R dl_call_dispatch_9(dl_call_traits::entry_point_type fp, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
{
UNIXSTL_ASSERT(NULL != fp);
return dl_call_invoke_cdecl<R>(fp, a0, a1, a2, a3, a4, a5, a6, a7, a8);
}
// 10 params
template< ss_typename_param_k R
, ss_typename_param_k A0
, ss_typename_param_k A1
, ss_typename_param_k A2
, ss_typename_param_k A3
, ss_typename_param_k A4
, ss_typename_param_k A5
, ss_typename_param_k A6
, ss_typename_param_k A7
, ss_typename_param_k A8
, ss_typename_param_k A9
>
inline R dl_call_dispatch_10(dl_call_traits::entry_point_type fp, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
{
UNIXSTL_ASSERT(NULL != fp);
return dl_call_invoke_cdecl<R>(fp, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -