Kouhei Sutou
null+****@clear*****
Mon Jun 9 23:30:04 JST 2014
Kouhei Sutou 2014-06-09 23:30:04 +0900 (Mon, 09 Jun 2014) New Revision: 50a73c1f16956831d4a82a9f1913983ad308d938 https://github.com/groonga/groonga/commit/50a73c1f16956831d4a82a9f1913983ad308d938 Message: mrb: bind grn_expr Modified files: lib/mrb/mrb_converter.c lib/mrb/mrb_expr.c lib/mrb/scripts/expression.rb Modified: lib/mrb/mrb_converter.c (+3 -0) =================================================================== --- lib/mrb/mrb_converter.c 2014-06-09 23:22:51 +0900 (65035f0) +++ lib/mrb/mrb_converter.c 2014-06-09 23:30:04 +0900 (74ef788) @@ -49,6 +49,9 @@ grn_mrb_class_from_grn_obj(mrb_state *mrb, grn_obj *object) case GRN_COLUMN_INDEX : klass = mrb_class_get_under(mrb, data->module, "IndexColumn"); break; + case GRN_EXPR : + klass = mrb_class_get_under(mrb, data->module, "Expression"); + break; case GRN_PROC : klass = mrb_class_get_under(mrb, data->module, "Procedure"); break; Modified: lib/mrb/mrb_expr.c (+22 -0) =================================================================== --- lib/mrb/mrb_expr.c 2014-06-09 23:22:51 +0900 (f75fcff) +++ lib/mrb/mrb_expr.c 2014-06-09 23:30:04 +0900 (c10edbc) @@ -39,6 +39,10 @@ static struct mrb_data_type mrb_grn_expr_code_type = { "Groonga::ExpressionCode", NULL }; +static struct mrb_data_type mrb_grn_expression_type = { + "Groonga::Expression", + NULL +}; static mrb_value mrb_grn_scan_info_new(mrb_state *mrb, scan_info *scan_info) @@ -508,11 +512,23 @@ mrb_grn_expr_code_get_weight(mrb_state *mrb, mrb_value self) return mrb_fixnum_value(grn_expr_code_get_weight(ctx, DATA_PTR(self))); } +static mrb_value +mrb_grn_expression_initialize(mrb_state *mrb, mrb_value self) +{ + mrb_value mrb_expression_ptr; + + mrb_get_args(mrb, "o", &mrb_expression_ptr); + DATA_TYPE(self) = &mrb_grn_expression_type; + DATA_PTR(self) = mrb_cptr(mrb_expression_ptr); + return self; +} + void grn_mrb_expr_init(grn_ctx *ctx) { mrb_state *mrb = ctx->impl->mrb.state; struct RClass *module = ctx->impl->mrb.module; + struct RClass *object_class = ctx->impl->mrb.object_class; struct RClass *klass; mrb_define_class_method(mrb, module, @@ -546,6 +562,12 @@ grn_mrb_expr_init(grn_ctx *ctx) mrb_grn_expr_code_initialize, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "weight", mrb_grn_expr_code_get_weight, MRB_ARGS_NONE()); + + klass = mrb_define_class_under(mrb, module, "Expression", object_class); + MRB_SET_INSTANCE_TT(klass, MRB_TT_DATA); + mrb_define_method(mrb, klass, "initialize", + mrb_grn_expression_initialize, MRB_ARGS_REQ(1)); + grn_mrb_load(ctx, "expression.rb"); grn_mrb_load(ctx, "scan_info.rb"); } Modified: lib/mrb/scripts/expression.rb (+1 -1) =================================================================== --- lib/mrb/scripts/expression.rb 2014-06-09 23:22:51 +0900 (df9cffb) +++ lib/mrb/scripts/expression.rb 2014-06-09 23:30:04 +0900 (1d5d57e) @@ -1,4 +1,4 @@ module Groonga - class Expression < Object + class Expression end end -------------- next part -------------- HTML����������������������������...다운로드