[Groonga-commit] groonga/groonga at 50a73c1 [master] mrb: bind grn_expr

Back to archive index

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����������������������������...
다운로드 



More information about the Groonga-commit mailing list
Back to archive index