[Groonga-commit] groonga/groonga at 6f72c6a [master] mrb: add Table#apply_expression

Back to archive index

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 



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