Files
BlockLua/inc/tsfuncs/BlFuncs.hpp

137 lines
5.6 KiB
C++

//////////////////////////////////////////////////
// BlFuncs Version 1.0
#ifndef _H_BLFUNCS
#define _H_BLFUNCS
// Ensure BlHooks is available (include it if not already included)
#ifndef _H_BLHOOKS
#include "BlHooks.hpp"
#endif
typedef const char *(*tsf_StringCallback)(ADDR, signed int, const char *[]);
typedef signed int (*tsf_IntCallback)(ADDR, signed int, const char *[]);
typedef float (*tsf_FloatCallback)(ADDR, signed int, const char *[]);
typedef void (*tsf_VoidCallback)(ADDR, signed int, const char *[]);
typedef bool (*tsf_BoolCallback)(ADDR, signed int, const char *[]);
/* These functions are used for tsf_BlCon__executefSimObj.
They refer to a special buffer for the argument stack.
For tsf_BlCon__executef, you need to use your own buffers. */
char *tsf_GetIntArg(int);
char *tsf_GetFloatArg(float);
char *tsf_ScriptThis(ADDR);
const char *tsf_Eval(const char *);
const char *tsf_Evalf(const char *, ...);
ADDR tsf_FindObject(unsigned int);
ADDR tsf_FindObject(const char *);
ADDR tsf_LookupNamespace(const char *, const char *);
const char *tsf_GetDataField(ADDR, const char *, const char *);
void tsf_SetDataField(ADDR, const char *, const char *, const char *);
const char *tsf_GetVar(const char *);
void tsf_AddVarInternal(const char *, signed int, void *);
void tsf_AddVar(const char *, const char **);
void tsf_AddVar(const char *, signed int *);
void tsf_AddVar(const char *, float *);
void tsf_AddVar(const char *, bool *);
ADDR tsf_AddConsoleFuncInternal(const char *, const char *, const char *,
signed int, const char *, signed int,
signed int);
void tsf_AddConsoleFunc(const char *, const char *, const char *,
tsf_StringCallback, const char *, signed int,
signed int);
void tsf_AddConsoleFunc(const char *, const char *, const char *,
tsf_IntCallback, const char *, signed int, signed int);
void tsf_AddConsoleFunc(const char *, const char *, const char *,
tsf_FloatCallback, const char *, signed int,
signed int);
void tsf_AddConsoleFunc(const char *, const char *, const char *,
tsf_VoidCallback, const char *, signed int, signed int);
void tsf_AddConsoleFunc(const char *, const char *, const char *,
tsf_BoolCallback, const char *, signed int, signed int);
bool tsf_InitInternal();
extern ADDR tsf_mCacheSequence;
extern ADDR tsf_mCacheAllocator;
extern ADDR tsf_gIdDictionary;
extern ADDR tsf_gEvalState_globalVars;
BlFunctionDefExtern(const char *, __stdcall, tsf_BlStringTable__insert,
const char *, bool);
BlFunctionDefExtern(ADDR, __fastcall, tsf_BlNamespace__find, const char *,
const char *);
BlFunctionDefExtern(ADDR, __thiscall, tsf_BlNamespace__createLocalEntry, ADDR,
const char *);
BlFunctionDefExtern(void, __thiscall, tsf_BlDataChunker__freeBlocks, ADDR);
BlFunctionDefExtern(const char *, , tsf_BlCon__evaluate, ADDR, signed int,
const char **);
BlFunctionDefExtern(const char *, , tsf_BlCon__executef, signed int, ...);
BlFunctionDefExtern(const char *, , tsf_BlCon__executefSimObj, ADDR *,
signed int, ...);
BlFunctionDefExtern(const char *, __thiscall, tsf_BlCon__getVariable,
const char *);
BlFunctionDefExtern(void, __thiscall, tsf_BlDictionary__addVariable, ADDR *,
const char *, signed int, void *);
BlFunctionDefExtern(ADDR *, __thiscall, tsf_BlSim__findObject_name,
const char *);
BlFunctionDefExtern(char *, __stdcall, tsf_BlStringStack__getArgBuffer,
unsigned int);
BlFunctionDefExtern(const char *, __thiscall, tsf_BlSimObject__getDataField,
ADDR, const char *, const char *);
BlFunctionDefExtern(void, __thiscall, tsf_BlSimObject__setDataField, ADDR,
const char *, const char *, const char *);
BlFunctionDefExtern(char *, __fastcall, tsf_BlCon__getReturnBuffer,
unsigned int);
// Function short names
#define BlEval tsf_Eval
#define BlEvalf tsf_Evalf
#define BlIntArg tsf_GetIntArg
#define BlFloatArg tsf_GetFloatArg
#define BlThisArg tsf_GetThisArg
#define BlStringArg(x) tsf_GetStringArg((char *)x)
#define BlReturnBuffer tsf_BlCon__getReturnBuffer
#define BlObject tsf_FindObject
#define BlNamespace tsf_LookupNamespace
#define BlGetField tsf_GetDataField
#define BlSetField tsf_SetDataField
#define BlGetVar tsf_GetVar
#define BlAddVar tsf_AddVar
#define BlAddFunction tsf_AddConsoleFunc
#define __22ND_ARGUMENT(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, \
a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, ...) \
a22
#define __NUM_LIST(...) \
__22ND_ARGUMENT(dummy, ##__VA_ARGS__, 20, 19, 18, 17, 16, 15, 14, 13, 12, \
11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
#define BlCall(...) tsf_BlCon__executef(__NUM_LIST(__VA_ARGS__), __VA_ARGS__)
#define BlCallObj(obj, ...) \
tsf_BlCon__executefSimObj((ADDR *)obj, __NUM_LIST(__VA_ARGS__), __VA_ARGS__)
#define BlFuncsInit() \
if (!tsf_InitInternal()) { \
return false; \
}
#define BlFuncsDeinit() \
if (!tsf_DeinitInternal()) { \
return false; \
}
#endif