mirror of
https://github.com/alliedmodders/metamod-source.git
synced 2025-02-20 13:54:14 +01:00
linux/gcc/32bit compatibility
--HG-- extra : convert_revision : svn%3Ac2935e3e-5518-0410-8daf-afa5dab7d4e3/trunk%4049
This commit is contained in:
parent
211535d433
commit
9fb8a3e891
@ -41,9 +41,12 @@
|
||||
|
||||
#ifndef FASTDELEGATE_H
|
||||
#define FASTDELEGATE_H
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#ifdef _MSC_VER
|
||||
# if _MSC_VER > 1000
|
||||
# pragma once
|
||||
# endif // _MSC_VER > 1000
|
||||
#endif // #ifdef _MSC_VER
|
||||
|
||||
#include <memory.h> // to allow <,> comparisons
|
||||
|
||||
@ -614,7 +617,7 @@ public:
|
||||
return right.IsLess(*this);
|
||||
}
|
||||
DelegateMemento (const DelegateMemento &right) :
|
||||
m_pFunction(right.m_pFunction), m_pthis(right.m_pthis)
|
||||
m_pthis(right.m_pthis), m_pFunction(right.m_pFunction)
|
||||
#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK)
|
||||
, m_pStaticFunction (right.m_pStaticFunction)
|
||||
#endif
|
||||
|
@ -41,9 +41,12 @@
|
||||
|
||||
#ifndef FASTDELEGATE_H
|
||||
#define FASTDELEGATE_H
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#ifdef _MSC_VER
|
||||
# if _MSC_VER > 1000
|
||||
# pragma once
|
||||
# endif // _MSC_VER > 1000
|
||||
#endif // #ifdef _MSC_VER
|
||||
|
||||
#include <memory.h> // to allow <,> comparisons
|
||||
|
||||
@ -614,7 +617,7 @@ public:
|
||||
return right.IsLess(*this);
|
||||
}
|
||||
DelegateMemento (const DelegateMemento &right) :
|
||||
m_pFunction(right.m_pFunction), m_pthis(right.m_pthis)
|
||||
m_pthis(right.m_pthis), m_pFunction(right.m_pFunction)
|
||||
#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK)
|
||||
, m_pStaticFunction (right.m_pStaticFunction)
|
||||
#endif
|
||||
|
6
sourcehook/generate/generate
Executable file
6
sourcehook/generate/generate
Executable file
@ -0,0 +1,6 @@
|
||||
#/bin/sh
|
||||
|
||||
./shworker.bin iter $1 sourcehook.hxx sourcehook.h
|
||||
./shworker.bin hopter $1 FastDelegate.hxx FastDelegate.h
|
||||
|
||||
cp *.h ..
|
BIN
sourcehook/generate/shworker.bin
Executable file
BIN
sourcehook/generate/shworker.bin
Executable file
Binary file not shown.
@ -3,13 +3,13 @@ default: shworker
|
||||
bin:
|
||||
mkdir bin
|
||||
|
||||
fd_hopter.o: fd_hopter.cpp
|
||||
fd_hopter.o: fd_hopter.cpp bin
|
||||
gcc -fPIC -o bin/$@ -c $<
|
||||
|
||||
main.o: main.cpp
|
||||
main.o: main.cpp bin
|
||||
gcc -fPIC -o bin/$@ -c $<
|
||||
|
||||
shworker: fd_hopter.o main.o
|
||||
gcc -ldl -lstdc++ bin/fd_hopter.o bin/main.o -o bin/shworker
|
||||
shworker: fd_hopter.o main.o bin
|
||||
gcc -ldl -lstdc++ bin/fd_hopter.o bin/main.o -o bin/shworker.bin
|
||||
|
||||
|
||||
|
@ -20,7 +20,13 @@
|
||||
#define SH_GLOB_PLUGPTR g_PLID
|
||||
#endif
|
||||
|
||||
#define SH_ASSERT(x, info) if (!(x)) __asm { int 3 }
|
||||
#ifdef SH_DEBUG
|
||||
# define SH_ASSERT__(x, info, file, line, func) \
|
||||
((printf("SOURCEHOOK DEBUG ASSERTION FAILED:\n %s:%u(%s): %s\n", file, line, func, info), true) ? (abort(), 0) : 0)
|
||||
# define SH_ASSERT(x, info) if (!(x)) SH_ASSERT__(x, info, __FILE__, __LINE__, __FUNCTION__)
|
||||
#else
|
||||
# define SH_ASSERT(x, info)
|
||||
#endif
|
||||
|
||||
// System
|
||||
#define SH_SYS_WIN32 1
|
||||
@ -67,7 +73,7 @@ enum META_RES
|
||||
MRES_IGNORED=0, // plugin didn't take any action
|
||||
MRES_HANDLED, // plugin did something, but real function should still be called
|
||||
MRES_OVERRIDE, // call real function, but use my return value
|
||||
MRES_SUPERCEDE, // skip real function; use my return value
|
||||
MRES_SUPERCEDE // skip real function; use my return value
|
||||
};
|
||||
|
||||
|
||||
@ -671,7 +677,7 @@ namespace SourceHook
|
||||
@VARARGS@
|
||||
// Support for @$@ arguments
|
||||
@template<@@class Param%%|, @@> @RetType operator()(@Param%% p%%|, @) const
|
||||
SH_MAKE_EXECUTABLECLASS_OB((@p%%@), (@Param%%@))
|
||||
SH_MAKE_EXECUTABLECLASS_OB((@p%%|, @), (@Param%%|, @))
|
||||
|
||||
@ENDARGS@
|
||||
};
|
||||
@ -698,4 +704,4 @@ SH_CALL(SourceHook::CallClass<Y> *ptr, RetType(X::*mfp)(@Param%%|, @)const)
|
||||
#undef SH_MAKE_EXECUTABLECLASS_BODY
|
||||
|
||||
#endif
|
||||
// The pope is dead. -> :(
|
||||
// The pope is dead. -> :(
|
||||
|
@ -401,7 +401,8 @@ namespace SourceHook
|
||||
CSourceHookImpl::HookManInfoList::iterator CSourceHookImpl::FindHookMan(HookManInfoList::iterator begin,
|
||||
HookManInfoList::iterator end, const char *proto, int vtblofs, int vtblidx)
|
||||
{
|
||||
for (HookManInfoList::iterator hookmaniter = m_HookMans.begin(); hookmaniter != m_HookMans.end(); ++hookmaniter)
|
||||
HookManInfoList::iterator hookmaniter;
|
||||
for (hookmaniter = m_HookMans.begin(); hookmaniter != m_HookMans.end(); ++hookmaniter)
|
||||
{
|
||||
if (strcmp(hookmaniter->proto, proto) == 0 && hookmaniter->vtbl_offs == vtblofs &&
|
||||
hookmaniter->vtbl_idx == vtblidx)
|
||||
|
@ -20,7 +20,13 @@
|
||||
#define SH_GLOB_PLUGPTR g_PLID
|
||||
#endif
|
||||
|
||||
#define SH_ASSERT(x, info) if (!(x)) __asm { int 3 }
|
||||
#ifdef SH_DEBUG
|
||||
# define SH_ASSERT__(x, info, file, line, func) \
|
||||
((printf("SOURCEHOOK DEBUG ASSERTION FAILED:\n %s:%u(%s): %s\n", file, line, func, info), true) ? (abort(), 0) : 0)
|
||||
# define SH_ASSERT(x, info) if (!(x)) SH_ASSERT__(x, info, __FILE__, __LINE__, __FUNCTION__)
|
||||
#else
|
||||
# define SH_ASSERT(x, info)
|
||||
#endif
|
||||
|
||||
// System
|
||||
#define SH_SYS_WIN32 1
|
||||
@ -67,7 +73,7 @@ enum META_RES
|
||||
MRES_IGNORED=0, // plugin didn't take any action
|
||||
MRES_HANDLED, // plugin did something, but real function should still be called
|
||||
MRES_OVERRIDE, // call real function, but use my return value
|
||||
MRES_SUPERCEDE, // skip real function; use my return value
|
||||
MRES_SUPERCEDE // skip real function; use my return value
|
||||
};
|
||||
|
||||
|
||||
@ -1492,63 +1498,63 @@ namespace SourceHook
|
||||
|
||||
// Support for 2 arguments
|
||||
template<class Param1, class Param2> RetType operator()(Param1 p1, Param2 p2) const
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1p2), (Param1Param2))
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1, p2), (Param1, Param2))
|
||||
|
||||
// Support for 3 arguments
|
||||
template<class Param1, class Param2, class Param3> RetType operator()(Param1 p1, Param2 p2, Param3 p3) const
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1p2p3), (Param1Param2Param3))
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1, p2, p3), (Param1, Param2, Param3))
|
||||
|
||||
// Support for 4 arguments
|
||||
template<class Param1, class Param2, class Param3, class Param4> RetType operator()(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1p2p3p4), (Param1Param2Param3Param4))
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1, p2, p3, p4), (Param1, Param2, Param3, Param4))
|
||||
|
||||
// Support for 5 arguments
|
||||
template<class Param1, class Param2, class Param3, class Param4, class Param5> RetType operator()(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1p2p3p4p5), (Param1Param2Param3Param4Param5))
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1, p2, p3, p4, p5), (Param1, Param2, Param3, Param4, Param5))
|
||||
|
||||
// Support for 6 arguments
|
||||
template<class Param1, class Param2, class Param3, class Param4, class Param5, class Param6> RetType operator()(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1p2p3p4p5p6), (Param1Param2Param3Param4Param5Param6))
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1, p2, p3, p4, p5, p6), (Param1, Param2, Param3, Param4, Param5, Param6))
|
||||
|
||||
// Support for 7 arguments
|
||||
template<class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7> RetType operator()(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1p2p3p4p5p6p7), (Param1Param2Param3Param4Param5Param6Param7))
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1, p2, p3, p4, p5, p6, p7), (Param1, Param2, Param3, Param4, Param5, Param6, Param7))
|
||||
|
||||
// Support for 8 arguments
|
||||
template<class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8> RetType operator()(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) const
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1p2p3p4p5p6p7p8), (Param1Param2Param3Param4Param5Param6Param7Param8))
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1, p2, p3, p4, p5, p6, p7, p8), (Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8))
|
||||
|
||||
// Support for 9 arguments
|
||||
template<class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9> RetType operator()(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8, Param9 p9) const
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1p2p3p4p5p6p7p8p9), (Param1Param2Param3Param4Param5Param6Param7Param8Param9))
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1, p2, p3, p4, p5, p6, p7, p8, p9), (Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9))
|
||||
|
||||
// Support for 10 arguments
|
||||
template<class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10> RetType operator()(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8, Param9 p9, Param10 p10) const
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1p2p3p4p5p6p7p8p9p10), (Param1Param2Param3Param4Param5Param6Param7Param8Param9Param10))
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1, p2, p3, p4, p5, p6, p7, p8, p9, p10), (Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10))
|
||||
|
||||
// Support for 11 arguments
|
||||
template<class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11> RetType operator()(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8, Param9 p9, Param10 p10, Param11 p11) const
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1p2p3p4p5p6p7p8p9p10p11), (Param1Param2Param3Param4Param5Param6Param7Param8Param9Param10Param11))
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11), (Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11))
|
||||
|
||||
// Support for 12 arguments
|
||||
template<class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8, class Param9, class Param10, class Param11, class Param12> RetType operator()(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8, Param9 p9, Param10 p10, Param11 p11, Param12 p12) const
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1p2p3p4p5p6p7p8p9p10p11p12), (Param1Param2Param3Param4Param5Param6Param7Param8Param9Param10Param11Param12))
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12), (Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12))
|
||||
|
||||
// Support for 13 arguments
|
||||
template<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> RetType operator()(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8, Param9 p9, Param10 p10, Param11 p11, Param12 p12, Param13 p13) const
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1p2p3p4p5p6p7p8p9p10p11p12p13), (Param1Param2Param3Param4Param5Param6Param7Param8Param9Param10Param11Param12Param13))
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13), (Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13))
|
||||
|
||||
// Support for 14 arguments
|
||||
template<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> RetType operator()(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8, Param9 p9, Param10 p10, Param11 p11, Param12 p12, Param13 p13, Param14 p14) const
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1p2p3p4p5p6p7p8p9p10p11p12p13p14), (Param1Param2Param3Param4Param5Param6Param7Param8Param9Param10Param11Param12Param13Param14))
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14), (Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14))
|
||||
|
||||
// Support for 15 arguments
|
||||
template<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> RetType operator()(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8, Param9 p9, Param10 p10, Param11 p11, Param12 p12, Param13 p13, Param14 p14, Param15 p15) const
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1p2p3p4p5p6p7p8p9p10p11p12p13p14p15), (Param1Param2Param3Param4Param5Param6Param7Param8Param9Param10Param11Param12Param13Param14Param15))
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15), (Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15))
|
||||
|
||||
// Support for 16 arguments
|
||||
template<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> RetType operator()(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8, Param9 p9, Param10 p10, Param11 p11, Param12 p12, Param13 p13, Param14 p14, Param15 p15, Param16 p16) const
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1p2p3p4p5p6p7p8p9p10p11p12p13p14p15p16), (Param1Param2Param3Param4Param5Param6Param7Param8Param9Param10Param11Param12Param13Param14Param15Param16))
|
||||
SH_MAKE_EXECUTABLECLASS_OB((p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16), (Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15, Param16))
|
||||
|
||||
};
|
||||
}
|
||||
@ -1813,3 +1819,4 @@ SH_CALL(SourceHook::CallClass<Y> *ptr, RetType(X::*mfp)(Param1, Param2, Param3,
|
||||
|
||||
#endif
|
||||
// The pope is dead. -> :(
|
||||
|
||||
|
23
sourcehook/test/Makefile
Normal file
23
sourcehook/test/Makefile
Normal file
@ -0,0 +1,23 @@
|
||||
CC=gcc
|
||||
CCFLAGS=-c -I.. -DSH_DEBUG
|
||||
|
||||
test.bin: bin bin/main.o bin/test1.o bin/test2.o bin/sourcehook.o
|
||||
$(CC) bin/main.o bin/test1.o bin/test2.o bin/sourcehook.o -lstdc++ -o test.bin
|
||||
|
||||
bin:
|
||||
mkdir bin
|
||||
|
||||
bin/main.o: main.cpp ../sourcehook.h
|
||||
$(CC) $(CCFLAGS) -o bin/main.o main.cpp
|
||||
|
||||
bin/test1.o: test1.cpp ../sourcehook.h
|
||||
$(CC) $(CCFLAGS) -o bin/test1.o test1.cpp
|
||||
|
||||
bin/test2.o: test2.cpp ../sourcehook.h
|
||||
$(CC) $(CCFLAGS) -o bin/test2.o test2.cpp
|
||||
|
||||
bin/sourcehook.o: ../sourcehook.cpp ../sourcehook.h
|
||||
$(CC) $(CCFLAGS) -o bin/sourcehook.o ../sourcehook.cpp
|
||||
|
||||
../sourcehook.h: ../generate/sourcehook.hxx
|
||||
(cd ../generate; ./generate 16)
|
@ -71,4 +71,5 @@ int main(int argc, char *argv[])
|
||||
|
||||
char x;
|
||||
cin.read(&x, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -733,4 +733,5 @@ bool TestBasic(std::string &error)
|
||||
SH_REMOVE_HOOK_MEMFUNC(Test, F9, pTest, &f1_handlers, &HandlersF1::Pre, false);
|
||||
SH_REMOVE_HOOK_MEMFUNC(Test, F10, pTest, &f1_handlers, &HandlersF1::Pre, false);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -106,4 +106,5 @@ bool TestVafmtAndOverload(std::string &error)
|
||||
SH_RELEASE_CALLCLASS(cc);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,9 @@
|
||||
#ifndef __TESTEVENTS_H__
|
||||
#define __TESTEVENTS_H__
|
||||
|
||||
#include <typeinfo>
|
||||
#include <stdarg.h>
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
@ -69,4 +72,5 @@ namespace
|
||||
|
||||
#define CHECK_STATES(mwah, myerr) if (!StatesOk mwah) { error=myerr; return false; }
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user