mirror of
https://github.com/alliedmodders/metamod-source.git
synced 2025-12-07 02:18:30 +00:00
Subtle bug fixed + tests now more resistant against compiler
optimizations --HG-- extra : convert_revision : svn%3Ac2935e3e-5518-0410-8daf-afa5dab7d4e3/trunk%40472
This commit is contained in:
parent
53b48bab94
commit
d0e26565dd
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -402,188 +402,6 @@ namespace SourceHook
|
|||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18, class Param19>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18, class Param19>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18, class Param19, class Param20>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, Param20), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, Param20) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18, class Param19, class Param20>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, Param20) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, Param20) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// GCC & MSVC 7.1 need this, MSVC 7.0 doesn't like it
|
// GCC & MSVC 7.1 need this, MSVC 7.0 doesn't like it
|
||||||
#if SH_COMP != SH_COMP_MSVC || _MSC_VER > 1300
|
#if SH_COMP != SH_COMP_MSVC || _MSC_VER > 1300
|
||||||
@ -709,201 +527,6 @@ namespace SourceHook
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18, class Param19>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18, class Param19>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18, class Param19, class Param20>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, Param20, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, Param20, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18, class Param19, class Param20>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, Param20, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, Param20, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -841,7 +841,7 @@ SourceHook::CallClass<T> *SH_GET_CALLCLASS(T *p)
|
|||||||
|
|
||||||
#define SH_CALL_HOOKS(post, params) \
|
#define SH_CALL_HOOKS(post, params) \
|
||||||
prev_res = MRES_IGNORED; \
|
prev_res = MRES_IGNORED; \
|
||||||
while ( iter = static_cast<IMyDelegate*>(pContext->GetNext()) ) \
|
while ( (iter = static_cast<IMyDelegate*>(pContext->GetNext())) ) \
|
||||||
{ \
|
{ \
|
||||||
cur_res = MRES_IGNORED; \
|
cur_res = MRES_IGNORED; \
|
||||||
plugin_ret = iter->Call params; \
|
plugin_ret = iter->Call params; \
|
||||||
@ -893,7 +893,7 @@ SourceHook::CallClass<T> *SH_GET_CALLCLASS(T *p)
|
|||||||
|
|
||||||
#define SH_CALL_HOOKS_void(post, params) \
|
#define SH_CALL_HOOKS_void(post, params) \
|
||||||
prev_res = MRES_IGNORED; \
|
prev_res = MRES_IGNORED; \
|
||||||
while ( iter = static_cast<IMyDelegate*>(pContext->GetNext()) ) \
|
while ( (iter = static_cast<IMyDelegate*>(pContext->GetNext())) ) \
|
||||||
{ \
|
{ \
|
||||||
cur_res = MRES_IGNORED; \
|
cur_res = MRES_IGNORED; \
|
||||||
iter->Call params; \
|
iter->Call params; \
|
||||||
|
|||||||
@ -402,188 +402,6 @@ namespace SourceHook
|
|||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18, class Param19>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18, class Param19>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18, class Param19, class Param20>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, Param20), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, Param20) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18, class Param19, class Param20>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, Param20) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, Param20) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// GCC & MSVC 7.1 need this, MSVC 7.0 doesn't like it
|
// GCC & MSVC 7.1 need this, MSVC 7.0 doesn't like it
|
||||||
#if SH_COMP != SH_COMP_MSVC || _MSC_VER > 1300
|
#if SH_COMP != SH_COMP_MSVC || _MSC_VER > 1300
|
||||||
@ -709,201 +527,6 @@ namespace SourceHook
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18, class Param19>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18, class Param19>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18, class Param19, class Param20>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, Param20, ...), MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, Param20, ...) = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class X, class Y, class RetType, class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12, class Param13, class Param14, class Param15, class Param16, class Param17, class Param18, class Param19, class Param20>
|
|
||||||
inline void GetFuncInfo(Y *ptr, RetType(X::*mfp)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, Param20, ...) const, MemFuncInfo &out)
|
|
||||||
{
|
|
||||||
RetType(Y::*mfp2)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16, Param17, Param18, Param19, Param20, ...) const = mfp;
|
|
||||||
MFI_Impl<sizeof(mfp2)>::GetFuncInfo(mfp2, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -283,7 +283,9 @@ namespace SourceHook
|
|||||||
bool CVfnPtr::Patch(void *newValue)
|
bool CVfnPtr::Patch(void *newValue)
|
||||||
{
|
{
|
||||||
if (!SetMemAccess(m_Ptr, sizeof(void*), SH_MEM_READ | SH_MEM_WRITE))
|
if (!SetMemAccess(m_Ptr, sizeof(void*), SH_MEM_READ | SH_MEM_WRITE))
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
*reinterpret_cast<void**>(m_Ptr) = newValue;
|
*reinterpret_cast<void**>(m_Ptr) = newValue;
|
||||||
|
|
||||||
@ -793,6 +795,7 @@ namespace SourceHook
|
|||||||
if (oldctx->m_State == CHookContext::State_Ignore)
|
if (oldctx->m_State == CHookContext::State_Ignore)
|
||||||
{
|
{
|
||||||
*statusPtr = MRES_IGNORED;
|
*statusPtr = MRES_IGNORED;
|
||||||
|
oldctx->m_CallOrig = true;
|
||||||
oldctx->m_State = CHookContext::State_Dead;
|
oldctx->m_State = CHookContext::State_Dead;
|
||||||
|
|
||||||
List<CVfnPtr> &vfnptrList = static_cast<CHookManager*>(hi)->GetVfnPtrList();
|
List<CVfnPtr> &vfnptrList = static_cast<CHookManager*>(hi)->GetVfnPtrList();
|
||||||
@ -957,7 +960,6 @@ namespace SourceHook
|
|||||||
ISHDelegate *CHookContext::GetNext()
|
ISHDelegate *CHookContext::GetNext()
|
||||||
{
|
{
|
||||||
CIface *pVPIface;
|
CIface *pVPIface;
|
||||||
|
|
||||||
switch (m_State)
|
switch (m_State)
|
||||||
{
|
{
|
||||||
case State_Dead:
|
case State_Dead:
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -10,6 +10,14 @@
|
|||||||
SourceHook::ISourceHook *Test_Factory();
|
SourceHook::ISourceHook *Test_Factory();
|
||||||
void Test_Delete(SourceHook::ISourceHook *shptr);
|
void Test_Delete(SourceHook::ISourceHook *shptr);
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct CAutoPtrDestruction
|
||||||
|
{
|
||||||
|
T *m_Ptr;
|
||||||
|
CAutoPtrDestruction(T *p) : m_Ptr(p) { }
|
||||||
|
~CAutoPtrDestruction() { delete m_Ptr; }
|
||||||
|
};
|
||||||
|
|
||||||
struct CSHPtrAutoDestruction
|
struct CSHPtrAutoDestruction
|
||||||
{
|
{
|
||||||
SourceHook::ISourceHook *m_SHPtr;
|
SourceHook::ISourceHook *m_SHPtr;
|
||||||
|
|||||||
@ -391,6 +391,11 @@ namespace
|
|||||||
{
|
{
|
||||||
hello = 10;
|
hello = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Test *MyTestFactory()
|
||||||
|
{
|
||||||
|
return new Test;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T> T func(T a)
|
template <class T> T func(T a)
|
||||||
@ -398,7 +403,6 @@ template <class T> T func(T a)
|
|||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool TestBasic(std::string &error)
|
bool TestBasic(std::string &error)
|
||||||
{
|
{
|
||||||
// Simple test for ModuleInMemory
|
// Simple test for ModuleInMemory
|
||||||
@ -416,8 +420,8 @@ bool TestBasic(std::string &error)
|
|||||||
g_PLID = 1337;
|
g_PLID = 1337;
|
||||||
|
|
||||||
HandlersF1 f1_handlers;
|
HandlersF1 f1_handlers;
|
||||||
Test test;
|
Test *pTest = MyTestFactory();
|
||||||
Test *pTest = &test;
|
CAutoPtrDestruction<Test> apd(pTest);
|
||||||
|
|
||||||
void *pOrigVfnPtrF1 = (*reinterpret_cast<void***>(pTest))[0];
|
void *pOrigVfnPtrF1 = (*reinterpret_cast<void***>(pTest))[0];
|
||||||
|
|
||||||
|
|||||||
@ -84,6 +84,11 @@ namespace
|
|||||||
ADD_STATE(State_Vafmt_PostHandler_Called(2, std::string(in)));
|
ADD_STATE(State_Vafmt_PostHandler_Called(2, std::string(in)));
|
||||||
return 0.0f;
|
return 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IGaben *MyInstanceFactory()
|
||||||
|
{
|
||||||
|
return new IGaben;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -93,8 +98,8 @@ bool TestVafmtAndOverload(std::string &error)
|
|||||||
GET_SHPTR(g_SHPtr);
|
GET_SHPTR(g_SHPtr);
|
||||||
g_PLID = 1337;
|
g_PLID = 1337;
|
||||||
|
|
||||||
IGaben gabgab;
|
IGaben *pGab = MyInstanceFactory();
|
||||||
IGaben *pGab = &gabgab;
|
CAutoPtrDestruction<IGaben> apd(pGab);
|
||||||
|
|
||||||
// Part 1
|
// Part 1
|
||||||
SH_CALL(pGab, static_cast<void (IGaben::*)()>(&IGaben::EatYams))();
|
SH_CALL(pGab, static_cast<void (IGaben::*)()>(&IGaben::EatYams))();
|
||||||
|
|||||||
@ -65,6 +65,11 @@ namespace
|
|||||||
{
|
{
|
||||||
ADD_STATE(State_Func3H_Called(META_IFACEPTR(void)));
|
ADD_STATE(State_Func3H_Called(META_IFACEPTR(void)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Derived *MyInstanceFactory()
|
||||||
|
{
|
||||||
|
return new Derived;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TestThisPtrOffs(std::string &error)
|
bool TestThisPtrOffs(std::string &error)
|
||||||
@ -72,11 +77,13 @@ bool TestThisPtrOffs(std::string &error)
|
|||||||
GET_SHPTR(g_SHPtr);
|
GET_SHPTR(g_SHPtr);
|
||||||
g_PLID = 1337;
|
g_PLID = 1337;
|
||||||
|
|
||||||
Derived inst;
|
Derived *pD = MyInstanceFactory();
|
||||||
Derived *pD = &inst;
|
|
||||||
Base1 *pB1 = pD;
|
Base1 *pB1 = pD;
|
||||||
Base2 *pB2 = pD;
|
Base2 *pB2 = pD;
|
||||||
|
|
||||||
|
CAutoPtrDestruction<Derived> apd(pD);
|
||||||
|
|
||||||
|
|
||||||
// It should be:
|
// It should be:
|
||||||
// pB1 = pD
|
// pB1 = pD
|
||||||
// pB2 > pB1
|
// pB2 > pB1
|
||||||
|
|||||||
@ -54,6 +54,11 @@ namespace
|
|||||||
{
|
{
|
||||||
ADD_STATE(State_Func3H_Called);
|
ADD_STATE(State_Func3H_Called);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Test *MyTestFactory()
|
||||||
|
{
|
||||||
|
return new Test;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TestPlugSys(std::string &error)
|
bool TestPlugSys(std::string &error)
|
||||||
@ -61,8 +66,8 @@ bool TestPlugSys(std::string &error)
|
|||||||
GET_SHPTR(g_SHPtr);
|
GET_SHPTR(g_SHPtr);
|
||||||
g_PLID = 1;
|
g_PLID = 1;
|
||||||
|
|
||||||
Test inst;
|
Test *pInst = MyTestFactory();
|
||||||
Test *pInst = &inst;
|
CAutoPtrDestruction<Test> apd(pInst);
|
||||||
|
|
||||||
// 1)
|
// 1)
|
||||||
// Add hooks, then issue a complete shutdown
|
// Add hooks, then issue a complete shutdown
|
||||||
|
|||||||
@ -99,6 +99,11 @@ namespace
|
|||||||
RETURN_META(MRES_SUPERCEDE);
|
RETURN_META(MRES_SUPERCEDE);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TheWall *MyInstanceFactory()
|
||||||
|
{
|
||||||
|
return new TheWall;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TestManual(std::string &error)
|
bool TestManual(std::string &error)
|
||||||
@ -106,8 +111,8 @@ bool TestManual(std::string &error)
|
|||||||
GET_SHPTR(g_SHPtr);
|
GET_SHPTR(g_SHPtr);
|
||||||
g_PLID = 1337;
|
g_PLID = 1337;
|
||||||
|
|
||||||
TheWall inst;
|
TheWall *p = MyInstanceFactory();
|
||||||
TheWall *p = &inst;
|
CAutoPtrDestruction<TheWall> apd(p);
|
||||||
|
|
||||||
SourceHook::ManualCallClass *cc = SH_GET_MCALLCLASS(p, sizeof(void*));
|
SourceHook::ManualCallClass *cc = SH_GET_MCALLCLASS(p, sizeof(void*));
|
||||||
|
|
||||||
|
|||||||
@ -112,6 +112,11 @@ namespace
|
|||||||
SH_DECL_HOOK1_void(Test, Func1, SH_NOATTRIB, 0, int);
|
SH_DECL_HOOK1_void(Test, Func1, SH_NOATTRIB, 0, int);
|
||||||
SH_DECL_HOOK1(Test, Func2, SH_NOATTRIB, 0, int, int);
|
SH_DECL_HOOK1(Test, Func2, SH_NOATTRIB, 0, int, int);
|
||||||
SH_DECL_HOOK2(Test, Func2, SH_NOATTRIB, 1, int, int, int);
|
SH_DECL_HOOK2(Test, Func2, SH_NOATTRIB, 1, int, int, int);
|
||||||
|
|
||||||
|
Test *MyTestFactory()
|
||||||
|
{
|
||||||
|
return new Test;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TestRecall(std::string &error)
|
bool TestRecall(std::string &error)
|
||||||
@ -119,8 +124,8 @@ bool TestRecall(std::string &error)
|
|||||||
GET_SHPTR(g_SHPtr);
|
GET_SHPTR(g_SHPtr);
|
||||||
g_PLID = 1337;
|
g_PLID = 1337;
|
||||||
|
|
||||||
Test inst;
|
Test *ptr = MyTestFactory();
|
||||||
Test *ptr = &inst;
|
CAutoPtrDestruction<Test> apd(ptr);
|
||||||
|
|
||||||
SH_ADD_HOOK(Test, Func1, ptr, SH_STATIC(Handler1_Func1), false);
|
SH_ADD_HOOK(Test, Func1, ptr, SH_STATIC(Handler1_Func1), false);
|
||||||
SH_ADD_HOOK(Test, Func1, ptr, SH_STATIC(Handler2_Func1), false);
|
SH_ADD_HOOK(Test, Func1, ptr, SH_STATIC(Handler2_Func1), false);
|
||||||
|
|||||||
@ -87,6 +87,11 @@ namespace
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
SH_DECL_HOOK1(CHello, Func, SH_NOATTRIB, 0, int, CBase&);
|
SH_DECL_HOOK1(CHello, Func, SH_NOATTRIB, 0, int, CBase&);
|
||||||
|
|
||||||
|
CHello *MyInstanceFactory()
|
||||||
|
{
|
||||||
|
return new CHello;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -99,11 +104,11 @@ bool TestRef(std::string &error)
|
|||||||
CDerived der;
|
CDerived der;
|
||||||
CDerived2 der2(11);
|
CDerived2 der2(11);
|
||||||
CDerived2 der3(12);
|
CDerived2 der3(12);
|
||||||
CHello hello;
|
CHello *pHello = MyInstanceFactory();
|
||||||
CHello *pHello = &hello;
|
CAutoPtrDestruction<CHello> apd(pHello);
|
||||||
CHook hook;
|
CHook hook;
|
||||||
|
|
||||||
SourceHook::CallClass<CHello> *cc = SH_GET_CALLCLASS(&hello);
|
SourceHook::CallClass<CHello> *cc = SH_GET_CALLCLASS(pHello);
|
||||||
|
|
||||||
ADD_STATE(State_Result(pHello->Func(base)));
|
ADD_STATE(State_Result(pHello->Func(base)));
|
||||||
ADD_STATE(State_Result(pHello->Func(der)));
|
ADD_STATE(State_Result(pHello->Func(der)));
|
||||||
@ -129,7 +134,7 @@ bool TestRef(std::string &error)
|
|||||||
new State_Result(12),
|
new State_Result(12),
|
||||||
NULL), "Part 2");
|
NULL), "Part 2");
|
||||||
|
|
||||||
SH_ADD_HOOK(CHello, Func, &hello, SH_MEMBER(&hook, &CHook::Func), false);
|
SH_ADD_HOOK(CHello, Func, pHello, SH_MEMBER(&hook, &CHook::Func), false);
|
||||||
|
|
||||||
ADD_STATE(State_Result(pHello->Func(base)));
|
ADD_STATE(State_Result(pHello->Func(base)));
|
||||||
ADD_STATE(State_Result(pHello->Func(der)));
|
ADD_STATE(State_Result(pHello->Func(der)));
|
||||||
|
|||||||
@ -91,6 +91,11 @@ namespace
|
|||||||
|
|
||||||
SH_DECL_HOOK0(Test, Func1, SH_NOATTRIB, 0, int&);
|
SH_DECL_HOOK0(Test, Func1, SH_NOATTRIB, 0, int&);
|
||||||
SH_DECL_HOOK1(Test, Func2, SH_NOATTRIB, 0, const int&, int);
|
SH_DECL_HOOK1(Test, Func2, SH_NOATTRIB, 0, const int&, int);
|
||||||
|
|
||||||
|
Test *MyTestFactory()
|
||||||
|
{
|
||||||
|
return new Test;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TestRefRet(std::string &error)
|
bool TestRefRet(std::string &error)
|
||||||
@ -98,40 +103,40 @@ bool TestRefRet(std::string &error)
|
|||||||
GET_SHPTR(g_SHPtr);
|
GET_SHPTR(g_SHPtr);
|
||||||
g_PLID = 1;
|
g_PLID = 1;
|
||||||
|
|
||||||
Test test;
|
Test *pTest = MyTestFactory();
|
||||||
Test *pTest = &test;
|
CAutoPtrDestruction<Test> apd(pTest);
|
||||||
CHook hook;
|
CHook hook;
|
||||||
|
|
||||||
int &ret1 = pTest->Func1();
|
int &ret1 = pTest->Func1();
|
||||||
ADD_STATE(State_Func1_Ret(&ret1));
|
ADD_STATE(State_Func1_Ret(&ret1));
|
||||||
|
|
||||||
CHECK_STATES((&g_States,
|
CHECK_STATES((&g_States,
|
||||||
new State_Func1(&test.m_Var1),
|
new State_Func1(&pTest->m_Var1),
|
||||||
new State_Func1_Ret(&test.m_Var1),
|
new State_Func1_Ret(&pTest->m_Var1),
|
||||||
NULL), "Part 1");
|
NULL), "Part 1");
|
||||||
|
|
||||||
// Now add Func1_Pre1, which supercedes and returns hook.m_Var
|
// Now add Func1_Pre1, which supercedes and returns hook.m_Var
|
||||||
SH_ADD_HOOK(Test, Func1, &test, SH_MEMBER(&hook, &CHook::Func1_Pre1), false);
|
SH_ADD_HOOK(Test, Func1, pTest, SH_MEMBER(&hook, &CHook::Func1_Pre1), false);
|
||||||
|
|
||||||
int &ret2 = pTest->Func1();
|
int &ret2 = pTest->Func1();
|
||||||
ADD_STATE(State_Func1_Ret(&ret2));
|
ADD_STATE(State_Func1_Ret(&ret2));
|
||||||
|
|
||||||
CHECK_STATES((&g_States,
|
CHECK_STATES((&g_States,
|
||||||
new State_Func1_Pre1(&hook.m_Var), // Pre1 says that it's going to override with hook.m_Var
|
new State_Func1_Pre1(&hook.m_Var), // Pre1 says that it's going to override with hook.m_Var
|
||||||
new State_Func1(&test.m_Var1), // Function says that it's going to return test.m_Var1
|
new State_Func1(&pTest->m_Var1), // Function says that it's going to return pTest->m_Var1
|
||||||
new State_Func1_Ret(&hook.m_Var), // hook.m_Var is returned
|
new State_Func1_Ret(&hook.m_Var), // hook.m_Var is returned
|
||||||
NULL), "Part 2");
|
NULL), "Part 2");
|
||||||
|
|
||||||
// Now add Func1_Post1, which only reports orig ret and override ret
|
// Now add Func1_Post1, which only reports orig ret and override ret
|
||||||
SH_ADD_HOOK(Test, Func1, &test, SH_MEMBER(&hook, &CHook::Func1_Post1), true);
|
SH_ADD_HOOK(Test, Func1, pTest, SH_MEMBER(&hook, &CHook::Func1_Post1), true);
|
||||||
|
|
||||||
int &ret3 = pTest->Func1();
|
int &ret3 = pTest->Func1();
|
||||||
ADD_STATE(State_Func1_Ret(&ret3));
|
ADD_STATE(State_Func1_Ret(&ret3));
|
||||||
|
|
||||||
CHECK_STATES((&g_States,
|
CHECK_STATES((&g_States,
|
||||||
new State_Func1_Pre1(&hook.m_Var), // Pre1 says that it's going to override with hook.m_Var
|
new State_Func1_Pre1(&hook.m_Var), // Pre1 says that it's going to override with hook.m_Var
|
||||||
new State_Func1(&test.m_Var1), // Function says that it's going to return test.m_Var1
|
new State_Func1(&pTest->m_Var1), // Function says that it's going to return pTest->m_Var1
|
||||||
new State_Func1_Post1(&test.m_Var1, &hook.m_Var), // origret(=p1) is what it wanted to
|
new State_Func1_Post1(&pTest->m_Var1, &hook.m_Var), // origret(=p1) is what it wanted to
|
||||||
// return, overrideret(=p2) is pre1's var
|
// return, overrideret(=p2) is pre1's var
|
||||||
new State_Func1_Ret(&hook.m_Var), // hook.m_Var is returned
|
new State_Func1_Ret(&hook.m_Var), // hook.m_Var is returned
|
||||||
NULL), "Part 3");
|
NULL), "Part 3");
|
||||||
@ -139,8 +144,8 @@ bool TestRefRet(std::string &error)
|
|||||||
// Now add Func1_Pre2, which supercedes and returns g_Var (it also sets the override ret from pre1 to 1337)
|
// Now add Func1_Pre2, which supercedes and returns g_Var (it also sets the override ret from pre1 to 1337)
|
||||||
// and add Func1_Post2, which overrides and returns hook.m_Var again.
|
// and add Func1_Post2, which overrides and returns hook.m_Var again.
|
||||||
|
|
||||||
SH_ADD_HOOK(Test, Func1, &test, SH_MEMBER(&hook, &CHook::Func1_Pre2), false);
|
SH_ADD_HOOK(Test, Func1, pTest, SH_MEMBER(&hook, &CHook::Func1_Pre2), false);
|
||||||
SH_ADD_HOOK(Test, Func1, &test, SH_MEMBER(&hook, &CHook::Func1_Post2), true);
|
SH_ADD_HOOK(Test, Func1, pTest, SH_MEMBER(&hook, &CHook::Func1_Post2), true);
|
||||||
|
|
||||||
int &ret4 = pTest->Func1();
|
int &ret4 = pTest->Func1();
|
||||||
ADD_STATE(State_Func1_Ret(&ret4));
|
ADD_STATE(State_Func1_Ret(&ret4));
|
||||||
@ -160,13 +165,13 @@ bool TestRefRet(std::string &error)
|
|||||||
CHECK_COND(hook.m_Var == 1337, "Part 4.1");
|
CHECK_COND(hook.m_Var == 1337, "Part 4.1");
|
||||||
|
|
||||||
// Through a callclass
|
// Through a callclass
|
||||||
SourceHook::CallClass<Test> *cc1 = SH_GET_CALLCLASS(&test);
|
SourceHook::CallClass<Test> *cc1 = SH_GET_CALLCLASS(pTest);
|
||||||
int &ret5 = SH_CALL(cc1, &Test::Func1)();
|
int &ret5 = SH_CALL(cc1, &Test::Func1)();
|
||||||
ADD_STATE(State_Func1_Ret(&ret5));
|
ADD_STATE(State_Func1_Ret(&ret5));
|
||||||
|
|
||||||
CHECK_STATES((&g_States,
|
CHECK_STATES((&g_States,
|
||||||
new State_Func1(&test.m_Var1),
|
new State_Func1(&pTest->m_Var1),
|
||||||
new State_Func1_Ret(&test.m_Var1),
|
new State_Func1_Ret(&pTest->m_Var1),
|
||||||
NULL), "Part 5");
|
NULL), "Part 5");
|
||||||
|
|
||||||
SH_RELEASE_CALLCLASS(cc1);
|
SH_RELEASE_CALLCLASS(cc1);
|
||||||
@ -177,21 +182,21 @@ bool TestRefRet(std::string &error)
|
|||||||
ADD_STATE(State_Func2_Ret(&ret21));
|
ADD_STATE(State_Func2_Ret(&ret21));
|
||||||
|
|
||||||
CHECK_STATES((&g_States,
|
CHECK_STATES((&g_States,
|
||||||
new State_Func2(500, &test.m_Var2),
|
new State_Func2(500, &pTest->m_Var2),
|
||||||
new State_Func2_Ret(&test.m_Var2),
|
new State_Func2_Ret(&pTest->m_Var2),
|
||||||
NULL), "Part 6");
|
NULL), "Part 6");
|
||||||
|
|
||||||
SH_ADD_HOOK(Test, Func2, &test, SH_MEMBER(&hook, &CHook::Func2_Pre1), false);
|
SH_ADD_HOOK(Test, Func2, pTest, SH_MEMBER(&hook, &CHook::Func2_Pre1), false);
|
||||||
SH_ADD_HOOK(Test, Func2, &test, SH_MEMBER(&hook, &CHook::Func2_Post1), true);
|
SH_ADD_HOOK(Test, Func2, pTest, SH_MEMBER(&hook, &CHook::Func2_Post1), true);
|
||||||
|
|
||||||
const int &ret22 = pTest->Func2(500);
|
const int &ret22 = pTest->Func2(500);
|
||||||
ADD_STATE(State_Func2_Ret(&ret22));
|
ADD_STATE(State_Func2_Ret(&ret22));
|
||||||
|
|
||||||
CHECK_STATES((&g_States,
|
CHECK_STATES((&g_States,
|
||||||
new State_Func2_Pre1(500, &hook.m_Var), // p1 was 500; it's going to override with hook.m_Var; and also change p1 to 1337
|
new State_Func2_Pre1(500, &hook.m_Var), // p1 was 500; it's going to override with hook.m_Var; and also change p1 to 1337
|
||||||
new State_Func2(1337, &test.m_Var2), // p1 was 1337; it's going to ret test.m_Var2
|
new State_Func2(1337, &pTest->m_Var2), // p1 was 1337; it's going to ret pTest->m_Var2
|
||||||
new State_Func2_Post1(1337, // p1 was 1337
|
new State_Func2_Post1(1337, // p1 was 1337
|
||||||
&test.m_Var2, // orig ret was test.m_Var2
|
&pTest->m_Var2, // orig ret was pTest->m_Var2
|
||||||
&hook.m_Var), // override ret was hook.m_Var
|
&hook.m_Var), // override ret was hook.m_Var
|
||||||
new State_Func2_Ret(&hook.m_Var), // really returned hook.m_Var
|
new State_Func2_Ret(&hook.m_Var), // really returned hook.m_Var
|
||||||
NULL), "Part 7");
|
NULL), "Part 7");
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user