Kouhei Sutou
null+****@clear*****
Thu Mar 16 11:22:06 JST 2017
Kouhei Sutou 2017-03-16 11:22:06 +0900 (Thu, 16 Mar 2017) New Revision: 6f72c6af20df7a3c4452852f2cfd6ab4c3e786f1 https://github.com/groonga/groonga/commit/6f72c6af20df7a3c4452852f2cfd6ab4c3e786f1 Message: mrb: add Table#apply_expression Modified files: lib/mrb/mrb_converter.h lib/mrb/mrb_table.c Modified: lib/mrb/mrb_converter.h (+3 -0) =================================================================== --- lib/mrb/mrb_converter.h 2017-03-16 11:21:52 +0900 (27fe455) +++ lib/mrb/mrb_converter.h 2017-03-16 11:22:06 +0900 (c7628a6) @@ -24,6 +24,9 @@ extern "C" { #endif +#define GRN_MRB_DATA_PTR(mrb_object) \ + (mrb_nil_p((mrb_object)) ? NULL : DATA_PTR((mrb_object))) + void grn_mrb_converter_init(grn_ctx *ctx); typedef struct { Modified: lib/mrb/mrb_table.c (+23 -0) =================================================================== --- lib/mrb/mrb_table.c 2017-03-16 11:21:52 +0900 (06663fb) +++ lib/mrb/mrb_table.c 2017-03-16 11:22:06 +0900 (aede797) @@ -375,6 +375,27 @@ mrb_grn_table_delete(mrb_state *mrb, mrb_value self) return mrb_nil_value(); } +static mrb_value +mrb_grn_table_apply_expression(mrb_state *mrb, mrb_value self) +{ + grn_ctx *ctx = (grn_ctx *)mrb->ud; + mrb_value mrb_output_column; + mrb_value mrb_expression; + grn_obj *table; + grn_obj *output_column = NULL; + grn_obj *expression = NULL; + + mrb_get_args(mrb, "oo", &mrb_output_column, &mrb_expression); + + table = DATA_PTR(self); + output_column = GRN_MRB_DATA_PTR(mrb_output_column); + expression = GRN_MRB_DATA_PTR(mrb_expression); + grn_table_apply_expr(ctx, table, output_column, expression); + grn_mrb_ctx_check(mrb); + + return mrb_nil_value(); +} + void grn_mrb_table_init(grn_ctx *ctx) { @@ -418,5 +439,7 @@ grn_mrb_table_init(grn_ctx *ctx) mrb_define_method(mrb, klass, "delete", mrb_grn_table_delete, MRB_ARGS_REQ(1)); + mrb_define_method(mrb, klass, "apply_expression", + mrb_grn_table_apply_expression, MRB_ARGS_REQ(2)); } #endif -------------- next part -------------- HTML����������������������������...Download