114 lines
5.4 KiB
C++
114 lines
5.4 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
|