Lua1.0 数据结构
转载出处:http://my.oschina.net/xhan/blog/307171
先来看一下 Lua 中常用的几个数据结构:
先看一下 opcode.h 中的:
Type 枚举是 Lua 中的几种数据类型。
1 typedef enum 2 { 3 T_MARK, 4 T_NIL, 5 T_NUMBER, 6 T_STRING, 7 T_ARRAY, 8 T_FUNCTION, 9 T_CFUNCTION, 10 T_USERDATA 11 } Type;
View Code
Value 联合体是 Lua 的数据类型定义。
1 typedef union 2 { 3 Cfunction f; 4 real n; 5 char *s; 6 Byte *b; 7 struct Hash *a; 8 void *u; 9 } Value;
View Code
Object 带标签的数据类型,其中 tag 字段是 Type 类型,Value 是 Object 的值。
1 typedef struct Object 2 { 3 Type tag; 4 Value value; 5 } Object;
View Code
Symbol 符号,一个是符号的名字,一个是符号的值,其值是一个 Object 类型。
1 typedef struct 2 { 3 char *name; 4 Object object; 5 } Symbol;
View Code
以下的一些代码就是一些上面数据结构的操作宏。
hash.h 中定义了关联数组,也就是 lua 里的 table 类型。
// table 中的无素
typedef struct node
{
Object ref; // 元素的 key
Object val; // 元素的 value
struct node *next; // 指向下一个元素的指针。
} Node;
// table 定义
typedef struct Hash
{
char mark;
unsigned int nhash;
Node **list;
} Hash;
其中:
mark 在垃圾回收时的标记
nhash table 中的元素个数
list 元素的列表。
其它地方也没有别的数据结构了。
转载于:https://www.cnblogs.com/vd01/p/4931362.html
Lua1.0 数据结构相关推荐
- Lua1.0 代码分析 库
为什么80%的码农都做不了架构师?>>> Lua1.0 代码分析 库 库的代码相对比较简单.这里以数学库为例进行说明. 比如看下这个取绝对值的数学函数 static void ...
- Lua1.0 代码分析 opcode.c
为什么80%的码农都做不了架构师?>>> opcode.c 代码分析 Lua1.0 虚拟机的实现,语法分析中生成的字节码交给它 lua_execute 来执行. 这个文件的主要 ...
- Lua1.0 代码分析 table.c
转载出处:http://my.oschina.net/xhan/blog/307961 table.c 代码分析 全局符号,常量,字符串,关联数组,文件列表的定义. 全局符号: 初始有 5 个基本的符 ...
- 0.数据结构学习笔记大纲
推荐学习参考书籍: 实体课本: 1.严蔚敏.吴伟民编著的教材(都是伪算法) 实现代码: 高一凡 数据结构概述 定义: 我们如何把现实中大量而复杂的问题以特定的数据类型和特定的 ...
- cocos2d-x 3.0 数据结构(3/3) cocos2d::Value
于v3.0beta加入 定义在"COCOS2DX_ROOT/cocos/base"的头文件"CCValue.h"中 class Value; cocos2d:: ...
- 数据结构源码笔记(C语言):英文单词按字典序排序的基数排序
//实现英文单词按字典序排序的基数排序算法#include<stdio.h> #include<malloc.h> #include<string.h>#defin ...
- 数据结构源码笔记(C语言):索引文件建立和查找
//实现索引文件建立和查找算法#include<stdio.h> #include<malloc.h> #include<string.h> #include< ...
- 数据结构源码笔记(C语言):快速排序
//实现快速排序算法 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; type ...
- 数据结构源码笔记(C语言):冒泡排序
//冒泡排序算法实现 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; type ...
- 数据结构源码笔记(C语言):希尔插入排序
//实现希尔插入排序算法 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; ty ...
最新文章
- 计算机硬盘工作时应该避免什么,什么是电脑硬盘?有何作用?如何保养它?
- 计算机英语词汇的特点,电子商务英语词汇都有哪些特点
- luogu 4768
- 快手抢占短视频第一股,增长惊人,腾讯又是大赢家!
- 【kafka】Unexpected handshake request with client mechanism GSSAPI, enabled mechanisms are
- 【Elasticsearch】Elasticsearch 集群 运维 高性能 架构设计 高负载
- Linux文本转语音合成教程,〔教程〕使用TTS将文本转语音输出
- 武魂觉醒s系列服务器,斗罗大陆武魂觉醒斗罗大陆9服开服时间表_斗罗大陆武魂觉醒新区开服预告_第一手游网手游开服表...
- python交叉编译环境_交叉编译Python
- PA塑料EN45545-2:2020R22 HL3防火检测的难易程度
- java poi 水印_poi excel如何设置水印透明度
- im服务器开源项目,Oschat IM 开源即时通讯项目介绍
- 红黑树模拟软件_红黑树,超强动静图详解,简单易懂
- ESP8266刷入MicroPython固件教程
- 3.破解百度翻译 输入keyWord返回对应翻译的数据
- 看完这个教程,不怕Xshell中修改字体有困难
- 平面设计如何做出空间创意作品?
- python打字机效果_打字效果动画的4种实现方法(超简单)
- Google Map开发之实战
- Java获取当前年月日、时间
热门文章
- K3S kubernetes-限制节点可启动的pod数量
- easyui 1.4.3 窗口创建或拖动超过父元素 边界 BUG 解决方法
- Oracle 视图、序列、索引、游标、触发器、事务
- 企业微信机器人实现发送消息的功能(文本消息,图片消息,图片+文字消息)
- rmd文件怎么转换html文件,如何将Rmd文件的html输出向左对齐
- 阶段3 2.Spring_04.Spring的常用注解_2 常用IOC注解按照作用分类
- Spring MVC(十六)--Spring MVC国际化实例
- WordPress更改“固定链接”后 ,页面出现404的解决方法
- 转python 发送邮件实例
- 在Linux上运行ASP.NET vNext