lua在C/C++中使用table生成对应键及值
int nTop = lua_gettop(L); // 栈内初始数,假设当前为0 lua_newtable(L); // push table lua_pushstring(L,"Line"); // push key "Line"
lua_pushcfunction(L, Line); // push value (function)Line; // int Line(lua_State* pLua)
// 当前栈值对应类型: table(-3),string(-2),function(-1)
lua_settable(L,-); // table["Line"] = Line, pop key(-2) & value(-1)
// 当前栈值对应类型: table(-1) lua_pushstring(L, "Circle"); // push key "Circle"
lua_pushcfunction(L, Circle); // push value (function)Circle; // int Circle(lua_State* pLua)
lua_settable(L, -); // table["Circle"] = Circle, pop key & value, pop key(-2) & value(-1) lua_setglobal(L,"Draw"); // 设置table(stack top)为全局变量,表名为Draw, 同时 pop stacktop
// 当前栈为空 lua_settop(L,nTop); // 设置栈顶为初始数 lua_dostring(L,"Draw.Line(100,50,34,34)"); //lua调用C/C++中的Line函数. 全局变量Draw(table),key("Line")对应的函数(int Line(lua_State* pLua)),100,50,34,34,依次push入栈
// 查看lua栈内容
void stackDump(lua_State* L)
{
int top = lua_gettop(L);
for (int i = ; i <= top; ++i)
{
int t = lua_type(L, i);
switch (t)
{
case LUA_TSTRING:
printf("'%s'", lua_tostring(L, i));break;
case LUA_TBOOLEAN:
printf(lua_toboolean(L, i) ? "true" : "false");break;
case LUA_TNUMBER:
printf("'%g'", lua_tonumber(L, i));break;
default:
printf("'%s'", lua_typename(L, t));break;
}
printf(" ");
}
printf("\n"); }
lua在C/C++中使用table生成对应键及值的更多相关文章
- Entity Framework Core 使用HiLo生成主键
#cnblogs_post_body.cnblogs-markdown p img { max-width: 95%; } HiLo是在NHiernate中生成主键的一种方式,不过现在我们可以在Ent ...
- JPA 不生成外键
在用jpa这种orm框架时,有时我们实体对象存在关联关系,但实际的业务场景可能不需要用jpa来控制数据库创建数据表之间的关联约束,这时我们就需要消除掉数据库表与表之间的外键关联.但jpa在处理建立外键 ...
- 【转】ASP.NET中服务器控件Table动态生成表格及其属性介绍
下文所有内容转自开源中国:http://www.oschina.net/question/565065_86453#tags_nav ================================= ...
- Lua中使用table实现的其它5种数据结构
Lua中使用table实现的其它5种数据结构 lua中的table不是一种简单的数据结构,它可以作为其他数据结构的基础,如:数组,记录,链表,队列等都可以用它来表示. 1.数组 在lua中,table ...
- 递归打印lua中的table
在lua中,table是比较常用的数据形式,有时候为了打印出里面的内容,需要做一些特殊处理. 废话不多讲,直接粘代码: print = release_print -- 递归打印table local ...
- lua中遍历table的几种方式比较
当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbtes ...
- Lua中的table函数库
table.concat(table, sep, start, end) concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组 ...
- ABAP中的Table Control编程
SAP中,Table Control是在Screen中用的最广泛的控件之一了,可以实现对多行数据的编辑. 简单来说,Table Control是一组屏幕元素在Screen上的重 ...
- (DT系列五)Linux kernel 是怎么将 devicetree中的内容生成plateform_device
Linux kernel 是怎么将 devicetree中的内容生成plateform_device 1,实现场景(以Versatile Express V2M为例说明其过程)以arch/arm/ma ...
随机推荐
- leetcode 198-234 easy
198. House Robber 相邻不能打劫,取利益最大化. 思想:当前值和前一个和的总数 与 前一个和 做大小比较,取最大值,重复该步骤. class Solution { publ ...
- 火狐下button标签子元素无法点击
button下元素点击事件:在chrome和safari下每个a标签可以点击,在火狐下a标签无法点击. <button> <a href="javascript:;&quo ...
- locationManager 回调方法不调用问题?
当locationManager都设置好了后开始定位服务后回调方法didUpdateToLocation不调用 [_locationManager setDelegate:self]; [_locat ...
- 【纯手工】整理豆瓣热点推荐列表-财经&自我管理
[纯手工]整理豆瓣热点推荐列表-财经&自我管理 简七君 2013-10-27 09:40:06 豆瓣君的首页热点推荐实在难以捉摸,只有正好跳出推荐贴时才能按图索骥找列表.简七和小伙伴 ...
- 从0开始学习 GitHub 系列之「04.向GitHub 提交代码」
之前的这篇文章「从0开始学习 GitHub 系列之「Git速成」」相信大家都已经对 Git 的基本操作熟悉了,但是这篇文章只介绍了对本地 Git 仓库的基本操作,今天我就来介绍下如何跟远程仓库一起协作 ...
- Python学习笔记(四)Python程序的控制结构
在学习了 Python 的基本数据类型后,我们就要开始接触Python程序的控制结构,了解 Python 是如何使用控制结构来更改程序的执行顺序以满足多样的功能需求.如果有的小伙伴在之前学过C语言,j ...
- git解决冲突的最佳方法
用eclipse egit 去pull 代码出现冲突 点击details 全选复制到记事本上 如上图选择3个冲突中的一个 eclipse快捷键 ctrl + shift+R 张贴 回车 ...
- 如何使我们的薪资15k?
以下我们来探讨一下如何才能使我们具备高薪15K的能力? 要想使自己的薪资成为15K,我首先想到的是我们的能力?编码能力?语言表达能力? 我觉得为之重要的则是我们的综合能力: 方方面面的能力.综合素质: ...
- 【JZOJ2758】【SDOI2012】走迷宫(labyrinth)
╰( ̄▽ ̄)╭ Morenan 被困在了一个迷宫里. 迷宫可以视为 N 个点 M 条边的有向图,其中 Morena n处于起点 S , 迷宫的终点设为 T . 可惜的是 , Morenan 非常的脑小 ...
- node服务器的配置
安装node 安装pm2 http://blog.csdn.net/chenlinIT/article/details/73343793 安装mongodbhttp://zixuephp.net/ar ...