72 lines
2.6 KiB
C++
72 lines
2.6 KiB
C++
#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);
|
||
}
|
||
|
||
};
|