亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ltable.c

?? 這個(gè)是一個(gè)嵌入式腳本支持引擎, 體積十分小巧
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*** $Id: ltable.c,v 2.32.1.2 2007/12/28 15:32:23 roberto Exp $** Lua tables (hash)** See Copyright Notice in lua.h*//*** Implementation of tables (aka arrays, objects, or hash tables).** Tables keep its elements in two parts: an array part and a hash part.** Non-negative integer keys are all candidates to be kept in the array** part. The actual size of the array is the largest `n' such that at** least half the slots between 0 and n are in use.** Hash uses a mix of chained scatter table with Brent's variation.** A main invariant of these tables is that, if an element is not** in its main position (i.e. the `original' position that its hash gives** to it), then the colliding element is in its own main position.** Hence even when the load factor reaches 100%, performance remains good.*/#include <math.h>#include <string.h>#define ltable_c#define LUA_CORE#include "lua.h"#include "ldebug.h"#include "ldo.h"#include "lgc.h"#include "lmem.h"#include "lobject.h"#include "lstate.h"#include "ltable.h"/*** max size of array part is 2^MAXBITS*/#if LUAI_BITSINT > 26#define MAXBITS		26#else#define MAXBITS		(LUAI_BITSINT-2)#endif#define MAXASIZE	(1 << MAXBITS)#define hashpow2(t,n)      (gnode(t, lmod((n), sizenode(t))))  #define hashstr(t,str)  hashpow2(t, (str)->tsv.hash)#define hashboolean(t,p)        hashpow2(t, p)/*** for some types, it is better to avoid modulus by power of 2, as** they tend to have many 2 factors.*/#define hashmod(t,n)	(gnode(t, ((n) % ((sizenode(t)-1)|1))))#define hashpointer(t,p)	hashmod(t, IntPoint(p))/*** number of ints inside a lua_Number*/#define numints		cast_int(sizeof(lua_Number)/sizeof(int))#define dummynode		(&dummynode_)static const Node dummynode_ = {  {{NULL}, LUA_TNIL},  /* value */  {{{NULL}, LUA_TNIL, NULL}}  /* key */};/*** hash for lua_Numbers*/static Node *hashnum (const Table *t, lua_Number n) {  unsigned int a[numints];  int i;  if (luai_numeq(n, 0))  /* avoid problems with -0 */    return gnode(t, 0);  memcpy(a, &n, sizeof(a));  for (i = 1; i < numints; i++) a[0] += a[i];  return hashmod(t, a[0]);}/*** returns the `main' position of an element in a table (that is, the index** of its hash value)*/static Node *mainposition (const Table *t, const TValue *key) {  switch (ttype(key)) {    case LUA_TNUMBER:      return hashnum(t, nvalue(key));    case LUA_TSTRING:      return hashstr(t, rawtsvalue(key));    case LUA_TBOOLEAN:      return hashboolean(t, bvalue(key));    case LUA_TLIGHTUSERDATA:      return hashpointer(t, pvalue(key));    default:      return hashpointer(t, gcvalue(key));  }}/*** returns the index for `key' if `key' is an appropriate key to live in** the array part of the table, -1 otherwise.*/static int arrayindex (const TValue *key) {  if (ttisnumber(key)) {    lua_Number n = nvalue(key);    int k;    lua_number2int(k, n);    if (luai_numeq(cast_num(k), n))      return k;  }  return -1;  /* `key' did not match some condition */}/*** returns the index of a `key' for table traversals. First goes all** elements in the array part, then elements in the hash part. The** beginning of a traversal is signalled by -1.*/static int findindex (lua_State *L, Table *t, StkId key) {  int i;  if (ttisnil(key)) return -1;  /* first iteration */  i = arrayindex(key);  if (0 < i && i <= t->sizearray)  /* is `key' inside array part? */    return i-1;  /* yes; that's the index (corrected to C) */  else {    Node *n = mainposition(t, key);    do {  /* check whether `key' is somewhere in the chain */      /* key may be dead already, but it is ok to use it in `next' */      if (luaO_rawequalObj(key2tval(n), key) ||            (ttype(gkey(n)) == LUA_TDEADKEY && iscollectable(key) &&             gcvalue(gkey(n)) == gcvalue(key))) {        i = cast_int(n - gnode(t, 0));  /* key index in hash table */        /* hash elements are numbered after array ones */        return i + t->sizearray;      }      else n = gnext(n);    } while (n);    luaG_runerror(L, "invalid key to " LUA_QL("next"));  /* key not found */    return 0;  /* to avoid warnings */  }}int luaH_next (lua_State *L, Table *t, StkId key) {  int i = findindex(L, t, key);  /* find original element */  for (i++; i < t->sizearray; i++) {  /* try first array part */    if (!ttisnil(&t->array[i])) {  /* a non-nil value? */      setnvalue(key, cast_num(i+1));      setobj2s(L, key+1, &t->array[i]);      return 1;    }  }  for (i -= t->sizearray; i < sizenode(t); i++) {  /* then hash part */    if (!ttisnil(gval(gnode(t, i)))) {  /* a non-nil value? */      setobj2s(L, key, key2tval(gnode(t, i)));      setobj2s(L, key+1, gval(gnode(t, i)));      return 1;    }  }  return 0;  /* no more elements */}/*** {=============================================================** Rehash** ==============================================================*/static int computesizes (int nums[], int *narray) {  int i;  int twotoi;  /* 2^i */  int a = 0;  /* number of elements smaller than 2^i */  int na = 0;  /* number of elements to go to array part */  int n = 0;  /* optimal size for array part */  for (i = 0, twotoi = 1; twotoi/2 < *narray; i++, twotoi *= 2) {    if (nums[i] > 0) {      a += nums[i];      if (a > twotoi/2) {  /* more than half elements present? */        n = twotoi;  /* optimal size (till now) */        na = a;  /* all elements smaller than n will go to array part */      }    }    if (a == *narray) break;  /* all elements already counted */  }  *narray = n;  lua_assert(*narray/2 <= na && na <= *narray);  return na;}static int countint (const TValue *key, int *nums) {  int k = arrayindex(key);  if (0 < k && k <= MAXASIZE) {  /* is `key' an appropriate array index? */    nums[ceillog2(k)]++;  /* count as such */    return 1;  }  else    return 0;}static int numusearray (const Table *t, int *nums) {  int lg;  int ttlg;  /* 2^lg */  int ause = 0;  /* summation of `nums' */  int i = 1;  /* count to traverse all array keys */  for (lg=0, ttlg=1; lg<=MAXBITS; lg++, ttlg*=2) {  /* for each slice */    int lc = 0;  /* counter */    int lim = ttlg;    if (lim > t->sizearray) {      lim = t->sizearray;  /* adjust upper limit */      if (i > lim)        break;  /* no more elements to count */    }    /* count elements in range (2^(lg-1), 2^lg] */    for (; i <= lim; i++) {      if (!ttisnil(&t->array[i-1]))        lc++;    }    nums[lg] += lc;    ause += lc;  }  return ause;}static int numusehash (const Table *t, int *nums, int *pnasize) {  int totaluse = 0;  /* total number of elements */  int ause = 0;  /* summation of `nums' */  int i = sizenode(t);  while (i--) {    Node *n = &t->node[i];    if (!ttisnil(gval(n))) {      ause += countint(key2tval(n), nums);      totaluse++;    }  }  *pnasize += ause;  return totaluse;}static void setarrayvector (lua_State *L, Table *t, int size) {  int i;  luaM_reallocvector(L, t->array, t->sizearray, size, TValue);  for (i=t->sizearray; i<size; i++)     setnilvalue(&t->array[i]);  t->sizearray = size;}static void setnodevector (lua_State *L, Table *t, int size) {  int lsize;  if (size == 0) {  /* no elements to hash part? */    t->node = cast(Node *, dummynode);  /* use common `dummynode' */    lsize = 0;  }  else {    int i;    lsize = ceillog2(size);    if (lsize > MAXBITS)      luaG_runerror(L, "table overflow");    size = twoto(lsize);    t->node = luaM_newvector(L, size, Node);    for (i=0; i<size; i++) {      Node *n = gnode(t, i);      gnext(n) = NULL;      setnilvalue(gkey(n));      setnilvalue(gval(n));    }  }  t->lsizenode = cast_byte(lsize);  t->lastfree = gnode(t, size);  /* all positions are free */}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区在线视频| 中文字幕乱码久久午夜不卡 | 日韩成人免费看| 久久国产尿小便嘘嘘尿| 欧美日韩一卡二卡三卡| 精品少妇一区二区三区在线视频| 国产精品乱码妇女bbbb| 免费看日韩精品| 欧美日韩精品专区| 中文字幕一区二区不卡| 国产精品一二三区| 欧美一区二区黄色| 无吗不卡中文字幕| 欧洲一区在线电影| 亚洲精品国产视频| 成人精品一区二区三区中文字幕| 精品国产91久久久久久久妲己| 亚洲18女电影在线观看| 91麻豆6部合集magnet| 中文字幕在线观看一区| 成人免费视频一区| 国产免费久久精品| 国产成人av电影在线| 精品国产乱码久久久久久牛牛| 亚洲午夜久久久久久久久电影院| 91蜜桃网址入口| 亚洲视频网在线直播| 99久久婷婷国产精品综合| 国产精品网站导航| 成人免费观看av| 日韩理论片中文av| 91丨porny丨中文| 亚洲精品伦理在线| 欧洲一区二区三区在线| 亚洲大片在线观看| 日韩一区二区三区在线观看 | 国产不卡在线一区| 欧美激情一区在线| bt7086福利一区国产| 亚洲欧洲精品一区二区精品久久久| 不卡视频一二三| 1000部国产精品成人观看| 91蜜桃传媒精品久久久一区二区| 亚洲啪啪综合av一区二区三区| 欧洲日韩一区二区三区| 日韩av中文字幕一区二区| 欧美一区二区三区公司| 国产一区欧美一区| 国产精品久久久久久户外露出| 91小视频在线观看| 石原莉奈在线亚洲三区| 欧美电影免费观看完整版| 精品一区中文字幕| 亚洲国产成人一区二区三区| 色诱视频网站一区| 日本中文字幕一区二区有限公司| 久久久久久久久岛国免费| 99精品视频一区二区| 亚洲va欧美va天堂v国产综合| 日韩女优av电影| 99久久国产综合精品色伊| 天天免费综合色| 国产精品女同一区二区三区| 欧美日韩国产一级二级| 国产在线播放一区二区三区| 国产精品国产馆在线真实露脸| 在线观看三级视频欧美| 国产乱码字幕精品高清av| 一区二区免费在线播放| 精品少妇一区二区三区在线播放 | 3751色影院一区二区三区| 精品制服美女丁香| 亚洲日本在线a| 欧美成人精品1314www| 97精品久久久午夜一区二区三区| 日本欧美一区二区三区| 国产精品蜜臀av| 欧美mv日韩mv| 精品视频在线视频| av欧美精品.com| 国产精品一区二区久久不卡| 婷婷夜色潮精品综合在线| 亚洲欧洲国产日韩| 久久精品在线观看| 日韩三级高清在线| 欧美日韩另类国产亚洲欧美一级| 成人app网站| 国产一区二区福利| 日韩成人dvd| 午夜电影久久久| 亚洲日本va在线观看| 欧美国产乱子伦 | 成人h动漫精品一区二| 亚洲一区二区中文在线| 中文字幕在线观看一区二区| 国产色婷婷亚洲99精品小说| 日韩久久精品一区| 日韩欧美综合一区| 7777精品伊人久久久大香线蕉超级流畅 | 粉嫩蜜臀av国产精品网站| 老司机精品视频线观看86| 亚洲国产日韩精品| 亚洲主播在线观看| 亚洲精品老司机| 亚洲卡通欧美制服中文| 国产精品久久久久久久久果冻传媒| 久久久久久久国产精品影院| 欧美精品一区男女天堂| 精品国产91久久久久久久妲己| 日韩欧美一区二区不卡| 精品区一区二区| 精品国产精品网麻豆系列 | 1000部国产精品成人观看| 中文乱码免费一区二区| 中文字幕精品一区| 国产精品乱码一区二区三区软件 | 色悠悠亚洲一区二区| 色呦呦一区二区三区| 91国偷自产一区二区三区成为亚洲经典| 成人福利视频在线看| www.欧美.com| 色噜噜狠狠色综合中国| 欧美日韩国产综合视频在线观看| 亚洲一二三专区| 久久一夜天堂av一区二区三区| 国产精品18久久久久久vr| 一级女性全黄久久生活片免费| 国产色一区二区| 亚洲一区欧美一区| 波多野结衣欧美| 欧美成人精品1314www| 亚洲午夜精品网| 91免费国产在线| 亚洲女人小视频在线观看| 亚洲精品成人精品456| 91精品国产福利| 日韩免费性生活视频播放| 亚洲午夜精品一区二区三区他趣| 成人三级伦理片| 精品粉嫩超白一线天av| 亚洲高清免费视频| 白白色 亚洲乱淫| 久久这里只精品最新地址| 日韩综合在线视频| 欧美日韩在线不卡| 亚洲精品久久久蜜桃| aa级大片欧美| 国产精品亲子伦对白| 国产精品小仙女| 久久人人爽人人爽| 久久99精品一区二区三区三区| 欧美人牲a欧美精品| 亚洲综合一区二区三区| 91日韩在线专区| 综合久久久久综合| 成人av午夜影院| 国产精品每日更新在线播放网址 | 国产福利91精品一区| 精品国产乱码久久久久久老虎| 日韩成人精品视频| 欧美理论在线播放| 日日摸夜夜添夜夜添国产精品| 欧美日韩日日摸| 日日夜夜免费精品| 91精品国产一区二区三区| 日本午夜精品一区二区三区电影 | 韩国av一区二区三区在线观看| 精品美女被调教视频大全网站| 麻豆91在线观看| 制服丝袜中文字幕一区| 日本特黄久久久高潮| 91精品国产综合久久福利| 蜜桃精品视频在线| 欧美不卡一二三| 国产成人综合亚洲91猫咪| 国产三区在线成人av| 99视频有精品| 一区二区三区小说| 欧美一区三区四区| 国产一区二区三区免费在线观看| 久久综合一区二区| 成人免费看片app下载| 亚洲丝袜美腿综合| 欧美三级欧美一级| 蜜乳av一区二区三区| 久久久亚洲欧洲日产国码αv| 久久精品99国产精品| 欧美高清在线精品一区| 一本久久a久久免费精品不卡| 亚洲成人动漫精品| 久久久美女毛片| 色哟哟精品一区| 男女性色大片免费观看一区二区| 久久综合成人精品亚洲另类欧美 | 91精品黄色片免费大全| 国产九色sp调教91| 夜夜嗨av一区二区三区中文字幕 | 久久综合久色欧美综合狠狠| 成人av网站免费| 丝袜亚洲精品中文字幕一区|