向栈中压入数据:

lua_pushnil(lua_State*);

lua_pushboolean(lua_State*, bool);

lua_pushnumber(lua_State*, lua_Number);

lua_pushinteger(lua_State*, lua_Integer)

lua_pushlstring(lua_State*, const char*, size_t);

lua_pushstring(lua_State*, const char*);

获取栈中元素的类型

lua_type(lua_State* L, int index);

类型包括 LUA_TNIL, LUA_TBOOLEAN, LUA_TNUMBER, LUA_TSTRING, LUA_TTABLE, LUA_TFUNCTION, LUA_TUSERDATA

验证栈中的元素类型;

lua_is*(lua_State* L, int index)

其实有了lua_type()完全可以自己写类型验证的 每必要使用lua提供的API

比如可以定义

 bool lua_is_number (lua_State* L, int index)  {
return lua_type(L, index) == LUA_TNUMBER ? true : false;
}

所以完全是可以利用lua_type来自行定义对栈中元素的验证的。

获取栈中元素的类型的字符串表示:

lua_typename(lua_State*, int )这里的int值是通过lua_type()获取到的值

其实这些都可以通过lua_type(lua_State*)来进行实现

const char*  lua_type_str(int lua_type) {
static char type[LUA_TYPE_LEN_MAX];
switch (lua_type) {
case LUA_TNIL:
strcpy(type, "nil");
break; case LUA_TBOOLEAN:
strcpy(type, "boolean");
break; case LUA_TNUMBER:
strcpy(type, "number");
break; case LUA_TSTRING:
strcpy(type, "string");
break; case LUA_TTABLE:
strcpy(type, "table");
break; case LUA_TTHREAD:
strcpy(type, "thread");
break; case LUA_TFUNCTION:
strcpy(type, "function");
break; case LUA_TUSERDATA:
strcpy(type, "userdata");
break; default:
strcpy(type, "unknown");
break;
}
return type;
}

这样就可以实现你自己的栈元素类型的字符串显示了

获取指定位置的元素可以使用lua_to*(lua_State*, int )

int  lua_toboolean(lua_State*, int);

lua_Number lua_tonumber(lua_State*, int);

lua_Integer lua_tointeger(lua_State*, int );

const char* lua_tolstring(lua_State*, int, size_t length);

lua_gettop(lua_State*)      得到栈中元素的个数

lua_settop(lua_State*, int index)

设置栈中元素的个数,如果设置的值比当前栈中元素的个数多,则将多出的那部分全部丢弃,如果设置的值比当前栈中元素个数多,则将新加的值全部设置为nil.

lua_pushvalue(lua_State*, int index) 将index位置的值的副本压入栈顶

lua_remove(lua_State* L, int index)将指定位置的元素删除,并且其上的所有元素下移

lua_insert(lua_State*, int index) 将指定位置之上的元素上移,空出该位置,并将栈顶元素移到此处

lua_replace(lua_State*, int index)将栈顶元素弹出,并将其设置到指定的索引上。

lua_pop是以一个宏的形式进行定义的

#define    lua_pop(L, n)     lua_settop(L, -(n) - 1);

比如弹出栈顶的元素则可以使用 lua_pop(L, 1)

最新文章

  1. Top 命令详解
  2. plist中的中文数据
  3. myBaties 和 mysql开发中遇到的问题
  4. 使用SVN同步资源后图标样式的详细解读
  5. UVA 1291 十四 Dance Dance Revolution
  6. PetaPoco.Core.ttinclude修改
  7. Win7 服务优化个人单机版
  8. Oracle ORA-01034,ORA-27101,ORA-00600
  9. 3.1、Eclipse
  10. SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面)
  11. Linux initramfs说明
  12. SpringCloud(2)服务消费者(rest+ribbon)
  13. Python之给程序传参数
  14. 查看linux内存使用情况
  15. 多个SpingBoot项目的搭建与部署
  16. Github 提交本地代 到远程 菜鸟 简明教程
  17. 跟我一起学习ASP.NET 4.5 MVC4.0(三)
  18. django中文件下载(HttpResponse)
  19. python最简单发送邮件
  20. Uva 127 poj 1214 `Accordian'' Patience 纸牌游戏 模拟

热门文章

  1. vue.js(11)--案例--关键字搜索列表
  2. HTTPS证书转换成PEM格式
  3. Mysql配置信息
  4. 用C#实现获取文件夹大小的源代码
  5. 基础入门Bootstrap
  6. OGG-00664
  7. GDB学习笔记
  8. join优化
  9. [web 安全] xxe
  10. centos启动提示unexpected inconsistency RUN fsck MANUALLY