lua源码:Tvalue

typedef TValue *StkId; /* 堆栈中的元素 */
typedef struct lua_TValue TValue;

struct lua_TValue {
TValuefields; /* 堆栈中的元素 */
};

// 定义了双精度浮点或者通用类型定义
#define TValuefields \
union { struct { Value v__; int tt__; } i; double d__; } u

#define LUA_NUMBER double
typedef LUA_NUMBER lua_Number;
#define numfield lua_Number n; /* 双精度浮点数 */
#define numfield /* no such field; numbers are the entire struct(另外一种定义) */

// Value包括可回收对象和不可回收对象两种类型
// 不可回收对象包括:bool、
union Value {
GCObject *gc; /* collectable objects */
void *p; /* light userdata */
int b; /* booleans */
lua_CFunction f; /* light C functions */
numfield /* 双精度浮点数,实际上可能为空 */
};

/*
** Union of all collectable objects
*/
union GCObject {
GCheader gch; /* common header */
union TString ts; /* 字符串 */
union Udata u; /* 用户自定义数据 */
union Closure cl; /* 函数闭包,其实似乎Proto的一个实例 */
struct Table h; /* 表结构 */
struct Proto p; /* 函数原型,被闭包共享同一个定义 */
struct UpVal uv; /* 闭包所引用的变量 */
struct lua_State th; /* thread */
};

转载于:https://www.cnblogs.com/losophy/p/10674960.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值