static mrb_value mrb_grn_cache_fetch(mrb_state *mrb, mrb_value self) { grn_ctx *ctx = (grn_ctx *)mrb->ud; grn_cache *cache; char *key; mrb_int key_size; grn_rc rc; grn_obj cache_value; mrb_value mrb_cache_value; cache = DATA_PTR(self); mrb_get_args(mrb, "s", &key, &key_size); GRN_TEXT_INIT(&cache_value, 0); rc = grn_cache_fetch(ctx, cache, key, key_size, &cache_value); if (rc == GRN_SUCCESS) { mrb_cache_value = grn_mrb_value_from_bulk(mrb, &cache_value); } else { mrb_cache_value = mrb_nil_value(); } GRN_OBJ_FIN(ctx, &cache_value); return mrb_cache_value; }
static mrb_value mrb_grn_cache_fetch(mrb_state *mrb, mrb_value self) { grn_ctx *ctx = (grn_ctx *)mrb->ud; grn_cache *cache; char *key; mrb_int key_size; grn_obj *value; cache = DATA_PTR(self); mrb_get_args(mrb, "s", &key, &key_size); value = grn_cache_fetch(ctx, cache, key, key_size); return grn_mrb_value_from_bulk(mrb, value); }
static mrb_value mrb_grn_converter_singleton_convert(mrb_state *mrb, mrb_value klass) { grn_ctx *ctx = (grn_ctx *)mrb->ud; grn_obj *from = &(ctx->impl->mrb.buffer.from); grn_obj *to = &(ctx->impl->mrb.buffer.to); mrb_value mrb_from; mrb_value mrb_to_class; grn_id to_type; mrb_get_args(mrb, "oC", &mrb_from, &mrb_to_class); grn_mrb_value_to_bulk(mrb, mrb_from, from); to_type = grn_mrb_class_to_type(mrb, mrb_class_ptr(mrb_to_class)); if (!grn_mrb_bulk_cast(mrb, from, to, to_type)) { mrb_raisef(mrb, E_ARGUMENT_ERROR, "failed to convert to %S: %S", mrb_to_class, mrb_from); } return grn_mrb_value_from_bulk(mrb, to); }
static mrb_value mrb_grn_bulk_get_value(mrb_state *mrb, mrb_value self) { return grn_mrb_value_from_bulk(mrb, DATA_PTR(self)); }