Polyphase Game Engine
Loading...
Searching...
No Matches
ScriptAutoReg.h File Reference
#include "Utilities.h"
#include "Log.h"

Go to the source code of this file.

Classes

struct  AutoRegData
 
struct  ScriptFuncAutoReg
 

Macros

#define DECLARE_SCRIPT_LINK(Type, ParentType, TopType)
 
#define DEFINE_SCRIPT_LINK(Type, ParentType, TopType)
 
#define DECLARE_SCRIPT_LINK_BASE(Base)
 
#define DEFINE_SCRIPT_LINK_BASE(Base)
 
#define REGISTER_SCRIPT_FUNCS()
 

Functions

std::vector< AutoRegData > & GetGlobalAutoRegArray ()
 
void InitAutoRegScripts ()
 

Macro Definition Documentation

◆ DECLARE_SCRIPT_LINK

#define DECLARE_SCRIPT_LINK (   Type,
  ParentType,
  TopType 
)
Value:
static bool sRegisteredScriptFuncs_##Type; \
virtual void RegisterScriptFuncs(lua_State* L) override;

◆ DECLARE_SCRIPT_LINK_BASE

#define DECLARE_SCRIPT_LINK_BASE (   Base)
Value:
virtual void RegisterScriptFuncs(lua_State* L); \
static void BindCommonLuaFuncs(lua_State* L, int mtIndex);

◆ DEFINE_SCRIPT_LINK

#define DEFINE_SCRIPT_LINK (   Type,
  ParentType,
  TopType 
)
Value:
bool Type::sRegisteredScriptFuncs_##Type = false; \
static std::vector<AutoRegData> sAutoRegs_##Type; \
void Type::RegisterScriptFuncs(lua_State* L) { \
if (Type::sRegisteredScriptFuncs_##Type) { return; } \
ParentType::RegisterScriptFuncs(L); \
int mtIndex = CreateClassMetatable(#Type, "cf" #Type, #ParentType); \
TopType::BindCommonLuaFuncs(L, mtIndex); \
for (AutoRegData& data : sAutoRegs_##Type) { \
lua_pushstring(L, data.mFuncName); \
lua_pushcfunction(L, data.mFunc); \
lua_rawset(L, mtIndex); \
} \
lua_pop(L, 1); \
sAutoRegs_##Type.clear(); \
sAutoRegs_##Type.shrink_to_fit(); \
Type::sRegisteredScriptFuncs_##Type = true; \
}
POLYPHASE_API int CreateClassMetatable(const char *className, const char *classFlag, const char *parentClassName)
Definition ScriptAutoReg.h:45

◆ DEFINE_SCRIPT_LINK_BASE

#define DEFINE_SCRIPT_LINK_BASE (   Base)
Value:
void Base::RegisterScriptFuncs(lua_State* L){ } \
void Base::BindCommonLuaFuncs(lua_State* L, int mtIndex) { Base##_Lua::BindCommon(L, mtIndex); }

◆ REGISTER_SCRIPT_FUNCS

#define REGISTER_SCRIPT_FUNCS ( )
Value:
lua_State* L = GetLua(); \
if (L != nullptr) \
{ \
RegisterScriptFuncs(L); \
}
lua_State * GetLua()
Definition Engine.cpp:1765

Function Documentation

◆ GetGlobalAutoRegArray()

std::vector< AutoRegData > & GetGlobalAutoRegArray ( )

◆ InitAutoRegScripts()

void InitAutoRegScripts ( )