static mrb_value mrb_vedis_exists(mrb_state *mrb, mrb_value self) { int ret; vedis *vstore = DATA_PTR(self); mrb_value key_obj; vedis_value *result; const char *key = NULL; mrb_get_args(mrb, "o", &key_obj); switch (mrb_type(key_obj)) { case MRB_TT_STRING: key = RSTRING_PTR(key_obj); break; case MRB_TT_SYMBOL: key = mrb_sym2name(mrb, mrb_obj_to_sym(mrb, key_obj)); break; default: mrb_raise(mrb, E_RUNTIME_ERROR, "vedis key type is string or symbol"); } ret = vedis_exec_fmt(vstore, "EXISTS %s", key); if (ret != VEDIS_OK) { mrb_vedis_error(mrb, vstore, 0); } ret = vedis_exec_result(vstore, &result); if (ret != VEDIS_OK) { mrb_vedis_error(mrb, vstore, 0); } if (vedis_value_to_bool(result)) { return mrb_true_value(); } return mrb_false_value(); }
void ctteststrings(void) { int rc; const char *str; vedis *store = NULL; vedis_value *res = NULL; rc = vedis_open(&store, NULL /* in memory */); assert(rc == VEDIS_OK); EXEC_CMD("GET misc"); assert(vedis_value_is_null(res)); EXEC_CMD("SET misc smthg"); assert(vedis_value_is_bool(res)); assert(vedis_value_to_bool(res)); EXEC_CMD("GET misc"); assert(vedis_value_is_string(res)); assert(str = vedis_value_to_string(res, NULL)); assert(!strcmp(str, "smthg")); vedis_close(store); }