static int rdb_out(lua_State *L){ TCRDB *rdb = rdb_getrdb(L, 1); int type = lua_type(L, 2); if(type==LUA_TSTRING || type==LUA_TNUMBER){ size_t ksiz = 0; const char *key = rdb_getarg(L, 2, &ksiz); if(!tcrdbout(rdb, key, ksiz)) return rdb_error(L, rdb); } else if(type==LUA_TTABLE){ TCLIST *list = array2tclist(L, 2); int opts = luaL_optint(L, 3, 0); TCLIST *useless = tcrdbmisc(rdb, "outlist", opts, list); tclistdel(list); tclistdel(useless); } else return luaL_argerror(L, 2, "must be table, string, or number"); lua_pushboolean(L, 1); return 1; }
/* out */ JNIEXPORT jboolean JNICALL Java_tokyotyrant_TCRDB_out (JNIEnv *env, jobject self, jbyteArray pkey){ if(!pkey){ throwillarg(env); return false; } TCRDB *tcrdb = (TCRDB *)(intptr_t)(*env)->GetLongField(env, self, tcrdb_fid_ptr); jboolean ick; jbyte *kbuf = (*env)->GetByteArrayElements(env, pkey, &ick); if(!kbuf){ throwoutmem(env); return false; } int ksiz = (*env)->GetArrayLength(env, pkey); bool rv = tcrdbout(tcrdb, kbuf, ksiz); if(ick) (*env)->ReleaseByteArrayElements(env, pkey, kbuf, JNI_ABORT); return rv; }
static VALUE mTokyoMessenger_out(VALUE vself, VALUE vkey){ TCRDB *db = mTokyoMessenger_getdb(vself); vkey = StringValueEx(vkey); return tcrdbout(db, RSTRING_PTR(vkey), RSTRING_LEN(vkey)) ? Qtrue : Qfalse; }