static int rdb_keys(lua_State *L){ TCRDB *rdb = rdb_getrdb(L, 1); bool init = tcrdbiterinit(rdb); if(init){ lua_pushcclosure(L, rdb_nextkey, 1); } else luaL_error(L, "unable to initialize iterator"); return 1; }
static VALUE mTokyoMessenger_each_key(VALUE vself){ VALUE vrv; char *kxstr; if(rb_block_given_p() != Qtrue) rb_raise(rb_eArgError, "no block given"); TCRDB *db = mTokyoMessenger_getdb(vself); vrv = Qnil; tcrdbiterinit(db); while((kxstr = tcrdbiternext2(db)) != NULL){ vrv = rb_yield_values(1, rb_str_new2(kxstr)); } return vrv; }
static VALUE cDB_values(VALUE vself){ VALUE vary; TCRDB *db; char *kxstr, *vxstr; Data_Get_Struct(rb_iv_get(vself, RDBVNDATA), TCRDB, db); vary = rb_ary_new2(tcrdbrnum(db)); tcrdbiterinit(db); while((kxstr = tcrdbiternext2(db)) != NULL){ vxstr = tcrdbget2(db, kxstr); rb_ary_push(vary, rb_str_new2(vxstr)); tcfree(vxstr); tcfree(kxstr); } return vary; }
static VALUE cDB_each_value(VALUE vself){ VALUE vrv; TCRDB *db; char *kxstr, *vxstr; if(rb_block_given_p() != Qtrue) rb_raise(rb_eArgError, "no block given"); Data_Get_Struct(rb_iv_get(vself, RDBVNDATA), TCRDB, db); vrv = Qnil; tcrdbiterinit(db); while((kxstr = tcrdbiternext2(db)) != NULL){ vxstr = tcrdbget2(db, kxstr); vrv = rb_yield_values(1, rb_str_new2(vxstr)); tcfree(vxstr); tcfree(kxstr); } return vrv; }
static VALUE mTokyoMessenger_iterinit(VALUE vself){ TCRDB *db = mTokyoMessenger_getdb(vself); return tcrdbiterinit(db) ? Qtrue : Qfalse; }
bool db_obj_remote::dbiterinit() { return tcrdbiterinit(_hdb); }
/* iterinit */ JNIEXPORT jboolean JNICALL Java_tokyotyrant_TCRDB_iterinit (JNIEnv *env, jobject self){ TCRDB *tcrdb = (TCRDB *)(intptr_t)(*env)->GetLongField(env, self, tcrdb_fid_ptr); return tcrdbiterinit(tcrdb); }