Files
mir_server/server/LogicServer/script/hlp/LuaHlp.h

72 lines
2.6 KiB
C
Raw Normal View History

2025-01-09 17:45:40 +08:00
#pragma once
/************************************************************************/
/* */
/* LUA脚本辅助处理函数库 */
/* */
/************************************************************************/
namespace LuaHelp
{
/*
* Comments: dataCount为0则会向栈顶压入nil值
* Param lua_State * L: lua虚拟机对象
* Param LPCVOID lpData:
* Param SIZE_T sizeElement:
* Param SIZE_T dataCount:
* @Return VOID:
*/
VOID PushDataPointerToTable(lua_State *L, LPCVOID lpData, SIZE_T sizeElement, SIZE_T elementCount);
/*
* Comments:dataCount为0则会向栈顶压入nil值
* Param lua_State * L:lua虚拟机对象
* Param void * * lpData:
* Param SIZE_T elementCount:
* @Return VOID:
*/
VOID PushDataPointerToTable(lua_State *L, void** lpData, SIZE_T elementCount);
/*
* Comments: dataCount为0则会向栈顶压入nil值
* Param lua_State * L: lua虚拟机对象
* Param LPCVOID lpData:
* Param SIZE_T sizeElement:
* Param SIZE_T dataCount:
* @Return VOID:
*/
VOID PushStringsToTable(lua_State *L, LPCSTR *ppStrList, SIZE_T strCount);
/*
* Comments: LUA表对象序列化为ASCII脚本字符串
* Param lua_State * L: lua虚拟机对象
* Param INT_PTR stackId:
* Param wylib::stream::CBaseStream & stm:
* @Return SIZE_T:
*/
SIZE_T FormatTableA(lua_State *L, INT_PTR stackId, wylib::stream::CBaseStream &stm);
/*
* Comments: Lua堆栈里写入一个数值列表CVector<float>int a[10]
* Param lua_State * L:
* Param T * pData:
* Param INT_PTR elementCount:
* @Return VOID:
*/
template<class T>
VOID PushNumberVector(lua_State *L,T * pData,SIZE_T elementCount)
{
if(pData ==NULL) return;
if (elementCount > 0)
{
lua_createtable(L, (int)elementCount, 0);
for (SIZE_T i=1; i<=elementCount; ++i)
{
lua_pushnumber( L, (LUA_NUMBER)(* pData) );
lua_rawseti( L, -2, (int)i );
pData ++;
}
}
else lua_pushnil(L);
}
};