博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lua 自定义lib
阅读量:5897 次
发布时间:2019-06-19

本文共 1578 字,大约阅读时间需要 5 分钟。

  hot3.png

struct NumArray{    size_t size;    double values[1];};static int newarray(lua_State*L){    int n = luaL_checkint(L,1);    size_t nbytes = sizeof(NumArray) + (n-1)*sizeof(double);    NumArray*a = (NumArray*)lua_newuserdata(L,nbytes);    a->size = n;    return 1;}static int setarray(lua_State *L){    NumArray*a = (NumArray*)lua_touserdata(L,1);    int index = luaL_checkint(L,2);    double value = luaL_checknumber(L,3);    luaL_argcheck(L,a!= NULL,1,"array expected");    luaL_argcheck(L,1<= index && index <= a->size ,2,"index out of range");    a->values[index - 1] = value;    return 0;}static int getarray (lua_State *L){    NumArray *a = (NumArray *)lua_touserdata(L, 1);    int index = luaL_checkint(L, 2);    luaL_argcheck(L, a != NULL, 1, "'array' expected");    luaL_argcheck(L, 1 <= index && index <= a->size, 2,                  "index out of range");    lua_pushnumber(L, a->values[index-1]);    return 1;}static int getsize (lua_State *L){    NumArray *a = (NumArray *)lua_touserdata(L, 1);    luaL_argcheck(L, a != NULL, 1, "`array' expected");    lua_pushnumber(L, a->size);    return 1;}static const struct luaL_Reg arraylib [] = {    {"new", newarray},    {"set", setarray},    {"get", getarray},    {"size", getsize},    {NULL, NULL}};int luaopen_array (lua_State *L) {    luaL_newlib(L,arraylib);    lua_setglobal(L,"array");    return 1;}

a = array.new(1000)print(a)                 --> userdata: 0x8064d48print(array.size(a))     --> 1000for i=1,1000 do    array.set(a, i, 1/i)endprint(array.get(a, 10))  --> 0.1

转载于:https://my.oschina.net/lyr/blog/144029

你可能感兴趣的文章
minio 并发数_MinIO 参数解析与限制
查看>>
flash back mysql_mysqlbinlog flashback 使用最佳实践
查看>>
mysql存储引擎模式_MySQL存储引擎
查看>>
python类 del_全面了解Python类的内置方法
查看>>
java jni 原理_使用JNI技术实现Java和C++的交互
查看>>
java 重写system.out_重写System.out.println(String x)方法
查看>>
配置ORACLE 11g绿色版客户端和PLSQL远程连接环境
查看>>
ASP.NET中 DataList(数据列表)的使用前台绑定
查看>>
Linux学习之CentOS(八)--Linux系统的分区概念
查看>>
System.Func<>与System.Action<>
查看>>
asp.net开源CMS推荐
查看>>
csharp skype send message in winform
查看>>
MMORPG 游戏服务器端设计--转载
查看>>
SILK 的 Tilt的意思
查看>>
Html学习笔记3
查看>>
HDFS dfsclient写文件过程 源码分析
查看>>
ubuntu下安装libxml2
查看>>
nginx_lua_waf安装测试
查看>>
WinForm窗体缩放动画
查看>>
JQuery入门(2)
查看>>