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

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

?? tcbdb.c

?? 高性能嵌入式數據庫在高并發的環境下使用最好是64位系統比較好
?? C
?? 第 1 頁 / 共 5 頁
字號:
  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){  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;  }  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;  }  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;  }  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)){      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)){    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);  if(!BDBLOCKMETHOD(bdb, true)) return false;  if(!bdb->open || !bdb->wmode || bdb->tran){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return false;  }  if(!tcbdbmemsync(bdb, false)){    BDBUNLOCKMETHOD(bdb);    return false;  }  if(!BDBLOCKTRAN(bdb)){    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;  BDBUNLOCKTRAN(bdb);  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);  tcloadmeta(bdb);  TCFREE(bdb->rbopaque);  bdb->tran = false;  bdb->rbopaque = NULL;  bool err = false;  if(!tcbdbcacheadjust(bdb)) err = true;  BDBUNLOCKTRAN(bdb);  BDBUNLOCKMETHOD(bdb);  return !err;}/* Get the file path of a B+ tree database object. */const char *tcbdbpath(TCBDB *bdb){  assert(bdb);  if(!BDBLOCKMETHOD(bdb, false)) return NULL;  if(!bdb->open){    tcbdbsetecode(bdb, TCEINVALID, __FILE__, __LINE__, __func__);    BDBUNLOCKMETHOD(bdb);    return NULL;  }  const char *rv = tchdbpath(bdb->hdb);  BDBUNLOCKMETHOD(bdb);  return rv;}/* Get the number of records of a B+ tree database object. */uint64_t tcbdbrnum(TCBDB *bdb){  assert(bdb);  if(!BDBLOCKMETHOD(bdb, false)) return 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区四区五区视频在线观看| 国产精品资源站在线| 久久成人久久鬼色| 成人免费电影视频| 欧美电影免费观看完整版 | 91在线高清观看| 欧美一三区三区四区免费在线看| 国产精品网站导航| 久久爱另类一区二区小说| 在线中文字幕一区二区| 日本一区二区三区四区在线视频 | 中文字幕色av一区二区三区| 日本强好片久久久久久aaa| 91碰在线视频| 欧美极品另类videosde| 加勒比av一区二区| 欧美一区二区三区四区久久| 一级女性全黄久久生活片免费| 国产成a人无v码亚洲福利| 日韩欧美成人一区二区| 奇米色一区二区| 欧美三级电影在线看| 亚洲六月丁香色婷婷综合久久 | 天堂久久久久va久久久久| 99精品热视频| 国产欧美精品在线观看| 国产精品资源在线观看| 久久免费精品国产久精品久久久久| 天堂一区二区在线免费观看| 欧美日韩免费观看一区二区三区 | 国产日韩av一区二区| 久久精品国产一区二区| 精品久久久久久久久久久久久久久久久 | 国产网站一区二区| 精品在线播放午夜| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 欧美丝袜自拍制服另类| 亚洲成人激情自拍| 日韩一区和二区| 免费成人在线网站| 久久婷婷综合激情| 国产sm精品调教视频网站| 国产日韩欧美一区二区三区综合| 国产mv日韩mv欧美| ...av二区三区久久精品| 99精品久久免费看蜜臀剧情介绍| 亚洲欧洲日韩女同| 欧美日韩在线播放| 日韩福利电影在线| 日韩久久久久久| 岛国av在线一区| 亚洲视频你懂的| 欧美日韩成人高清| 久久er精品视频| 国产精品人妖ts系列视频| 色婷婷综合视频在线观看| 日韩精品电影在线| 久久亚洲捆绑美女| 91色在线porny| 免费成人你懂的| 国产精品久久久久一区二区三区共 | 欧美日韩一区二区三区高清| 久久99在线观看| 国产精品久久777777| 欧美性xxxxxxxx| 国产综合色产在线精品| 亚洲日本丝袜连裤袜办公室| 日韩一区二区在线免费观看| 国产一区999| 亚洲一级二级三级在线免费观看| 91 com成人网| 不卡的av在线播放| 乱一区二区av| 亚洲综合在线五月| 久久久影院官网| 欧美做爰猛烈大尺度电影无法无天| 麻豆国产一区二区| 亚洲一二三级电影| 欧美极品少妇xxxxⅹ高跟鞋| 67194成人在线观看| 91亚洲精品久久久蜜桃| 精品无码三级在线观看视频| 一区二区欧美精品| 国产精品成人免费精品自在线观看| 在线不卡免费欧美| 91精品91久久久中77777| 国产在线麻豆精品观看| 天天射综合影视| ...xxx性欧美| 欧美激情在线观看视频免费| 欧美一区三区四区| 在线免费一区三区| 99国产麻豆精品| 高清成人免费视频| 国产一区二区三区美女| 日韩成人一级大片| 亚洲一区二区在线免费看| 国产精品久久国产精麻豆99网站 | 国产精品亚洲а∨天堂免在线| 亚洲午夜久久久久久久久电影院| 国产精品麻豆视频| 欧美精品一区在线观看| 91精品国产91久久久久久最新毛片 | 中文字幕高清一区| 久久影院午夜片一区| 日韩女优电影在线观看| 欧美放荡的少妇| 欧美美女视频在线观看| 欧美日韩大陆一区二区| 欧美偷拍一区二区| 欧美视频一区二区三区| 欧美日韩高清一区二区三区| 欧美日韩精品一区二区| 欧美日韩国产综合久久| 欧美日韩一区在线| 欧美日韩不卡在线| 欧美一级一区二区| 精品国产自在久精品国产| 日韩精品一区二区三区视频 | 韩日av一区二区| 精品一区二区综合| 国产在线播放一区| 国产麻豆精品一区二区| 成人伦理片在线| 99久久精品国产精品久久| 91论坛在线播放| 在线观看欧美精品| 欧美一区二区人人喊爽| 欧美成人r级一区二区三区| 久久九九久精品国产免费直播| 国产亚洲欧美日韩在线一区| 国产欧美日韩精品一区| 亚洲精品欧美在线| 五月天网站亚洲| 韩国中文字幕2020精品| 99久久99久久免费精品蜜臀| 欧美日免费三级在线| 日韩免费视频一区| 中文字幕一区二区三中文字幕| 亚洲另类在线视频| 美女视频黄频大全不卡视频在线播放| 精品系列免费在线观看| 99精品欧美一区二区蜜桃免费| 精品视频全国免费看| 精品福利二区三区| 亚洲人成网站影音先锋播放| 日韩av二区在线播放| 国产99久久久国产精品潘金网站| 91亚洲国产成人精品一区二区三| 欧美酷刑日本凌虐凌虐| 国产精品天天看| 三级精品在线观看| 成人99免费视频| 91精品免费在线| 国产精品午夜在线| 日本视频免费一区| 99久精品国产| 久久天堂av综合合色蜜桃网| 亚洲欧美激情插| 国产伦精一区二区三区| 91国模大尺度私拍在线视频| 久久久噜噜噜久久人人看 | 欧美美女一区二区三区| 亚洲国产精品高清| 美国十次了思思久久精品导航| 91视频91自| 国产亚洲综合性久久久影院| 亚洲午夜精品网| jlzzjlzz亚洲日本少妇| 亚洲精品在线网站| 亚洲成人动漫一区| 色综合色综合色综合| 久久精品人人做人人综合| 日韩高清一级片| 色综合中文综合网| 秋霞电影网一区二区| 成+人+亚洲+综合天堂| 日韩欧美一区二区免费| 一区二区理论电影在线观看| 国产91丝袜在线播放| 欧美精品一区二区蜜臀亚洲| 亚洲第一综合色| 色噜噜夜夜夜综合网| 中文字幕av一区二区三区高| 久久99精品一区二区三区| 欧美精品电影在线播放| 亚洲一区二区精品3399| 在线视频亚洲一区| 亚洲欧美国产高清| 91丨porny丨户外露出| 国产欧美1区2区3区| 国产精品一二三| 久久久亚洲高清| 狠狠色狠狠色合久久伊人| 精品理论电影在线| 国内精品自线一区二区三区视频| 欧美一区二区三区啪啪| 全国精品久久少妇| 精品人在线二区三区| 国产精品一色哟哟哟|