| author | David Anderson <dvander@alliedmods.net> |
| Sun Jun 17 19:39:11 2007 +0000 (2007-06-17) | |
| changeset 974 | a949f2138d3a |
| parent 954 | 3dd58fa4ccdc |
| child 987 | 242d2382cc41 |
| permissions | -rw-r--r-- |
| dvander@950 | 1 |
#ifndef _INCLUDE_SOURCEMOD_VALVE_CALLER_H_ |
| dvander@950 | 2 |
#define _INCLUDE_SOURCEMOD_VALVE_CALLER_H_ |
| dvander@950 | 3 |
|
| dvander@950 | 4 |
#include <sh_stack.h> |
| dvander@950 | 5 |
#include <extensions/IBinTools.h> |
| dvander@950 | 6 |
#include "vdecoder.h" |
| dvander@950 | 7 |
|
| dvander@950 | 8 |
using namespace SourceMod; |
| dvander@950 | 9 |
using namespace SourceHook; |
| dvander@950 | 10 |
|
| dvander@950 | 11 |
/** |
| dvander@950 | 12 |
* @brief Info necessary to call a Valve function |
| dvander@950 | 13 |
*/ |
| dvander@950 | 14 |
struct ValveCall |
| dvander@950 | 15 |
{ |
| dvander@950 | 16 |
ICallWrapper *call; /**< From IBinTools */ |
| dvander@950 | 17 |
ValvePassInfo *vparams; /**< Valve parameter info */ |
| dvander@950 | 18 |
ValvePassInfo *retinfo; /**< Return buffer info */ |
| dvander@950 | 19 |
ValvePassInfo *thisinfo; /**< Thiscall info */ |
| dvander@950 | 20 |
size_t stackSize; /**< Stack size */ |
| dvander@950 | 21 |
unsigned char *retbuf; /**< Return buffer */ |
| dvander@950 | 22 |
CStack<unsigned char *> stk; /**< Parameter stack */ |
| dvander@950 | 23 |
|
| dvander@950 | 24 |
unsigned char *stk_get(); |
| dvander@950 | 25 |
void stk_put(unsigned char *ptr); |
| dvander@974 | 26 |
ValveCall(); |
| dvander@950 | 27 |
~ValveCall(); |
| dvander@950 | 28 |
}; |
| dvander@950 | 29 |
|
| dvander@950 | 30 |
ValveCall *CreateValveVCall(unsigned int vtableIdx, |
| dvander@950 | 31 |
ValveCallType vcalltype, |
| dvander@950 | 32 |
const ValvePassInfo *retInfo, |
| dvander@950 | 33 |
const ValvePassInfo *params, |
| dvander@950 | 34 |
unsigned int numParams); |
| dvander@950 | 35 |
|
| dvander@953 | 36 |
ValveCall *CreateValveCall(void *addr, |
| dvander@953 | 37 |
ValveCallType vcalltype, |
| dvander@953 | 38 |
const ValvePassInfo *retInfo, |
| dvander@953 | 39 |
const ValvePassInfo *params, |
| dvander@953 | 40 |
unsigned int numParams); |
| dvander@953 | 41 |
|
| dvander@950 | 42 |
#endif //_INCLUDE_SOURCEMOD_VALVE_CALLER_H_ |