lua 中 调用 union 对象

最近用luatinker发现真的挺好用,不仅可以轻松把 c++ 中 class 和 struct 对象导给 lua来调用, 而且连union 对象一样可以支持。

和 class 一样,一个union 如果需要让 lua中能创建能使用 ,必须调用 class_add,class_con,class_mem 来把 union 的 名字,构造,和 成员都暴露给lua ,所不同的是 class里面把成员变量暴露给lua,而union需要把union里所有嵌入的结构体,类或是默认类型都暴露给lua。

 

 


 

lua_tinker::class_add<UDemoDataChunk>(m_pLuaSate, "UDataChunk");

lua_tinker::class_con<UDemoDataChunk>(m_pLuaSate, lua_tinker::constructor<UDemoDataChunk>);

lua_tinker::class_mem<UDemoDataChunk>(m_pLuaSate, "int8",&UDemoDataChunk::nData8);

lua_tinker::class_mem<UDemoDataChunk>(m_pLuaSate, "int16",&UDemoDataChunk::nData16);

lua_tinker::class_mem<UDemoDataChunk>(m_pLuaSate, "int32",&UDemoDataChunk::nData32);

lua_tinker::class_mem<UDemoDataChunk>(m_pLuaSate, "uint8",&UDemoDataChunk::nDataU8);

lua_tinker::class_mem<UDemoDataChunk>(m_pLuaSate, "uint16",&UDemoDataChunk::nDataU16);

lua_tinker::class_mem<UDemoDataChunk>(m_pLuaSate, "uint32",&UDemoDataChunk::nDataU32);

lua_tinker::class_mem<UDemoDataChunk>(m_pLuaSate, "float",&UDemoDataChunk::fFloat);

 

 


 

使用的时候其实和class 也差不多,下面是脚本里取和写的例子

 


 

print(dest:getDataChunk(0).int16)

 

data = UDataChunk()

data.int16 = -5000

dest:chgDataChunk(0,data,1)

 

 


 

其中需要注意的是 data是在lua中申请创建的,但是lua并不管这个临时对象的释放,因为不是它去申请的内存,而是通过c++这边的构造,所以在chgdatachunk这个接口函数里面需要把传入的union对象进行删除

还有一点不由得再夸一下luatinker了,不管getDataChunk接口函数返回的是union 对象,还是union的指针,甚至是union的引用,

dest:getDataChunk(0).int16 的这种写法都能识别出真正int16中所在的位置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值