LUA TValue结构
LUA TValue
//其形式如下:
typedef struct TValue {Value value_; //raw valuelu_byte tt_; //raw type tag
} TValue;//其Value为LUA所支持的基本类型的union形式
typedef union Value {struct GCObject *gc;void *p;lua_CFunction f;lua_Integer i;lua_Number n;
} Value;// lu_byte tt_ 即 unsigned char tt_ 为变量类型
因此ttisinteger(o) 等价于 o->tt_ == 3 ? true : false
union结构体中各项的具体意义为:
变量 | 说明 |
---|---|
GCObject gch | 用于垃圾回收 主要是为了连接垃圾回收对象的互相引用关系 |
void *p | 为c中传入的指针,由c 分配和释放 |
lua_CFunction f | 表示C导出给lua的函数指针,typedef int (*lua_CFunction) (lua_State *L); |
lua_Integer i | 表示整数类型,typedef long long lua_Integer; |
lua_Number n | 表示双精度浮点类型,typedef double lua_Number; |
从网络上找到的一个TValue结构图见下:
图示与代码已经有了一些可见变化,可见lua 5.3 版本相较于图示结构已经有了一些修改,比如取消了原本使用int类型存贮bool值的b,将原本存储所有数值类型的double n拆为存储整数的lua_Integer的i和存储双精度浮点数的n
其中GCObject gch的结构,如下:
typedef struct GCObject {struct GCObject *next;unsigned char tt;unsigned char marked;
} GCObject;
next指向下一个链表结构,tt表示类型,marked是垃圾回收的标记,具体LUA 5.3 垃圾回收机制见:LUA 5.3 垃圾回收机制.(重要不紧急)
LUA TValue结构相关推荐
- LUA CallInfo结构,StkId结构解析
StkId结构: typedef union StackValue {TValue val; } StackValue;typedef StackValue *StkId; StkId仅为一个正常的L ...
- lua 函数调用1 -- 闭包详解和C调用
这里, 简单的记录一下lua中闭包的知识和C闭包调用 前提知识: 在lua api小记2中已经分析了lua中值的结构, 是一个 TValue{value, tt}组合, 如果有疑问, 可以去看一下 一 ...
- [转载]Lua和C++交互详细总结
原文请看:Lua和C++交互详细总结 转自:http://cn.cocos2d-x.org/tutorial/show?id=1474 一.Lua堆栈 要理解Lua和C++交互,首先要理解Lua堆栈. ...
- Lua和C++交互详细总结
一.Lua堆栈 要理解Lua和C++交互,首先要理解Lua堆栈. 简单来说,Lua和C/C++语言通信的主要方法是一个无处不在的虚拟栈.栈的特点是先进后出. 在Lua中,Lua堆栈就是一个struct ...
- 深入理解 Lua 虚拟机
作者:nicochen,腾讯 IEG 游戏开发工程师 本文从一个简单示例入手,详细讲解 Lua 字节码文件的存储结构及各字段含义,进而引出 Lua 虚拟机指令集和运行时的核心数据结构 Lua Stat ...
- lua检测表中是否有某个值_Lua基础知识总结(入职面试题)
2019年8月刚入职新公司时,因为之前的项目都没有使用lua的经验,所以jojo老大出了一份题让我想尽办法找出答案,当时对于一个无经验的小菜鸟来说,属实费了不少功夫,如今分享出来,希望能对刚使用lua ...
- lua 和 c交互详解(一)
lua与c之间交互是通过"lua堆栈"通信的.不管是lua调用c还是c调用lua,都是通过操作lua堆栈实现的.顾名思义,lua堆栈也满足后进先出的特点,入栈/出栈都围绕栈顶进行的 ...
- LUA源码分析二:了解lua的文件结构和思考方式
版本整理日期:2011/3/27 对lmathlib.c文件中的函数进行跟调.函数是那个不重要,这里选取math_abs /*lmathlib.c取出一个TValue,转成整型,然后fabs处理.TV ...
- 无线专题 openwrt feeds、web框架luci(lua语言)、UCI (统一配置接口)
1.openwrt feeds UCI (统一配置接口)openwrt官方说明(有中文版本):https://oldwiki.archive.openwrt.org/zh-cn/doc/uci 在Op ...
最新文章
- 浅谈《think in java》:一 对象导论总结
- 切糕[HNOI2013]
- 手挽手带你学React:四档(上)一步一步学会react-redux (自己写个Redux)
- 如何编写 Nagios 插件
- opencv 通过标定摄像头测量物体大小_视觉激光雷达信息融合与联合标定
- boost::multiprecision模块测试 cpp_dec_float_50 是否符合我们的 概念要求
- 《IPv6技术精要》一2.4 扩展报头
- Java程序员的10个XML面试问答
- 从零开始实现数据结构(一) 动态数组
- 项目:关于分层,DAO、domain、service、servlet的一些理解
- CSS3之图片3D翻转效果(网页效果--每日一更)
- Quartz入门指南
- [swift] LeetCode 96. Unique Binary Search Trees
- mysql处理sql时间格式_mysql 处理日期格式
- R语言实现︱局部敏感哈希算法(LSH)解决文本机械相似性的问题(一,基本原理)
- vs2015 hiredis编译使用
- 苹果4s怎么越狱_越狱源和插件大全2020.4.4
- SecureCRT 完美代替超级终端
- C语言杨辉三角前15行,C语言输出杨辉三角前n行(低时间复杂度)
- 如何利用炒股中的L2行情数据功能对比,以及用途数据分析。(附代码)