Kouhei Sutou
null+****@clear*****
Tue May 27 23:57:43 JST 2014
Kouhei Sutou 2014-05-27 23:57:43 +0900 (Tue, 27 May 2014) New Revision: 258c9079908cff730eb55db713a815536a329251 https://github.com/groonga/groonga/commit/258c9079908cff730eb55db713a815536a329251 Message: mrb: add Groonga::Accessor#find_index Modified files: lib/mrb/mrb_accessor.c Modified: lib/mrb/mrb_accessor.c (+28 -0) =================================================================== --- lib/mrb/mrb_accessor.c 2014-05-27 23:57:25 +0900 (1ff09e8) +++ lib/mrb/mrb_accessor.c 2014-05-27 23:57:43 +0900 (3e15d27) @@ -26,6 +26,7 @@ #include "../db.h" #include "mrb_accessor.h" +#include "mrb_index_info.h" static struct mrb_data_type mrb_grn_accessor_type = { "Groonga::Accessor", @@ -67,6 +68,31 @@ mrb_grn_accessor_next(mrb_state *mrb, mrb_value self) return mrb_cptr_value(mrb, accessor->next); } +static mrb_value +mrb_grn_accessor_find_index(mrb_state *mrb, mrb_value self) +{ + grn_ctx *ctx = (grn_ctx *)mrb->ud; + grn_accessor *accessor; + mrb_value mrb_operator; + grn_obj *index; + int n_indexes; + int section_id; + + mrb_get_args(mrb, "o", &mrb_operator); + accessor = DATA_PTR(self); + n_indexes = grn_column_index(ctx, + (grn_obj *)accessor, + mrb_fixnum(mrb_operator), + &index, + 1, + §ion_id); + if (n_indexes == 0) { + return mrb_nil_value(); + } else { + return mrb_grn_index_info_new(mrb, index, section_id); + } +} + void grn_mrb_accessor_init(grn_ctx *ctx) { @@ -81,5 +107,7 @@ grn_mrb_accessor_init(grn_ctx *ctx) mrb_grn_accessor_initialize, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "next", mrb_grn_accessor_next, MRB_ARGS_NONE()); + mrb_define_method(mrb, klass, "find_index", + mrb_grn_accessor_find_index, MRB_ARGS_REQ(1)); } #endif -------------- next part -------------- HTML����������������������������...Download