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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tcbdb.c

?? Tokyo Cabinet的Tokyo Cabinet 是一個DBM的實現。這里的數據庫由一系列key-value對的記錄構成。key和value都可以是任意長度的字節序列,既可以是二進制也可以是字符
?? C
?? 第 1 頁 / 共 5 頁
字號:
    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return false;  }  bool rv = tcbdboutimpl(bdb, kbuf, ksiz);  BDBUNLOCKMETHOD(bdb);  return rv;}/* Remove a string record of a B+ tree database object. */bool tcbdbout2(TCBDB *bdb, const char *kstr){  assert(bdb && kstr);  return tcbdbout(bdb, kstr, strlen(kstr));}/* Remove records of a B+ tree database object. */bool tcbdbout3(TCBDB *bdb, const void *kbuf, int ksiz){  assert(bdb && kbuf && ksiz >= 0);  if(!BDBLOCKMETHOD(bdb, true)) return false;  if(!bdb->open || !bdb->wmode){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return false;  }  bool rv = tcbdboutlist(bdb, kbuf, ksiz);  BDBUNLOCKMETHOD(bdb);  return rv;}/* Retrieve a record in a B+ tree database object. */void *tcbdbget(TCBDB *bdb, const void *kbuf, int ksiz, int *sp){  assert(bdb && kbuf && ksiz >= 0 && sp);  if(!BDBLOCKMETHOD(bdb, false)) return NULL;  if(!bdb->open){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return NULL;  }  const char *vbuf = tcbdbgetimpl(bdb, kbuf, ksiz, sp);  char *rv;  if(vbuf){    TCMEMDUP(rv, vbuf, *sp);  } else {    rv = NULL;  }  bool adj = TCMAPRNUM(bdb->leafc) > bdb->lcnum || TCMAPRNUM(bdb->nodec) > bdb->ncnum;  BDBUNLOCKMETHOD(bdb);  if(adj && BDBLOCKMETHOD(bdb, true)){    if(!bdb->tran && !tcbdbcacheadjust(bdb)){      TCFREE(rv);      rv = NULL;    }    BDBUNLOCKMETHOD(bdb);  }  return rv;}/* Retrieve a string record in a B+ tree database object. */char *tcbdbget2(TCBDB *bdb, const char *kstr){  assert(bdb && kstr);  int vsiz;  return tcbdbget(bdb, kstr, strlen(kstr), &vsiz);}/* Retrieve a record in a B+ tree database object and write the value into a buffer. */const void *tcbdbget3(TCBDB *bdb, const void *kbuf, int ksiz, int *sp){  assert(bdb && kbuf && ksiz >= 0 && sp);  if(!BDBLOCKMETHOD(bdb, false)) return NULL;  if(!bdb->open){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return NULL;  }  const char *rv = tcbdbgetimpl(bdb, kbuf, ksiz, sp);  bool adj = TCMAPRNUM(bdb->leafc) > bdb->lcnum || TCMAPRNUM(bdb->nodec) > bdb->ncnum;  BDBUNLOCKMETHOD(bdb);  if(adj && BDBLOCKMETHOD(bdb, true)){    if(!bdb->tran && !tcbdbcacheadjust(bdb)) rv = NULL;    BDBUNLOCKMETHOD(bdb);  }  return rv;}/* Retrieve records in a B+ tree database object. */TCLIST *tcbdbget4(TCBDB *bdb, const void *kbuf, int ksiz){  assert(bdb && kbuf && ksiz >= 0);  if(!BDBLOCKMETHOD(bdb, false)) return NULL;  if(!bdb->open){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return NULL;  }  TCLIST *rv = tcbdbgetlist(bdb, kbuf, ksiz);  bool adj = TCMAPRNUM(bdb->leafc) > bdb->lcnum || TCMAPRNUM(bdb->nodec) > bdb->ncnum;  BDBUNLOCKMETHOD(bdb);  if(adj && BDBLOCKMETHOD(bdb, true)){    if(!bdb->tran && !tcbdbcacheadjust(bdb)){      if(rv) tclistdel(rv);      rv = NULL;    }    BDBUNLOCKMETHOD(bdb);  }  return rv;}/* Get the number of records corresponding a key in a B+ tree database object. */int tcbdbvnum(TCBDB *bdb, const void *kbuf, int ksiz){  assert(bdb && kbuf && ksiz >= 0);  if(!BDBLOCKMETHOD(bdb, false)) return 0;  if(!bdb->open){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return 0;  }  int rv = tcbdbgetnum(bdb, kbuf, ksiz);  bool adj = TCMAPRNUM(bdb->leafc) > bdb->lcnum || TCMAPRNUM(bdb->nodec) > bdb->ncnum;  BDBUNLOCKMETHOD(bdb);  if(adj && BDBLOCKMETHOD(bdb, true)){    if(!bdb->tran && !tcbdbcacheadjust(bdb)) rv = 0;    BDBUNLOCKMETHOD(bdb);  }  return rv;}/* Get the number of records corresponding a string key in a B+ tree database object. */int tcbdbvnum2(TCBDB *bdb, const char *kstr){  assert(bdb && kstr);  return tcbdbvnum(bdb, kstr, strlen(kstr));}/* Get the size of the value of a record in a B+ tree database object. */int tcbdbvsiz(TCBDB *bdb, const void *kbuf, int ksiz){  assert(bdb && kbuf && ksiz >= 0);  int vsiz;  if(!tcbdbget3(bdb, kbuf, ksiz, &vsiz)) return -1;  return vsiz;}/* Get the size of the value of a string record in a B+ tree database object. */int tcbdbvsiz2(TCBDB *bdb, const char *kstr){  assert(bdb && kstr);  return tcbdbvsiz(bdb, kstr, strlen(kstr));}/* Get keys of ranged records in a B+ tree database object. */TCLIST *tcbdbrange(TCBDB *bdb, const void *bkbuf, int bksiz, bool binc,                   const void *ekbuf, int eksiz, bool einc, int max){  assert(bdb);  TCLIST *keys = tclistnew();  if(!BDBLOCKMETHOD(bdb, false)) return keys;  if(!bdb->open){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return keys;  }  tcbdbrangeimpl(bdb, bkbuf, bksiz, binc, ekbuf, eksiz, einc, max, keys);  bool adj = TCMAPRNUM(bdb->leafc) > bdb->lcnum || TCMAPRNUM(bdb->nodec) > bdb->ncnum;  BDBUNLOCKMETHOD(bdb);  if(adj && BDBLOCKMETHOD(bdb, true)){    tcbdbcacheadjust(bdb);    BDBUNLOCKMETHOD(bdb);  }  return keys;}/* Get string keys of ranged records in a B+ tree database object. */TCLIST *tcbdbrange2(TCBDB *bdb, const char *bkstr, bool binc,                    const char *ekstr, bool einc, int max){  assert(bdb);  return tcbdbrange(bdb, bkstr, bkstr ? strlen(bkstr) : 0, binc,                    ekstr, ekstr ? strlen(ekstr) : 0, einc, max);}/* Get forward matching keys in a B+ tree database object. */TCLIST *tcbdbfwmkeys(TCBDB *bdb, const void *pbuf, int psiz, int max){  assert(bdb && pbuf && psiz >= 0);  TCLIST *keys = tclistnew();  if(!BDBLOCKMETHOD(bdb, false)) return keys;  if(!bdb->open){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return keys;  }  tcbdbrangefwm(bdb, pbuf, psiz, max, keys);  bool adj = TCMAPRNUM(bdb->leafc) > bdb->lcnum || TCMAPRNUM(bdb->nodec) > bdb->ncnum;  BDBUNLOCKMETHOD(bdb);  if(adj && BDBLOCKMETHOD(bdb, true)){    tcbdbcacheadjust(bdb);    BDBUNLOCKMETHOD(bdb);  }  return keys;}/* Get forward matching string keys in a B+ tree database object. */TCLIST *tcbdbfwmkeys2(TCBDB *bdb, const char *pstr, int max){  assert(bdb && pstr);  return tcbdbfwmkeys(bdb, pstr, strlen(pstr), max);}/* Add an integer to a record in a B+ tree database object. */int tcbdbaddint(TCBDB *bdb, const void *kbuf, int ksiz, int num){  assert(bdb && kbuf && ksiz >= 0);  if(!BDBLOCKMETHOD(bdb, true)) return INT_MIN;  if(!bdb->open || !bdb->wmode){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return INT_MIN;  }  bool rv = tcbdbputimpl(bdb, kbuf, ksiz, (char *)&num, sizeof(num), BDBPDADDINT);  BDBUNLOCKMETHOD(bdb);  return rv ? num : INT_MIN;}/* Add a real number to a record in a B+ tree database object. */double tcbdbadddouble(TCBDB *bdb, const void *kbuf, int ksiz, double num){  assert(bdb && kbuf && ksiz >= 0);  if(!BDBLOCKMETHOD(bdb, true)) return nan("");  if(!bdb->open || !bdb->wmode){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return nan("");  }  bool rv = tcbdbputimpl(bdb, kbuf, ksiz, (char *)&num, sizeof(num), BDBPDADDDBL);  BDBUNLOCKMETHOD(bdb);  return rv ? num : nan("");}/* Synchronize updated contents of a B+ tree database object with the file and the device. */bool tcbdbsync(TCBDB *bdb){  assert(bdb);  if(!BDBLOCKMETHOD(bdb, true)) return false;  if(!bdb->open || !bdb->wmode || bdb->tran){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return false;  }  bool rv = tcbdbmemsync(bdb, true);  BDBUNLOCKMETHOD(bdb);  return rv;}/* Optimize the file of a B+ tree database object. */bool tcbdboptimize(TCBDB *bdb, int32_t lmemb, int32_t nmemb,                   int64_t bnum, int8_t apow, int8_t fpow, uint8_t opts){  assert(bdb);  if(!BDBLOCKMETHOD(bdb, true)) return false;  if(!bdb->open || !bdb->wmode || bdb->tran){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return false;  }  BDBTHREADYIELD(bdb);  bool rv = tcbdboptimizeimpl(bdb, lmemb, nmemb, bnum, apow, fpow, opts);  BDBUNLOCKMETHOD(bdb);  return rv;}/* Remove all records of a B+ tree database object. */bool tcbdbvanish(TCBDB *bdb){  assert(bdb);  if(!BDBLOCKMETHOD(bdb, true)) return false;  if(!bdb->open || !bdb->wmode || bdb->tran){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return false;  }  BDBTHREADYIELD(bdb);  bool rv = tcbdbvanishimpl(bdb);  BDBUNLOCKMETHOD(bdb);  return rv;}/* Copy the database file of a B+ tree database object. */bool tcbdbcopy(TCBDB *bdb, const char *path){  assert(bdb && path);  if(!BDBLOCKMETHOD(bdb, true)) return false;  if(!bdb->open){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return false;  }  BDBTHREADYIELD(bdb);  TCLIST *lids = tclistnew();  TCLIST *nids = tclistnew();  const char *vbuf;  int vsiz;  TCMAP *leafc = bdb->leafc;  tcmapiterinit(leafc);  while((vbuf = tcmapiternext(leafc, &vsiz)) != NULL){    TCLISTPUSH(lids, vbuf, vsiz);  }  TCMAP *nodec = bdb->nodec;  tcmapiterinit(nodec);  while((vbuf = tcmapiternext(nodec, &vsiz)) != NULL){    TCLISTPUSH(nids, vbuf, vsiz);  }  BDBUNLOCKMETHOD(bdb);  bool err = false;  int ln = TCLISTNUM(lids);  for(int i = 0; i < ln; i++){    vbuf = TCLISTVALPTR(lids, i);    if(BDBLOCKMETHOD(bdb, true)){      BDBTHREADYIELD(bdb);      if(bdb->open){        int rsiz;        BDBLEAF *leaf = (BDBLEAF *)tcmapget(bdb->leafc, vbuf, sizeof(leaf->id), &rsiz);        if(leaf && leaf->dirty && !tcbdbleafsave(bdb, leaf)) err = true;      } else {        err = true;      }      BDBUNLOCKMETHOD(bdb);    } else {      err = true;    }  }  ln = TCLISTNUM(nids);  for(int i = 0; i < ln; i++){    vbuf = TCLISTVALPTR(nids, i);    if(BDBLOCKMETHOD(bdb, true)){      if(bdb->open){        int rsiz;        BDBNODE *node = (BDBNODE *)tcmapget(bdb->nodec, vbuf, sizeof(node->id), &rsiz);        if(node && node->dirty && !tcbdbnodesave(bdb, node)) err = true;      } else {        err = true;      }      BDBUNLOCKMETHOD(bdb);    } else {      err = true;    }  }  tclistdel(nids);  tclistdel(lids);  if(!tcbdbtranbegin(bdb)) err = true;  if(BDBLOCKMETHOD(bdb, false)){    BDBTHREADYIELD(bdb);    if(!tchdbcopy(bdb->hdb, path)) err = true;    BDBUNLOCKMETHOD(bdb);  } else {    err = true;  }  if(!tcbdbtrancommit(bdb)) err = true;  return !err;}/* Begin the transaction of a B+ tree database object. */bool tcbdbtranbegin(TCBDB *bdb){  assert(bdb);  for(double wsec = 1.0 / sysconf(_SC_CLK_TCK); true; wsec *= 2){    if(!BDBLOCKMETHOD(bdb, true)) return false;    if(!bdb->open || !bdb->wmode){      tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);      BDBUNLOCKMETHOD(bdb);      return false;    }    if(!bdb->tran) break;    BDBUNLOCKMETHOD(bdb);    if(wsec > 1.0) wsec = 1.0;    tcsleep(wsec);  }  if(!tcbdbmemsync(bdb, false)){    BDBUNLOCKMETHOD(bdb);    return false;  }  if(!tchdbtranbegin(bdb->hdb)){    BDBUNLOCKMETHOD(bdb);    return false;  }  bdb->tran = true;  TCMEMDUP(bdb->rbopaque, bdb->opaque, BDBOPAQUESIZ);  BDBUNLOCKMETHOD(bdb);  return true;}/* Commit the transaction of a B+ tree database object. */bool tcbdbtrancommit(TCBDB *bdb){  assert(bdb);  if(!BDBLOCKMETHOD(bdb, true)) return false;  if(!bdb->open || !bdb->wmode || !bdb->tran){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return false;  }  TCFREE(bdb->rbopaque);  bdb->tran = false;  bdb->rbopaque = NULL;  bool err = false;  if(!tcbdbmemsync(bdb, false)) err = true;  if(!tcbdbcacheadjust(bdb)) err = true;  if(err){    tchdbtranabort(bdb->hdb);  } else if(!tchdbtrancommit(bdb->hdb)){    err = true;  }  BDBUNLOCKMETHOD(bdb);  return !err;}/* Abort the transaction of a B+ tree database object. */bool tcbdbtranabort(TCBDB *bdb){  assert(bdb);  if(!BDBLOCKMETHOD(bdb, true)) return false;  if(!bdb->open || !bdb->wmode || !bdb->tran){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return false;  }  tcbdbcachepurge(bdb);  memcpy(bdb->opaque, bdb->rbopaque, BDBOPAQUESIZ);  tcbdbloadmeta(bdb);  TCFREE(bdb->rbopaque);  bdb->tran = false;  bdb->rbopaque = NULL;  bdb->hleaf = 0;  bdb->lleaf = 0;  bdb->clock++;  bool err = false;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费观看在线综合| 欧美系列一区二区| 91成人在线精品| 精品日韩成人av| 丝袜国产日韩另类美女| 99久久精品免费看国产免费软件| 欧美日韩精品电影| 一色桃子久久精品亚洲| 国内精品自线一区二区三区视频| 欧美亚洲综合网| ●精品国产综合乱码久久久久| 老司机精品视频导航| 欧美色大人视频| 一区二区三区不卡视频在线观看| 国产一区二区三区四| 欧美一区二区三区电影| 亚洲成人激情社区| 欧美亚洲国产一区二区三区va| 国产人妖乱国产精品人妖| 国产在线乱码一区二区三区| 欧美一区二区三区在线电影 | 成人美女视频在线观看18| 日韩一区二区三区免费看 | 国产一级精品在线| 日韩欧美精品三级| 日产精品久久久久久久性色| 欧美精品乱人伦久久久久久| 亚洲va国产天堂va久久en| 日本丶国产丶欧美色综合| 亚洲免费观看在线观看| 99国产精品久久久| 亚洲品质自拍视频| 色狠狠色噜噜噜综合网| 一区二区在线电影| 欧美亚洲国产一区二区三区va| 亚洲欧美国产三级| 欧美午夜影院一区| 天堂在线亚洲视频| 欧美一区二区三区系列电影| 久久精品国产99国产精品| 国产日韩欧美激情| 波多野结衣亚洲一区| 亚洲免费在线观看| 欧美日韩国产一区二区三区地区| 日韩成人免费看| 久久综合丝袜日本网| 菠萝蜜视频在线观看一区| 亚洲综合在线五月| 欧美一区二区三区播放老司机| 极品少妇一区二区三区精品视频 | 亚洲高清免费在线| 欧美一区二区女人| 丁香天五香天堂综合| 一区二区三区在线免费视频| 欧美日韩精品一区视频| 久久99深爱久久99精品| 欧美国产日韩亚洲一区| 精品视频免费看| 国产精品小仙女| 亚洲欧美激情一区二区| 欧美成人免费网站| av激情综合网| 男人操女人的视频在线观看欧美| 久久久久国产精品麻豆| 色综合久久88色综合天天6| 美女视频一区二区三区| 国产精品美女www爽爽爽| 欧美日韩国产经典色站一区二区三区| 国产一区二区在线视频| 亚洲自拍偷拍九九九| 精品欧美久久久| 91久久精品一区二区二区| 久久精品免费看| 亚洲精品视频在线看| 欧美tickling网站挠脚心| 99国产麻豆精品| 韩国av一区二区三区在线观看| 亚洲男同1069视频| 精品成人一区二区三区| 欧美三级视频在线播放| 国产成人8x视频一区二区| 亚洲成人动漫av| 亚洲精选视频免费看| 久久久蜜桃精品| 日韩视频123| 在线视频中文字幕一区二区| 国产成人av电影在线观看| 日韩精品乱码免费| 亚洲最大色网站| 亚洲色图都市小说| 国产色综合久久| 26uuu欧美| 精品日韩99亚洲| 日韩一区二区三区免费看| 欧美在线影院一区二区| 99久久精品99国产精品| 国产精品1区2区| 国内成人自拍视频| 精品亚洲免费视频| 日本亚洲最大的色成网站www| 亚洲最大色网站| 亚洲愉拍自拍另类高清精品| 一区在线播放视频| 中文字幕在线不卡视频| 国产三级一区二区| 国产日韩欧美亚洲| 久久久777精品电影网影网| 欧美v国产在线一区二区三区| 欧美日韩日本视频| 欧美日韩国产小视频在线观看| 91捆绑美女网站| 一本色道**综合亚洲精品蜜桃冫| 成人精品一区二区三区四区| 福利电影一区二区| 成人一区在线观看| jlzzjlzz欧美大全| 91蝌蚪porny成人天涯| 在线免费观看视频一区| 欧美日韩高清影院| 欧美一区二区久久久| 久久综合狠狠综合久久综合88| 久久久欧美精品sm网站| 中文欧美字幕免费| 亚洲天堂网中文字| 午夜影视日本亚洲欧洲精品| 日韩综合一区二区| 久久99精品视频| 成人一区二区在线观看| 色综合久久综合网欧美综合网 | 成人妖精视频yjsp地址| 91亚洲精品久久久蜜桃网站| 91农村精品一区二区在线| 欧美影视一区在线| 日韩精品一区二区三区四区 | 婷婷国产在线综合| 久久99热狠狠色一区二区| 国产精品1区2区3区在线观看| 97久久精品人人做人人爽| 欧美在线色视频| 日韩丝袜情趣美女图片| 国产日韩欧美精品一区| 亚洲午夜在线电影| 久久电影网站中文字幕| 97精品国产97久久久久久久久久久久 | 亚洲另类色综合网站| 日韩国产欧美在线观看| 粉嫩嫩av羞羞动漫久久久| 欧美性感一类影片在线播放| 欧美肥胖老妇做爰| 国产精品青草久久| 青青草国产成人av片免费| 成人免费不卡视频| 91精品国产高清一区二区三区| 国产视频视频一区| 日韩激情一区二区| av在线播放不卡| 精品国产一区二区三区久久久蜜月 | 日韩在线a电影| 99久久99久久久精品齐齐| 日韩一区二区免费视频| 《视频一区视频二区| 极品尤物av久久免费看| 欧美视频一区在线| 国产精品日韩成人| 久久er99热精品一区二区| 欧美日韩在线直播| 亚洲日本成人在线观看| 国产真实乱偷精品视频免| 欧美撒尿777hd撒尿| 中文字幕日韩av资源站| 国产乱人伦偷精品视频不卡| 制服丝袜在线91| 一区二区成人在线| 成人免费毛片片v| 久久久精品黄色| 奇米色一区二区| 欧美日韩极品在线观看一区| 中文字幕一区二区三区色视频| 美女爽到高潮91| 91超碰这里只有精品国产| 亚洲人成小说网站色在线| 懂色一区二区三区免费观看| 欧美va亚洲va香蕉在线| 日本亚洲天堂网| 欧美一区二区三区啪啪| 午夜在线成人av| 欧美人妇做爰xxxⅹ性高电影| 欧美一区二区黄| 毛片av一区二区三区| 91精品国产aⅴ一区二区| 日韩在线播放一区二区| 欧美日韩一二区| 一区二区三区精密机械公司| 91网站最新网址| 中文字幕一区二区三区四区不卡 | 亚洲欧美偷拍卡通变态| 9i在线看片成人免费| 中文字幕第一区综合| 成人精品视频网站| 自拍av一区二区三区|