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 ...
随机推荐
- C++ Socket 获取本机可用端口号(QT)
:加载套接字库,创建套接字(WSAStartup()/socket()): :绑定套接字到一个IP地址和一个端口上(bind()): :将套接字设置为监听模式等待连接请求(listen()): :请求 ...
- JDBC vs Hibernate(转)
jdbc和Hibernate区别 刚开始学习JAVA时,认为Hibernate是一个很神圣的东西,好像是会了SSH,就能走遍全世界一样.记得曾经在枫叶面试的时候,我们几个同学出还说这个公司怎么这么的落 ...
- 安装docker报错问题
安装docker容易出现错误的几种情况: 1.网络问题,无法下载完成的docker容器 2.linux内核版本必须是3.10及以上 3.可以选择使用aliyun的yum源,更好用 4.
- Linux操作系统各版本ISO镜像下载(包括oracle linux\redhat\centos\u
Linux操作系统各版本ISO镜像下载(包括oracle linux\redhat\centos\ubuntu\debian等) 1.Oracle Linux(下载地址) (1)OracleLinux ...
- cnn.py cs231n
n import numpy as np from cs231n.layers import * from cs231n.fast_layers import * from cs231n.layer_ ...
- 2018-12-25-Roslyn-如何使用-MSBuild-Copy-复制文件
title author date CreateTime categories Roslyn 如何使用 MSBuild Copy 复制文件 lindexi 2018-12-25 9:35:8 +080 ...
- VisualTreeHelper使用——使用BFS实现高效率的视觉对象搜索
BFS,即广度优先搜索,是一种典型的图论算法.BFS算法与DFS(深度优先搜索)算法相对应,都是寻找图论中寻路的常用算法,两者的实现各有优点. 其中DFS算法常用递归实现,也就是常见的一条路找到黑再找 ...
- 移动端fixed定位在底部,出现键盘后消失
jq var h=$(window).height(); $(window).resize(function() { if($(window).height()<h){ $('.nav').hi ...
- var与let循环中经典问题
循环1: 下面代码运行结果是输出10 <script> var a =[]; for(var i = 0;i<10;i++){ a[i] = function(){ consol ...
- word Stock Market Indices
Stock Market Indices USA Africa Asia and Pacific Canada Europe Middle East South America Internation ...