extensions/sdktools/vcallbuilder.h
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--
fixed an initialization bug in ValveCall
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_