📄 tcadb.c
字号:
TCLISTPUSH(rv, vbuf, vsiz); TCFREE(vbuf); } else { tclistdel(rv); rv = NULL; } } else { rv = NULL; } } else if(!strcmp(name, "putlist")){ rv = tclistnew2(1); argc--; for(int i = 0; i < argc; i += 2){ const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, i, ksiz); int vsiz; const char *vbuf = tclistval(args, i + 1, &vsiz); tcndbput(adb->ndb, kbuf, ksiz, vbuf, vsiz); } } else if(!strcmp(name, "outlist")){ rv = tclistnew2(1); for(int i = 0; i < argc; i++){ const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, i, ksiz); tcndbout(adb->ndb, kbuf, ksiz); } } else if(!strcmp(name, "getlist")){ rv = tclistnew2(argc); for(int i = 0; i < argc; i++){ const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, i, ksiz); int vsiz; char *vbuf = tcndbget(adb->ndb, kbuf, ksiz, &vsiz); if(vbuf){ TCLISTPUSH(rv, kbuf, ksiz); TCLISTPUSH(rv, vbuf, vsiz); TCFREE(vbuf); } } } else { rv = NULL; } break; case ADBOHDB: if(!strcmp(name, "put") || !strcmp(name, "putkeep") || !strcmp(name, "putcat")){ if(argc > 1){ rv = tclistnew2(1); const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, 0, ksiz); const char *vbuf; int vsiz; TCLISTVAL(vbuf, args, 1, vsiz); bool err = false; if(!strcmp(name, "put")){ if(!tchdbput(adb->hdb, kbuf, ksiz, vbuf, vsiz)) err = true; } else if(!strcmp(name, "putkeep")){ if(!tchdbputkeep(adb->hdb, kbuf, ksiz, vbuf, vsiz)) err = true; } else if(!strcmp(name, "putcat")){ if(!tchdbputcat(adb->hdb, kbuf, ksiz, vbuf, vsiz)) err = true; } if(err){ tclistdel(rv); rv = NULL; } } else { rv = NULL; } } else if(!strcmp(name, "out")){ if(argc > 0){ rv = tclistnew2(1); const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, 0, ksiz); if(!tchdbout(adb->hdb, kbuf, ksiz)){ tclistdel(rv); rv = NULL; } } else { rv = NULL; } } else if(!strcmp(name, "get")){ if(argc > 0){ rv = tclistnew2(1); const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, 0, ksiz); int vsiz; char *vbuf = tchdbget(adb->hdb, kbuf, ksiz, &vsiz); if(vbuf){ TCLISTPUSH(rv, vbuf, vsiz); TCFREE(vbuf); } else { tclistdel(rv); rv = NULL; } } else { rv = NULL; } } else if(!strcmp(name, "putlist")){ rv = tclistnew2(1); bool err = false; argc--; for(int i = 0; i < argc; i += 2){ const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, i, ksiz); int vsiz; const char *vbuf = tclistval(args, i + 1, &vsiz); if(!tchdbput(adb->hdb, kbuf, ksiz, vbuf, vsiz)){ err = true; break; } } if(err){ tclistdel(rv); rv = NULL; } } else if(!strcmp(name, "outlist")){ rv = tclistnew2(1); bool err = false; for(int i = 0; i < argc; i++){ const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, i, ksiz); if(!tchdbout(adb->hdb, kbuf, ksiz) && tchdbecode(adb->hdb) != TCENOREC){ err = true; break; } } if(err){ tclistdel(rv); rv = NULL; } } else if(!strcmp(name, "getlist")){ rv = tclistnew2(argc); bool err = false; for(int i = 0; i < argc; i++){ const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, i, ksiz); int vsiz; char *vbuf = tchdbget(adb->hdb, kbuf, ksiz, &vsiz); if(vbuf){ TCLISTPUSH(rv, kbuf, ksiz); TCLISTPUSH(rv, vbuf, vsiz); TCFREE(vbuf); } else if(tchdbecode(adb->hdb) != TCENOREC){ err = true; } } if(err){ tclistdel(rv); rv = NULL; } } else { rv = NULL; } break; case ADBOBDB: if(!strcmp(name, "put") || !strcmp(name, "putkeep") || !strcmp(name, "putcat") || !strcmp(name, "putdup") || !strcmp(name, "putdupback")){ if(argc > 1){ rv = tclistnew2(1); const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, 0, ksiz); const char *vbuf; int vsiz; TCLISTVAL(vbuf, args, 1, vsiz); bool err = false; if(!strcmp(name, "put")){ if(!tcbdbput(adb->bdb, kbuf, ksiz, vbuf, vsiz)) err = true; } else if(!strcmp(name, "putkeep")){ if(!tcbdbputkeep(adb->bdb, kbuf, ksiz, vbuf, vsiz)) err = true; } else if(!strcmp(name, "putcat")){ if(!tcbdbputcat(adb->bdb, kbuf, ksiz, vbuf, vsiz)) err = true; } else if(!strcmp(name, "putdup")){ if(!tcbdbputdup(adb->bdb, kbuf, ksiz, vbuf, vsiz)) err = true; } else if(!strcmp(name, "putback")){ if(!tcbdbputdupback(adb->bdb, kbuf, ksiz, vbuf, vsiz)) err = true; } if(err){ tclistdel(rv); rv = NULL; } } else { rv = NULL; } } else if(!strcmp(name, "out")){ if(argc > 0){ rv = tclistnew2(1); const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, 0, ksiz); if(!tcbdbout(adb->bdb, kbuf, ksiz)){ tclistdel(rv); rv = NULL; } } else { rv = NULL; } } else if(!strcmp(name, "get")){ if(argc > 0){ rv = tclistnew2(1); const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, 0, ksiz); TCLIST *vals = tcbdbget4(adb->bdb, kbuf, ksiz); if(vals){ tclistdel(rv); rv = vals; } else { tclistdel(rv); rv = NULL; } } else { rv = NULL; } } else if(!strcmp(name, "putlist")){ rv = tclistnew2(1); bool err = false; argc--; for(int i = 0; i < argc; i += 2){ const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, i, ksiz); int vsiz; const char *vbuf = tclistval(args, i + 1, &vsiz); if(!tcbdbputdup(adb->bdb, kbuf, ksiz, vbuf, vsiz)){ err = true; break; } } if(err){ tclistdel(rv); rv = NULL; } } else if(!strcmp(name, "outlist")){ rv = tclistnew2(1); bool err = false; for(int i = 0; i < argc; i++){ const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, i, ksiz); if(!tcbdbout3(adb->bdb, kbuf, ksiz) && tcbdbecode(adb->bdb) != TCENOREC){ err = true; break; } } if(err){ tclistdel(rv); rv = NULL; } } else if(!strcmp(name, "getlist")){ rv = tclistnew2(argc); bool err = false; for(int i = 0; i < argc; i++){ const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, i, ksiz); TCLIST *vals = tcbdbget4(adb->bdb, kbuf, ksiz); if(vals){ int vnum = TCLISTNUM(vals); for(int j = 0; j < vnum; j++){ TCLISTPUSH(rv, kbuf, ksiz); const char *vbuf; int vsiz; TCLISTVAL(vbuf, vals, j, vsiz); TCLISTPUSH(rv, vbuf, vsiz); } tclistdel(vals); } else if(tcbdbecode(adb->bdb) != TCENOREC){ err = true; } } if(err){ tclistdel(rv); rv = NULL; } } else { rv = NULL; } break; case ADBOFDB: if(!strcmp(name, "put") || !strcmp(name, "putkeep") || !strcmp(name, "putcat")){ if(argc > 1){ rv = tclistnew2(1); const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, 0, ksiz); const char *vbuf; int vsiz; TCLISTVAL(vbuf, args, 1, vsiz); bool err = false; if(!strcmp(name, "put")){ if(!tcfdbput2(adb->fdb, kbuf, ksiz, vbuf, vsiz)) err = true; } else if(!strcmp(name, "putkeep")){ if(!tcfdbputkeep2(adb->fdb, kbuf, ksiz, vbuf, vsiz)) err = true; } else if(!strcmp(name, "putcat")){ if(!tcfdbputcat2(adb->fdb, kbuf, ksiz, vbuf, vsiz)) err = true; } if(err){ tclistdel(rv); rv = NULL; } } else { rv = NULL; } } else if(!strcmp(name, "out")){ if(argc > 0){ rv = tclistnew2(1); const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, 0, ksiz); if(!tcfdbout2(adb->fdb, kbuf, ksiz)){ tclistdel(rv); rv = NULL; } } else { rv = NULL; } } else if(!strcmp(name, "get")){ if(argc > 0){ rv = tclistnew2(1); const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, 0, ksiz); int vsiz; char *vbuf = tcfdbget2(adb->fdb, kbuf, ksiz, &vsiz); if(vbuf){ TCLISTPUSH(rv, vbuf, vsiz); TCFREE(vbuf); } else { tclistdel(rv); rv = NULL; } } else { rv = NULL; } } else if(!strcmp(name, "putlist")){ rv = tclistnew2(1); bool err = false; argc--; for(int i = 0; i < argc; i += 2){ const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, i, ksiz); int vsiz; const char *vbuf = tclistval(args, i + 1, &vsiz); if(!tcfdbput2(adb->fdb, kbuf, ksiz, vbuf, vsiz)){ err = true; break; } } if(err){ tclistdel(rv); rv = NULL; } } else if(!strcmp(name, "outlist")){ rv = tclistnew2(1); bool err = false; for(int i = 0; i < argc; i++){ const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, i, ksiz); if(!tcfdbout2(adb->fdb, kbuf, ksiz) && tcfdbecode(adb->fdb) != TCENOREC){ err = true; break; } } if(err){ tclistdel(rv); rv = NULL; } } else if(!strcmp(name, "getlist")){ rv = tclistnew2(argc); bool err = false; for(int i = 0; i < argc; i++){ const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, i, ksiz); int vsiz; char *vbuf = tcfdbget2(adb->fdb, kbuf, ksiz, &vsiz); if(vbuf){ TCLISTPUSH(rv, kbuf, ksiz); TCLISTPUSH(rv, vbuf, vsiz); TCFREE(vbuf); } else if(tcfdbecode(adb->fdb) != TCENOREC){ err = true; } } if(err){ tclistdel(rv); rv = NULL; } } else { rv = NULL; } break; case ADBOTDB: if(!strcmp(name, "put") || !strcmp(name, "putkeep") || !strcmp(name, "putcat")){ if(argc > 0){ rv = tclistnew2(1); char *pkbuf; int pksiz; TCLISTVAL(pkbuf, args, 0, pksiz); argc--; TCMAP *cols = tcmapnew2(argc); for(int i = 1; i < argc; i += 2){ const char *kbuf; int ksiz; TCLISTVAL(kbuf, args, i, ksiz); int vsiz; const char *vbuf = tclistval(args, i + 1, &vsiz); tcmapput(cols, kbuf, ksiz, vbuf, vsiz); } bool err = false; if(!strcmp(name, "put")){ if(!tctdbput(adb->tdb, pkbuf, pksiz, cols)) err = true; } else if(!strcmp(name, "putkeep")){ if(!tctdbputkeep(adb->tdb, pkbuf, pksiz, cols)) err = true; } else if(!strcmp(name, "putcat")){ if(!tctdbputcat(adb->tdb, pkbuf, pksiz, cols)) err = true; } tcmapdel(cols); if(err){ tclistdel(rv); rv = NULL; } } else { rv = NULL; } } else if(!strcmp(name, "out")){ if(argc > 0){ rv = tclistnew2(1); char *pkbuf; int pksiz; TCLISTVAL(pkbuf, args, 0, pksiz); if(!tctdbout(adb->tdb, pkbuf, pksiz)){ tclistdel(rv); rv = NULL; } } else { rv = NULL; } } else if(!strcmp(name, "get")){ if(argc > 0){ rv = tclistnew2(1); char *pkbuf; int pksiz; TCLISTVAL(pkbuf, args, 0, pksiz); TCMAP *cols = tctdbget(adb->tdb, pkbuf, pksiz); if(cols){ tcmapiterinit(cols); const char *kbuf; int ksiz; while((kbuf = tcmapiternext(cols, &ksiz)) != NULL){ int vsiz; const char *vbuf = tcmapiterval(kbuf, &vsiz); TCLISTPUSH(rv, kbuf, ksiz); TCLISTPUSH(rv, vbuf, vsiz); } tcmapdel(cols); } else { tclistdel(rv); rv = NULL; } } else { rv = NULL; } } else if(!strcmp(name, "putlist")){ rv = tclistnew2(1); bool err = false; argc--; for(int i = 0; i < argc; i += 2){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -