摘要: rehash是根据当前表格中的数据重新计算一个比较函数的:数组大小和hash表大小,重新申请空间,并重新插入原有数据: 1 static void rehash (lua_State *L, Table *t, const TValue *ek) { 2 int nasize, na; 3 ... 阅读全文
posted @ 2015-01-17 00:23 #shany 阅读(604) 评论(0) 推荐(0) 编辑
摘要: 通过luaH_new创建的Table开始实际上是一张空表,只是包含了Table本身的数据 结构。创建完以后需要添加元素,添加到函数为:luaH_set,该函数在设置前会根据key的值去获取对应的Value,如果能找到,则直接设置,如果找不到,则需要申请一个位置来存放(Key,Value)。1 TVa... 阅读全文
posted @ 2015-01-16 23:47 #shany 阅读(1871) 评论(0) 推荐(0) 编辑
摘要: table(lobject.h)的结构定义: 1 // TKey结构是一个链表结构,用来存储hash相同 2 // 的所有key,value对结构。 3 typedef union TKey { 4 struct { 5 TValuefields; // key值 6 ... 阅读全文
posted @ 2015-01-10 20:55 #shany 阅读(694) 评论(0) 推荐(0) 编辑
摘要: lua的堆栈中存放的是通用变量,通用变量实际上就是一个union内存块,根据不同的类型,采用不同的组织方式,看一下通用类型的相关定义,截取了lobject.h相关代码,从代码上看,不太清楚numfield为什么会有两个相关定义。堆栈中可以根据情况分为一下几种类型:1、双精度浮点数:double d_... 阅读全文
posted @ 2015-01-06 23:36 #shany 阅读(1659) 评论(0) 推荐(0) 编辑
摘要: lua中的字符串是对象,主要分析一下对象的结构和申请的方式。TString是一个union,为了进行字节对齐,中间插入了L_Umaxalign,按照union的定义union的大小,必须是单个结构大小的整数倍,按照目前的定义,应该是double大小的整数倍。 1 /* type to ensure ... 阅读全文
posted @ 2014-12-28 19:14 #shany 阅读(929) 评论(0) 推荐(0) 编辑
摘要: Lua在载入lua文件的时候,读取过程中通过cache的方式,默认cache为512字节:1、cache中包含数据时,直接将cache中数据返回;2、cache中不包含数据的时候,每次读取512个字节,进行cache; 1 typedef struct LoadF { 2 int n; /* ... 阅读全文
posted @ 2014-12-27 21:20 #shany 阅读(1002) 评论(0) 推荐(0) 编辑
摘要: 最近碰到一些文件操作接口方面的工作,实际上Windows提供了多种接口:1、Shell脚本系列,SHFileOperation,通过设置不同的参数实现不同的效果,支持:move、copy、delete、rename四种操作。2、c-runtime library中包含的文件和文件夹操作接口:_mkdir、_rmdir、_cddir、remove、rename、fopen、fread、fwrite、fseek、fclose等。3、Wn32的File Management Functions文件操作接口:CreateFile、CreateDirectory、DeleteFile、CopyFile、 阅读全文
posted @ 2013-10-04 22:31 #shany 阅读(191) 评论(0) 推荐(0) 编辑