使用lua扩展应用程序
- 全局变量的操作
void lua_getglobal(lua_State * L ,const char * name)
此函数从lua中取出一个名为name的全局变量并将其压入栈中。
如当lua文件内容为
width = 200
height = 300时,以下代码
int _tmain(int argc, _TCHAR* argv[])
{ lua_State *L = luaL_newstate();
luaL_openlibs(L); if( != luaL_loadfile(L,"config_width_height.lua"))
{
printf("loadbuff error :%s",lua_tostring(L,-));
lua_pop(L,-);
}
if( != lua_pcall(L,,,))
{
printf("pcall error :%s",lua_tostring(L,-));
lua_pop(L,-);
} lua_getglobal(L,"width");
printf("width = %d\n",lua_tointeger(L,-));
lua_getglobal(L,"height");
printf("height = %d\n",lua_tointeger(L,-)); lua_settop(L,);
lua_close(L); system("pause");
return ;
}
运行结果为
width = 200height = 300
请按任意键继续. . .
2. table的操作
文件内容:
width = 200
height = 300background =
{r = 0,
g = 0,
b = 1
}
获取以上 r g b的代码
int red;
int blue;
int green;
lua_getglobal(L,"background"); //push table
if(lua_istable(L,-))
{
red = getfield(L,"r");
green = getfield(L,"g");
blue = getfield(L,"b");
printf("red:%d,green:%d blue:%d ",red,green,blue);
}
注意:getfield不是 lua内置函数。getfield函数如下。
/*假设table 们位于栈顶*/
int getfield(lua_State * L,const char * key)
{
int result ;
lua_pushstring(L,key); //push index
lua_gettable(L,-);//获取table //pop index push table[index]
if(!lua_isnumber(L,-))
printf("error is the value is not a value\n");
result = (int ) lua_tonumber(L,-) * MAX_COLOR;
lua_pop(L,);
return result;
}
使用lua扩展应用程序的更多相关文章
- 用lua扩展你的Nginx(整理)-----openresty
用lua扩展你的Nginx(整理) 首先得声明.这不是我的原创,是在网上搜索到的一篇文章,原著是谁也搞不清楚了.按风格应该是属于章亦春的文章. 整理花了不少时间,所以就暂写成原创吧. 一. 概述 Ng ...
- 如何用 MEF 扩展应用程序
最近在写一篇关于如何扩展 Visual Studio 编辑器的文章时,用到了 MEF,因此打算写一篇文章提一下这个技术点.本篇文章并不打算详细介绍 MEF,只是一个最简单的入门,相信您在阅读本篇文章后 ...
- 【开源】前端练手笔记,Chrome扩展应用程序(html+CSS+JS) (1)
项目名称:github-notification 项目地址:https://github.com/WQTeam/github-notification 说明:本人打算抽时间学习前端(html + cs ...
- 使用Managed Extensibility Framework方便的扩展应用程序
概述 Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)以及Duck Typing等.MEF为开发 ...
- Lua的协同程序初探
Content: 前两天把Lua的协同程序概念看了一下,不是很懂,只能说<Programming In Lua>中把它解释成线程让人很好的理解起来,但是真正去看的时候,收获并不是很大.第一 ...
- 给lnmp一键包中的nginx安装openresty的lua扩展
lnmp一键包(https://lnmp.org)本人在使用之后发现确实好用,能帮助我们快速搭建起lnmp.lamp和lnmpa的web生产环境,因此推荐大家可以多试试.但有的朋友可能需要使用open ...
- 在小程序中实现全局混入,以混入的形式扩展小程序的api
GitHub: https://github.com/WozHuang/mp-extend 相关文章: 小程序全局状态管理,在页面中获取globalData和使用globalSetData 通过页面预 ...
- linux下安装php的lua扩展
1. 进入管理员权限使用yum安装 readline(也可以使用wget下载后./configure 然后 make && make install进行安装) yum install ...
- lua使用笔记2:Linux 中安装php的lua扩展
安装lua扩展的前提是lua已经安装好,如果没有安装,参照 1.http://pecl.php.net/package/lua 下载lua扩展 或者Linux下直接输入 wget http://pec ...
随机推荐
- Android 各种功能代码收集
1.分享图片等文件到单个指定微信好友 /** * 分享信息到朋友 * * @param file * 假如图片的路径为path,那么file = new File(path); */ private ...
- VirtualBox虚拟机安装CentOS 7
新建虚拟机 因为比较简单,所以对于VirtualBox就不做过多介绍了,直接下载安装即可,安装好之后打开Oracle VM VirtualBox管理器,点击新建,选择Red Hat(根据windows ...
- codeforces-526B
题目连接:http://codeforces.com/contest/526/problem/B B. Om Nom and Dark Park time limit per test 1 secon ...
- jenkins新手入门教程
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 虽然jenkins提供了Window.Lin ...
- POJ 2100:Graveyard Design(Two pointers)
[题目链接] http://poj.org/problem?id=2100 [题目大意] 给出一个数,求将其拆分为几个连续的平方和的方案数 [题解] 对平方数列尺取即可. [代码] #include ...
- 九. 常用类库、向量与哈希3.Java语言包(java.lang)简介
Java语言包(java.lang)定义了Java中的大多数基本类,由Java语言自动调用,不需要显示声明.该包中包含了Object类,Object类是整个类层次结构的根结点,同时还定义了基本数据类型 ...
- Ubuntu 16.04没有/etc/default/rcS文件的UTC设置选项的问题解决
继续上一篇文章介绍了CentOS的时钟设置:http://www.cnblogs.com/EasonJim/p/8111747.html,大致的知道了BIOS在Linux的时区设置. 而现在关心的问题 ...
- 关于poedit打开po文件乱码的问题
由于poedit打开po文件时,无法识别译文使用的何种编码,因此需要在po文件头部加上以下代码: msgid "" msgstr "" "Plural ...
- Visio中插入公式
也可以直接插入MathType公式,我原来的word不显示MathType,现在显示了,不过插入后太小,那是因为字体小,拖动托大就行. 在word中插入-对象-公式3.0对象(安装MathType后, ...
- windows下搭建svn服务器
转自:http://www.cnblogs.com/cloud2rain/archive/2013/04/11/3015080.html 这篇文档非常好,转来学习,有一点就是把subversion创建 ...