Kouhei Sutou
null+****@clear*****
Sun Jun 8 15:10:49 JST 2014
Kouhei Sutou 2014-06-08 15:10:49 +0900 (Sun, 08 Jun 2014) New Revision: 2ca439e2a63ca396a7ba41743ddd6c3bc8e3b78b https://github.com/groonga/groonga/commit/2ca439e2a63ca396a7ba41743ddd6c3bc8e3b78b Message: mrb converter: support accessor Modified files: lib/mrb/mrb_accessor.c lib/mrb/mrb_accessor.h lib/mrb/mrb_converter.c lib/mrb/mrb_expr.c Modified: lib/mrb/mrb_accessor.c (+1 -15) =================================================================== --- lib/mrb/mrb_accessor.c 2014-06-08 15:07:41 +0900 (1ff09e8) +++ lib/mrb/mrb_accessor.c 2014-06-08 15:10:49 +0900 (a350c6b) @@ -1,6 +1,6 @@ /* -*- c-basic-offset: 2 -*- */ /* - Copyright(C) 2013 Brazil + Copyright(C) 2013-2014 Brazil This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -32,20 +32,6 @@ static struct mrb_data_type mrb_grn_accessor_type = { NULL }; -mrb_value -mrb_grn_accessor_new(mrb_state *mrb, grn_accessor *accessor) -{ - grn_ctx *ctx = (grn_ctx *)mrb->ud; - struct RClass *module = ctx->impl->mrb.module; - struct RClass *klass; - mrb_value mrb_accessor_ptr; - - mrb_accessor_ptr = mrb_cptr_value(mrb, accessor); - klass = mrb_class_ptr(mrb_const_get(mrb, mrb_obj_value(module), - mrb_intern(mrb, "Accessor"))); - return mrb_obj_new(mrb, klass, 1, &mrb_accessor_ptr); -} - static mrb_value mrb_grn_accessor_initialize(mrb_state *mrb, mrb_value self) { Modified: lib/mrb/mrb_accessor.h (+1 -4) =================================================================== --- lib/mrb/mrb_accessor.h 2014-06-08 15:07:41 +0900 (2eb2eff) +++ lib/mrb/mrb_accessor.h 2014-06-08 15:10:49 +0900 (2aaf32f) @@ -1,6 +1,6 @@ /* -*- c-basic-offset: 2 -*- */ /* - Copyright(C) 2013 Brazil + Copyright(C) 2013-2014 Brazil This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -27,9 +27,6 @@ extern "C" { #endif void grn_mrb_accessor_init(grn_ctx *ctx); -#ifdef GRN_WITH_MRUBY -mrb_value mrb_grn_accessor_new(mrb_state *mrb, grn_accessor *accessor); -#endif #ifdef __cplusplus } Modified: lib/mrb/mrb_converter.c (+3 -0) =================================================================== --- lib/mrb/mrb_converter.c 2014-06-08 15:07:41 +0900 (3a2097a) +++ lib/mrb/mrb_converter.c 2014-06-08 15:10:49 +0900 (9e9e8a4) @@ -34,6 +34,9 @@ grn_mrb_class_from_grn_obj(mrb_state *mrb, grn_obj *object) data = &(ctx->impl->mrb); switch (object->header.type) { + case GRN_ACCESSOR : + klass = mrb_class_get_under(mrb, data->module, "Accessor"); + break; case GRN_COLUMN_FIX_SIZE : klass = mrb_class_get_under(mrb, data->module, "FixedSizeColumn"); break; Modified: lib/mrb/mrb_expr.c (+3 -3) =================================================================== --- lib/mrb/mrb_expr.c 2014-06-08 15:07:41 +0900 (1f17165) +++ lib/mrb/mrb_expr.c 2014-06-08 15:10:49 +0900 (0531f2d) @@ -188,7 +188,7 @@ scan_info_build(grn_ctx *ctx, grn_obj *expr, int *n, mrb_value mrb_accessor; weight = mrb_fixnum(mrb_funcall(mrb, mrb_ec, "weight", 0)); grn_scan_info_set_flags(si, grn_scan_info_get_flags(si) | SCAN_ACCESSOR); - mrb_accessor = mrb_grn_accessor_new(mrb, (grn_accessor *)ec->value); + mrb_accessor = grn_mrb_value_from_grn_obj(mrb, ec->value); if (!mrb_nil_p(mrb_funcall(mrb, mrb_accessor, "next", 0))) { mrb_funcall(mrb, mrb_si, "put_index", 3, mrb_cptr_value(mrb, ec->value), @@ -246,7 +246,7 @@ scan_info_build(grn_ctx *ctx, grn_obj *expr, int *n, } else if (GRN_ACCESSORP(*p)) { grn_scan_info_set_flags(si, grn_scan_info_get_flags(si) | SCAN_ACCESSOR); if (grn_column_index(ctx, *p, c->op, &index, 1, &sid)) { - mrb_value mrb_accessor = mrb_grn_accessor_new(mrb, (grn_accessor *)*p); + mrb_value mrb_accessor = grn_mrb_value_from_grn_obj(mrb, *p); if (!mrb_nil_p(mrb_funcall(mrb, mrb_accessor, "next", 0))) { mrb_funcall(mrb, mrb_si, "put_index", 3, mrb_cptr_value(mrb, *p), @@ -362,7 +362,7 @@ scan_info_build(grn_ctx *ctx, grn_obj *expr, int *n, mrb_funcall(mrb, mrb_si, "resolve_index_db_obj", 1, mrb_target); } else if (GRN_ACCESSORP(*p)) { mrb_value mrb_target; - mrb_target = mrb_grn_accessor_new(mrb, (grn_accessor *)(*p)); + mrb_target = grn_mrb_value_from_grn_obj(mrb, *p); mrb_funcall(mrb, mrb_si, "resolve_index_accessor", 1, mrb_target); } else { mrb_funcall(mrb, mrb_si, "query=", 1, mrb_cptr_value(mrb, *p)); -------------- next part -------------- HTML����������������������������...Download