Update the CInterface

This commit is contained in:
Lukas Joergensen 2018-04-21 10:11:01 +02:00
parent 951ca817bb
commit 8cdad51639
10 changed files with 576 additions and 985 deletions

View file

@ -21,10 +21,41 @@
//-----------------------------------------------------------------------------
#pragma once
#include "platform/platformDlibrary.h"
#include "console/engineAPI.h"
#include "console/simBase.h"
// cinterface can override this (useful for plugins, etc)
extern "C" {
#define CALL_CINTERFACE_FUNCTION(name, ...){const char *v[] = { __VA_ARGS__ }; CInterface::CallFunction(name, v, sizeof(v) / sizeof(*v));}
const char* torque_getexecutablepath();
class CInterface {
typedef bool(*IsMethodCallback)(const char* className, const char* methodName);
typedef void(*CallMainCallback)();
typedef const char* (*CallFunctionCallback)(const char* nameSpace, const char* name, const char **argv, int argc, bool *result);
typedef const char* (*CallMethodCallback)(const char* className, const char* classNamespace, U32 object, const char* name, const char **argv, int argc, bool *result);
IsMethodCallback mIsMethodCallback;
CallFunctionCallback mFunctionCallback;
CallMethodCallback mMethodCallback;
CallMainCallback mMainCallback;
const char* _CallFunction(const char* nameSpace, const char* name, const char **argv, int argc, bool *result) const;
const char* _CallMethod(const char* className, const char* classNamespace, U32 object, const char* name, const char **argv, int argc, bool *res) const;
void _CallMain(bool *res) const;
bool _isMethod(const char* className, const char* methodName) const;
public:
CInterface()
{
mFunctionCallback = NULL;
mMethodCallback = NULL;
mIsMethodCallback = NULL;
mMainCallback = NULL;
}
}
static const char* CallFunction(const char* nameSpace, const char* name, const char **argv, int argc, bool *result);
static const char* CallMethod(SimObject* obj, const char* name, const char **argv, int argc, bool *res);
static void CallMain(bool *res);
static bool isMethod(const char* className, const char* methodName);
static CInterface& GetCInterface();
void SetCallFunctionCallback(void* ptr) { mFunctionCallback = (CallFunctionCallback)ptr; };
void SetCallMethodCallback(void* ptr) { mMethodCallback = (CallMethodCallback)ptr; };
void SetCallIsMethodCallback(void* ptr) { mIsMethodCallback = (IsMethodCallback)ptr; };
void SetMainCallback(void* ptr) { mMainCallback = (CallMainCallback)ptr; };
};