3#include <Core/CoreDLL.h>
4#include <Foundation/Logging/Log.h>
5#include <Foundation/Strings/String.h>
7#ifdef BUILDSYSTEM_ENABLE_LUA_SUPPORT
9# if PL_ENABLED(PL_PLATFORM_WINDOWS_UWP)
12# include <Lua/lauxlib.h>
14# include <Lua/luaconf.h>
15# include <Lua/lualib.h>
17# include <Lua/lua.hpp>
32class PL_CORE_DLL plLuaWrapper
34 PL_DISALLOW_COPY_AND_ASSIGN(plLuaWrapper);
44 plLuaWrapper(lua_State* s);
57 lua_State* GetLuaState();
68 plResult ExecuteString(
const char* szString,
const char* szDebugChunkName =
"chunk",
81 plResult OpenTable(
const char* szTable);
84 plResult OpenTableFromParameter(plUInt32 uiFunctionParameter);
90 void CloseAllTables();
93 void PushTable(
const char* szTableName,
bool bGlobalTable);
101 bool IsVariableAvailable(
const char* szVariable)
const;
104 bool IsFunctionAvailable(
const char* szFunction)
const;
112 int GetIntVariable(
const char* szName, plInt32 iDefault = 0)
const;
115 bool GetBoolVariable(
const char* szName,
bool bDefault =
false)
const;
118 float GetFloatVariable(
const char* szName,
float fDefault = 0.0f)
const;
121 const char* GetStringVariable(
const char* szName,
const char* szDefault =
"")
const;
129 void SetVariableNil(
const char* szName)
const;
132 void SetVariable(
const char* szName, plInt32 iValue)
const;
135 void SetVariable(
const char* szName,
bool bValue)
const;
138 void SetVariable(
const char* szName,
float fValue)
const;
141 void SetVariable(
const char* szName,
const char* szValue)
const;
144 void SetVariable(
const char* szName,
const char* szValue, plUInt32 uiLen)
const;
152 void RegisterCFunction(
const char* szFunctionName, lua_CFunction function,
void* pLightUserData =
nullptr)
const;
156 bool PrepareFunctionCall(
const char* szFunctionName);
164 plResult CallPreparedFunction(plUInt32 uiExpectedReturnValues = 0,
plLogInterface* pLogInterface =
nullptr);
168 void DiscardReturnValues();
181 plInt32 ReturnToScript()
const;
190 void PushParameter(plInt32 iParam);
194 void PushParameter(
bool bParam);
198 void PushParameter(
float fParam);
202 void PushParameter(
const char* szParam);
206 void PushParameter(
const char* szParam, plUInt32 uiLength);
210 void PushParameterNil();
218 void* GetFunctionLightUserData()
const;
221 plUInt32 GetNumberOfFunctionParameters()
const;
224 bool IsParameterInt(plUInt32 uiParameter)
const;
227 bool IsParameterBool(plUInt32 uiParameter)
const;
230 bool IsParameterFloat(plUInt32 uiParameter)
const;
233 bool IsParameterTable(plUInt32 uiParameter)
const;
236 bool IsParameterString(plUInt32 uiParameter)
const;
239 bool IsParameterNil(plUInt32 uiParameter)
const;
242 int GetIntParameter(plUInt32 uiParameter)
const;
245 bool GetBoolParameter(plUInt32 uiParameter)
const;
248 float GetFloatParameter(plUInt32 uiParameter)
const;
251 const char* GetStringParameter(plUInt32 uiParameter)
const;
259 void PushReturnValue(plInt32 iParam);
262 void PushReturnValue(
bool bParam);
265 void PushReturnValue(
float fParam);
268 void PushReturnValue(
const char* szParam);
271 void PushReturnValue(
const char* szParam, plUInt32 uiLength);
274 void PushReturnValueNil();
278 bool IsReturnValueInt(plUInt32 uiReturnValue)
const;
281 bool IsReturnValueBool(plUInt32 uiReturnValue)
const;
284 bool IsReturnValueFloat(plUInt32 uiReturnValue)
const;
287 bool IsReturnValueString(plUInt32 uiReturnValue)
const;
290 bool IsReturnValueNil(plUInt32 uiReturnValue)
const;
294 int GetIntReturnValue(plUInt32 uiReturnValue)
const;
297 bool GetBoolReturnValue(plUInt32 uiReturnValue)
const;
300 float GetFloatReturnValue(plUInt32 uiReturnValue)
const;
303 const char* GetStringReturnValue(plUInt32 uiReturnValue)
const;
310 static void* lua_allocator(
void* ud,
void* ptr,
size_t osize,
size_t nsize);
316 bool m_bReleaseOnExit;
318 struct plScriptStates
325 plInt32 m_iParametersPushed = 0;
328 plInt32 m_iOpenTables = 0;
331 plInt32 m_iLuaReturnValues = 0;
334 plScriptStates m_States;
336 static constexpr plInt32 s_iParamOffset = 1;
339# include <Core/Scripting/LuaWrapper/LuaWrapper.inl>
Base class for all logging classes.
Definition Log.h:77
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54