
lua学习
GJQI12
这个作者很懒,什么都没留下…
展开
-
tolua++实现分析
项目正在使用cocos2dx的lua绑定,绑定的方式是tolua++。对大规模使用lua代码信心不是很足,花了一些时间阅读tolua++的代码,希望对绑定实现的了解,有助于项目对lua代码的把控。从阅读结果上来看,起码在内存管理上,帮助还是很大的。1.tolua++如何将c++对象导入到lua里tolua++为每一个传入lua的对象建立一个userdata,userdata的值,是c++对...转载 2020-03-17 15:44:33 · 320 阅读 · 0 评论 -
tolua++ 源码分析
tolua++ 源码分析图中的黑色表示lua table,灰色表示userdata,浅灰=》light userdata,绿色=》内存tips:1, lua里的userdata是一块内存(lua_newuserdata时指定体积),有metatable,但是doesn't have any key。所以,每次访问一个usrdata,都一定是到它的metatable里找的。...转载 2020-03-17 15:32:11 · 657 阅读 · 0 评论 -
lua——userdata使用
userdata说明:0、Lua中使用userdata类型来表示在C中定义的类型。userdata只是提供了一块原始的内存区域,可以用来存储任何东西,并且,在lua中userdata没有任何预定义的操作。在C中调用函数lua_newuserdata会根据指定的大小分配一块内存,并将相应的userdata压入栈中,最后返回这个内存块的地址:void *lua_newuserdata(lua_St...转载 2020-03-17 10:09:42 · 1916 阅读 · 0 评论 -
Lua Userdata 的元表 (Metatable)
在Lua C API编程上,经常有一些博客会说,必须使用luaL_newmetatable和luaL_setmetatable来给userdata加元表。还说给userdata加的元表不是普通的table。于是本着不信邪的态度,我翻了一下源码并自己尝试写了一些测试。普通的表能做userdata的元表么对于这个问题,我觉得是可以的,因为Lua中只有这一种数据结构,不存在什么特别的表。cla...转载 2020-03-17 10:06:41 · 1088 阅读 · 0 评论 -
lua: userdata的metatable使用
1 如何封装c++的指针对于c++对象的lua包装,我们可以使用template<typename T>struct luaUserdataWrapper{luaUserdataWrapper() {}luaUserdataWrapper(const T& d) : data(d) {}T data;};class CObj...转载 2020-03-17 09:58:22 · 535 阅读 · 0 评论 -
Lua中的weak表——weak table
弱表(weak table)是一个很有意思的东西,像C++/Java等语言是没有的。弱表的定义是:A weak table is a table whose elements are weak references,元素为弱引用的表就叫弱表。有弱引用那么也就有强引用,有引用那么也就有非引用。我们先要厘这些基本概念:变量、值、类型、对象。 (1)变量与值:Lua是一个dynamically t...转载 2020-03-13 16:43:56 · 658 阅读 · 0 评论 -
Lua5.3——C API函数
一、前言这里按字母次序列出了所有C API中的函数和类型。每个函数都有一个这样的提示: [-o, +p, x]对于第一个域,o,指的是该函数会从栈上弹出多少个元素。第二个域,p,指该函数会将多少个元素压栈。(所有函数都会在弹出参数后再把结果压栈。)x|y这种形式的 域表示该函数根据具体情况可能压入(或弹出)x或 y 个元素;问号 '?' 表示 我们...转载 2018-07-05 20:28:04 · 1307 阅读 · 0 评论 -
Lua笔记-关于lua table的C API
//Lua笔记-关于lua table的C API //Lua版本5.2 /*相关API: lua_createtable 原型: void lua_createtable (lua_State *L, int narr, int nrec); 描述: 创建一个新的table并将之放在栈顶.narr是该table数组部分的长度,nrec是该table hash部分的长度. ...转载 2018-07-18 21:48:54 · 990 阅读 · 0 评论