[Groonga-commit] groonga/groonga at 258c907 [master] mrb: add Groonga::Accessor#find_index

Back to archive index

Kouhei Sutou null+****@clear*****
Tue May 27 23:57:43 JST 2014


Kouhei Sutou	2014-05-27 23:57:43 +0900 (Tue, 27 May 2014)

  New Revision: 258c9079908cff730eb55db713a815536a329251
  https://github.com/groonga/groonga/commit/258c9079908cff730eb55db713a815536a329251

  Message:
    mrb: add Groonga::Accessor#find_index

  Modified files:
    lib/mrb/mrb_accessor.c

  Modified: lib/mrb/mrb_accessor.c (+28 -0)
===================================================================
--- lib/mrb/mrb_accessor.c    2014-05-27 23:57:25 +0900 (1ff09e8)
+++ lib/mrb/mrb_accessor.c    2014-05-27 23:57:43 +0900 (3e15d27)
@@ -26,6 +26,7 @@
 
 #include "../db.h"
 #include "mrb_accessor.h"
+#include "mrb_index_info.h"
 
 static struct mrb_data_type mrb_grn_accessor_type = {
   "Groonga::Accessor",
@@ -67,6 +68,31 @@ mrb_grn_accessor_next(mrb_state *mrb, mrb_value self)
   return mrb_cptr_value(mrb, accessor->next);
 }
 
+static mrb_value
+mrb_grn_accessor_find_index(mrb_state *mrb, mrb_value self)
+{
+  grn_ctx *ctx = (grn_ctx *)mrb->ud;
+  grn_accessor *accessor;
+  mrb_value mrb_operator;
+  grn_obj *index;
+  int n_indexes;
+  int section_id;
+
+  mrb_get_args(mrb, "o", &mrb_operator);
+  accessor = DATA_PTR(self);
+  n_indexes = grn_column_index(ctx,
+                               (grn_obj *)accessor,
+                               mrb_fixnum(mrb_operator),
+                               &index,
+                               1,
+                               &section_id);
+  if (n_indexes == 0) {
+    return mrb_nil_value();
+  } else {
+    return mrb_grn_index_info_new(mrb, index, section_id);
+  }
+}
+
 void
 grn_mrb_accessor_init(grn_ctx *ctx)
 {
@@ -81,5 +107,7 @@ grn_mrb_accessor_init(grn_ctx *ctx)
                     mrb_grn_accessor_initialize, MRB_ARGS_REQ(1));
   mrb_define_method(mrb, klass, "next",
                     mrb_grn_accessor_next, MRB_ARGS_NONE());
+  mrb_define_method(mrb, klass, "find_index",
+                    mrb_grn_accessor_find_index, MRB_ARGS_REQ(1));
 }
 #endif
-------------- next part --------------
HTML����������������������������...
Download 



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