extensions/sdktools/vcallbuilder.h
author Scott Ehlert <ds@alliedmods.net>
Sun Jul 08 09:46:27 2007 +0000 (2007-07-08)
changeset 1065 11756fc9fb63
parent 1031 d9cf44ddcd9c
child 1233 e9cfc03b9bb8
permissions -rw-r--r--
Wowzers
-Added support for CGameRules calls to SDKTools
-Changed some game names in sdktools.games.txt to descriptions
faluco@1031
     1
/**
faluco@1031
     2
 * vim: set ts=4 :
faluco@1031
     3
 * ===============================================================
faluco@1031
     4
 * SourceMod SDK Tools Extension
faluco@1031
     5
 * Copyright (C) 2004-2007 AlliedModders LLC. All rights reserved.
faluco@1031
     6
 * ===============================================================
faluco@1031
     7
 *
faluco@1031
     8
 * This program is free software; you can redistribute it and/or
faluco@1031
     9
 * modify it under the terms of the GNU General Public License
faluco@1031
    10
 * as published by the Free Software Foundation; either version 2
faluco@1031
    11
 * of the License, or (at your option) any later version.
faluco@1031
    12
 * This program is distributed in the hope that it will be useful,
faluco@1031
    13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
faluco@1031
    14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
faluco@1031
    15
 * GNU General Public License for more details.
faluco@1031
    16
 * 
faluco@1031
    17
 * You should have received a copy of the GNU General Public License
faluco@1031
    18
 * along with this program; if not, write to the Free Software
faluco@1031
    19
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
faluco@1031
    20
 *
faluco@1031
    21
 * Version: $Id$
faluco@1031
    22
 */
faluco@1031
    23
dvander@950
    24
#ifndef _INCLUDE_SOURCEMOD_VALVE_CALLER_H_
dvander@950
    25
#define _INCLUDE_SOURCEMOD_VALVE_CALLER_H_
dvander@950
    26
dvander@950
    27
#include <sh_stack.h>
dvander@950
    28
#include <extensions/IBinTools.h>
dvander@950
    29
#include "vdecoder.h"
dvander@950
    30
dvander@950
    31
using namespace SourceMod;
dvander@950
    32
using namespace SourceHook;
dvander@950
    33
dvander@950
    34
/**
dvander@950
    35
 * @brief Info necessary to call a Valve function
dvander@950
    36
 */
dvander@950
    37
struct ValveCall
dvander@950
    38
{
dvander@950
    39
	ICallWrapper *call;			/**< From IBinTools */
ds@1065
    40
	ValveCallType type;			/**< Call type */
dvander@950
    41
	ValvePassInfo *vparams;		/**< Valve parameter info */
dvander@950
    42
	ValvePassInfo *retinfo;		/**< Return buffer info */
dvander@950
    43
	ValvePassInfo *thisinfo;	/**< Thiscall info */
dvander@950
    44
	size_t stackSize;			/**< Stack size */
dvander@987
    45
	size_t stackEnd;			/**< End of the bintools stack */
dvander@950
    46
	unsigned char *retbuf;		/**< Return buffer */
dvander@950
    47
	CStack<unsigned char *> stk; /**< Parameter stack */
dvander@950
    48
dvander@950
    49
	unsigned char *stk_get();
dvander@950
    50
	void stk_put(unsigned char *ptr);
dvander@974
    51
	ValveCall();
dvander@950
    52
	~ValveCall();
dvander@950
    53
};
dvander@950
    54
dvander@950
    55
ValveCall *CreateValveVCall(unsigned int vtableIdx,
dvander@950
    56
							ValveCallType vcalltype,
dvander@950
    57
							const ValvePassInfo *retInfo,
dvander@950
    58
							const ValvePassInfo *params,
dvander@950
    59
							unsigned int numParams);
dvander@950
    60
dvander@953
    61
ValveCall *CreateValveCall(void *addr,
dvander@953
    62
							ValveCallType vcalltype,
dvander@953
    63
							const ValvePassInfo *retInfo,
dvander@953
    64
							const ValvePassInfo *params,
dvander@953
    65
							unsigned int numParams);
dvander@953
    66
dvander@950
    67
#endif //_INCLUDE_SOURCEMOD_VALVE_CALLER_H_