mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-02-21 20:27:13 +01:00
Replace retrieval of function parameter count with a variadic template implementation to reduce code size.
This commit is contained in:
parent
7ed5183d45
commit
5146dce440
@ -887,289 +887,28 @@ inline SQFUNCTION SqOverloadFunc(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7,
|
||||
return &SqOverload<R>::Func;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Query argument count
|
||||
//
|
||||
|
||||
// Arg Count 0
|
||||
template <class R>
|
||||
inline int SqGetArgCount(R (* /*method*/)()) {
|
||||
return 0;
|
||||
template <class R, class... Args>
|
||||
inline int SqGetArgCount(R (* /*method*/)(Args...)) {
|
||||
return sizeof...(Args);
|
||||
}
|
||||
|
||||
// Arg Count 1
|
||||
template <class R, class A1>
|
||||
inline int SqGetArgCount(R (* /*method*/)(A1)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Arg Count 2
|
||||
template <class R, class A1, class A2>
|
||||
inline int SqGetArgCount(R (* /*method*/)(A1, A2)) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
// Arg Count 3
|
||||
template <class R, class A1, class A2, class A3>
|
||||
inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3)) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
// Arg Count 4
|
||||
template <class R, class A1, class A2, class A3, class A4>
|
||||
inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4)) {
|
||||
return 4;
|
||||
}
|
||||
|
||||
// Arg Count 5
|
||||
template <class R, class A1, class A2, class A3, class A4, class A5>
|
||||
inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5)) {
|
||||
return 5;
|
||||
}
|
||||
|
||||
// Arg Count 6
|
||||
template <class R, class A1, class A2, class A3, class A4, class A5, class A6>
|
||||
inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6)) {
|
||||
return 6;
|
||||
}
|
||||
|
||||
// Arg Count 7
|
||||
template <class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
|
||||
inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6, A7)) {
|
||||
return 7;
|
||||
}
|
||||
|
||||
// Arg Count 8
|
||||
template <class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
|
||||
inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8)) {
|
||||
return 8;
|
||||
}
|
||||
|
||||
// Arg Count 9
|
||||
template <class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
|
||||
inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9)) {
|
||||
return 9;
|
||||
}
|
||||
|
||||
// Arg Count 10
|
||||
template <class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
|
||||
inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)) {
|
||||
return 10;
|
||||
}
|
||||
|
||||
// Arg Count 11
|
||||
template <class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11>
|
||||
inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)) {
|
||||
return 11;
|
||||
}
|
||||
|
||||
// Arg Count 12
|
||||
template <class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12>
|
||||
inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)) {
|
||||
return 12;
|
||||
}
|
||||
|
||||
// Arg Count 13
|
||||
template <class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13>
|
||||
inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)) {
|
||||
return 13;
|
||||
}
|
||||
|
||||
// Arg Count 14
|
||||
template <class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14>
|
||||
inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)) {
|
||||
return 14;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Query member function argument count
|
||||
//
|
||||
|
||||
// Arg Count 0
|
||||
template <class C, class R>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)()) {
|
||||
return 0;
|
||||
template <class C, class R, class... Args>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(Args...)) {
|
||||
return sizeof...(Args);
|
||||
}
|
||||
|
||||
// Arg Count 1
|
||||
template <class C, class R, class A1>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Arg Count 2
|
||||
template <class C, class R, class A1, class A2>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2)) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
// Arg Count 3
|
||||
template <class C, class R, class A1, class A2, class A3>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3)) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
// Arg Count 4
|
||||
template <class C, class R, class A1, class A2, class A3, class A4>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4)) {
|
||||
return 4;
|
||||
}
|
||||
|
||||
// Arg Count 5
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5)) {
|
||||
return 5;
|
||||
}
|
||||
|
||||
// Arg Count 6
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6)) {
|
||||
return 6;
|
||||
}
|
||||
|
||||
// Arg Count 7
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7)) {
|
||||
return 7;
|
||||
}
|
||||
|
||||
// Arg Count 8
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8)) {
|
||||
return 8;
|
||||
}
|
||||
|
||||
// Arg Count 9
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9)) {
|
||||
return 9;
|
||||
}
|
||||
|
||||
// Arg Count 10
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)) {
|
||||
return 10;
|
||||
}
|
||||
|
||||
// Arg Count 11
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)) {
|
||||
return 11;
|
||||
}
|
||||
|
||||
// Arg Count 12
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)) {
|
||||
return 12;
|
||||
}
|
||||
|
||||
// Arg Count 13
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)) {
|
||||
return 13;
|
||||
}
|
||||
|
||||
// Arg Count 14
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)) {
|
||||
return 14;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Query const member function argument count
|
||||
//
|
||||
|
||||
// Arg Count 0
|
||||
template <class C, class R>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)() const) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Arg Count 1
|
||||
template <class C, class R, class A1>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1) const) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Arg Count 2
|
||||
template <class C, class R, class A1, class A2>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2) const) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
// Arg Count 3
|
||||
template <class C, class R, class A1, class A2, class A3>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3) const) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
// Arg Count 4
|
||||
template <class C, class R, class A1, class A2, class A3, class A4>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4) const) {
|
||||
return 4;
|
||||
}
|
||||
|
||||
// Arg Count 5
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5) const) {
|
||||
return 5;
|
||||
}
|
||||
|
||||
// Arg Count 6
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6) const) {
|
||||
return 6;
|
||||
}
|
||||
|
||||
// Arg Count 7
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7) const) {
|
||||
return 7;
|
||||
}
|
||||
|
||||
// Arg Count 8
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8) const) {
|
||||
return 8;
|
||||
}
|
||||
|
||||
// Arg Count 9
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9) const) {
|
||||
return 9;
|
||||
}
|
||||
|
||||
// Arg Count 10
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) const) {
|
||||
return 10;
|
||||
}
|
||||
|
||||
// Arg Count 11
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) const) {
|
||||
return 11;
|
||||
}
|
||||
|
||||
// Arg Count 12
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) const) {
|
||||
return 12;
|
||||
}
|
||||
|
||||
// Arg Count 13
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13) const) {
|
||||
return 13;
|
||||
}
|
||||
|
||||
// Arg Count 14
|
||||
template <class C, class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14) const) {
|
||||
return 14;
|
||||
template <class C, class R, class... Args>
|
||||
inline int SqGetArgCount(R (C::* /*method*/)(Args...) const) {
|
||||
return sizeof...(Args);
|
||||
}
|
||||
|
||||
/// @endcond
|
||||
|
Loading…
x
Reference in New Issue
Block a user