Lua使用实记(转)

c调用lua堆栈常用操作-------

===================初级========================

void lua_gettop() : 用于返回栈中元素的个数,同时也是栈顶元素的索引,因为栈底是1,所以栈中有多少个元素,栈顶索引就是多少。

void luasettop(int index) : 设置栈顶,也是设置栈的大小,多的去除,少的填nil。-- #define luapop(L,n) lua_settop(L,-(n)-1)

void lua_pushvalue(int index) : 拷贝索引index元素并压入栈。

void lua_remove(int index) : 删除索引index。

void lua_replace(int index) : 弹出栈顶元素,并将其替换到索引index元素。

void lua_getglobal(const char *name) : 把全局变量name压入栈顶。

void lua_pop(int n) : 推出栈顶(移除)n个元素。

void lua_insert(int index) : 弹出栈顶,并将其插入索引index中。

void lua_remove(int index) : 移除索引index的元素。

lua_is***(int index) 检查变量是不是某个类型,index指示变量的顺序,栈顶为-1。

lua_to***(int index) 获取栈中的变量,然后转换为某个指定的类型,并返回。

lua_push***() 压入某类型元素。

int lua_type(int index) : 获得索引index的值的类型。

===================中级========================

void lua_call(int nargs, int nresults) : 调用方法,其中nargs为参数数量,nresults为结果数量。栈中必须保持 ..... func , arg1 , arg2 ,art3 () ,表示栈顶,调用后func,arg都会消失,只留下结果,如果调用没有问题的话。

int lua_pcall(int nargs, int nresults, int errfunc) : 功能pcall与call一样,区别在最后多了个自定义错误处理,当调用出错后,会调用其栈中索引方法。pcall返回0为无错误,其他则表示调用有错。如果errfunc为0,则报错调用原始方法。

void lua_createtable(int narr, int nrec) : 创建一个narr行nrec列的table,将其压入栈。

void luanewtable() : 创建一个空表,将其压入栈。与luacreatetable(0,0)一个意思。

void luagetfield(int index, const char *k) : t[k],获取表(索引为t的表)中的k值,并压入栈。这个会调用被修改的_index的方法,如果被修改过的话。

void lua_setfield(int index, const char *k) : 设置t[k] = v,t为索引index的表,k为参数k值,v为栈顶元素,并弹出栈顶元素。此调用会触发修改过的newindex方法。

void lua_getglobal(const char *name) : 获取全局变量name,并压入栈顶。

void lua_setglobal(const char *name) : 弹出栈顶,并将其设置为全局变量name的值。

void luagettable(int index) : 弹出栈顶,并压入t[k]值,t为索引index的表,k为栈顶值。此方法将调用被修改的_index的方法,如果被修改过的话。

void luasettable(int index) : 设置表t[k]=v,t为索引index的表,v是栈顶元素,k为栈顶下面一个元素。例如 luasettable(-3) ---- table , "key" , "value" () ,表示栈顶。并弹出v(栈顶)和k(栈顶下面)元素,此调用会触发修改过的newindex方法。

void lua_rawget(int index) : 与gettable一样,但调用的索引方法是原始的。

void lua_rawset(int index) : 与settable一样,但调用的索引方法是原始的。

void lua_rawgeti(int index, int n) : 压入t[n]值,t为索引index的表,n为参数n,调用的索引方法是原始的。

void lua_rawseti(int index, int n) : 设置t[n]=v,t为索引index的表,v为栈顶值,n为参数n,并弹出栈顶元素。调用的索引方法为原始的。

int lua_getmetatable(int index) : 压入索引index的值的metatable,如果索引index的值有metatable则返回非0,否则返回0并不压入任何元素。

int lua_setmetatable(int index) : 弹出栈顶,并将其设置为索引index值的metatable。

void luaregister(const char *name, luaCFunction f) : 向lua注册名字为name的f方法。这个方法相当于 #define luaregister(L,n,f) (luapushcfunction(L, f), lua_setglobal(L, n))

传送门

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,729评论 0 38
  • 名称 说明 docLua 相关的文档,包括了编译文档、接口文档等 Makefile 编译Lua使用,在...
    一川烟草i蓑衣阅读 1,418评论 0 1
  • 第一篇 语言 第0章 序言 Lua仅让你用少量的代码解决关键问题。 Lua所提供的机制是C不擅长的:高级语言,动态...
    testfor阅读 2,649评论 1 7
  • 日本的肥胖率在全球是最低的,日本的女性也是以苗条、健康闻名。身材的胖瘦,虽然遗传起着比较重要的作用,但许多人也表示...
    清風长春阅读 433评论 0 0
  • 下午三点开会,共享单两点半到办公楼下,刚停好车,一光着膀子的小男孩过来问,“叔叔,能不能借你电话打个电话给我妈妈”...
    爱讲故事的萄萄爸阅读 295评论 0 0