[Groonga-commit] groonga/groonga at ab7f259 [master] mrb: add Expression#condition=

Back to archive index

Kouhei Sutou null+****@clear*****
Thu Mar 16 14:46:16 JST 2017


Kouhei Sutou	2017-03-16 14:46:16 +0900 (Thu, 16 Mar 2017)

  New Revision: ab7f2597ac46878ab43827ab427f72e253626009
  https://github.com/groonga/groonga/commit/ab7f2597ac46878ab43827ab427f72e253626009

  Message:
    mrb: add Expression#condition=

  Modified files:
    lib/mrb/mrb_expr.c

  Modified: lib/mrb/mrb_expr.c (+25 -0)
===================================================================
--- lib/mrb/mrb_expr.c    2017-03-16 14:45:40 +0900 (b56fe61)
+++ lib/mrb/mrb_expr.c    2017-03-16 14:46:16 +0900 (0478907)
@@ -28,6 +28,7 @@
 #include <mruby/hash.h>
 
 #include "../grn_expr.h"
+#include "../grn_proc.h"
 #include "../grn_util.h"
 #include "../grn_mrb.h"
 #include "mrb_accessor.h"
@@ -590,6 +591,28 @@ mrb_grn_expression_array_reference(mrb_state *mrb, mrb_value self)
 }
 
 static mrb_value
+mrb_grn_expression_set_condition(mrb_state *mrb, mrb_value self)
+{
+  grn_ctx *ctx = (grn_ctx *)mrb->ud;
+  grn_obj *expr;
+  mrb_value mrb_condition;
+  grn_obj *condition_ptr;
+
+  mrb_get_args(mrb, "o", &mrb_condition);
+
+  expr = DATA_PTR(self);
+  condition_ptr = grn_expr_get_or_add_var(ctx,
+                                          expr,
+                                          GRN_SELECT_INTERNAL_VAR_CONDITION,
+                                          GRN_SELECT_INTERNAL_VAR_CONDITION_LEN);
+  GRN_OBJ_FIN(ctx, condition_ptr);
+  GRN_PTR_INIT(condition_ptr, 0, GRN_DB_OBJECT);
+  GRN_PTR_SET(ctx, condition_ptr, GRN_MRB_DATA_PTR(mrb_condition));
+
+  return mrb_nil_value();
+}
+
+static mrb_value
 mrb_grn_expression_take_object(mrb_state *mrb, mrb_value self)
 {
   grn_ctx *ctx = (grn_ctx *)mrb->ud;
@@ -918,6 +941,8 @@ grn_mrb_expr_init(grn_ctx *ctx)
                     mrb_grn_expression_codes, MRB_ARGS_NONE());
   mrb_define_method(mrb, klass, "[]",
                     mrb_grn_expression_array_reference, MRB_ARGS_REQ(1));
+  mrb_define_method(mrb, klass, "condition=",
+                    mrb_grn_expression_set_condition, MRB_ARGS_REQ(1));
   mrb_define_method(mrb, klass, "take_object",
                     mrb_grn_expression_take_object, MRB_ARGS_REQ(1));
   mrb_define_method(mrb, klass, "allocate_constant",
-------------- next part --------------
HTML����������������������������...
Download 



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