[Groonga-commit] groonga/groonga at 29c2e2a [master] mrb: define Accessor#name

Back to archive index

Kouhei Sutou null+****@clear*****
Wed Jul 15 18:28:33 JST 2015


Kouhei Sutou	2015-07-15 18:28:33 +0900 (Wed, 15 Jul 2015)

  New Revision: 29c2e2a66a1d2b57e61b34a31d6fa53dad1789d3
  https://github.com/groonga/groonga/commit/29c2e2a66a1d2b57e61b34a31d6fa53dad1789d3

  Message:
    mrb: define Accessor#name

  Modified files:
    lib/mrb/mrb_accessor.c

  Modified: lib/mrb/mrb_accessor.c (+28 -0)
===================================================================
--- lib/mrb/mrb_accessor.c    2015-07-15 17:41:11 +0900 (daa0caa)
+++ lib/mrb/mrb_accessor.c    2015-07-15 18:28:33 +0900 (0ef7905)
@@ -25,6 +25,7 @@
 #include <mruby/data.h>
 
 #include "../grn_db.h"
+#include "mrb_ctx.h"
 #include "mrb_accessor.h"
 #include "mrb_converter.h"
 
@@ -71,6 +72,30 @@ mrb_grn_accessor_object(mrb_state *mrb, mrb_value self)
   return grn_mrb_value_from_grn_obj(mrb, accessor->obj);
 }
 
+static mrb_value
+mrb_grn_accessor_name(mrb_state *mrb, mrb_value self)
+{
+  grn_ctx *ctx = (grn_ctx *)mrb->ud;
+  grn_rc rc;
+  grn_obj *accessor;
+  grn_obj name;
+  mrb_value mrb_name;
+
+  accessor = DATA_PTR(self);
+  GRN_TEXT_INIT(&name, 0);
+  rc = grn_column_name_(ctx, accessor, &name);
+  if (rc == GRN_SUCCESS) {
+    mrb_name = mrb_str_new(mrb, GRN_TEXT_VALUE(&name), GRN_TEXT_LEN(&name));
+    GRN_OBJ_FIN(ctx, &name);
+  } else {
+    mrb_name = mrb_nil_value();
+    GRN_OBJ_FIN(ctx, &name);
+    grn_mrb_ctx_check(mrb);
+  }
+
+  return mrb_name;
+}
+
 void
 grn_mrb_accessor_init(grn_ctx *ctx)
 {
@@ -89,5 +114,8 @@ grn_mrb_accessor_init(grn_ctx *ctx)
                     mrb_grn_accessor_have_next_p, MRB_ARGS_NONE());
   mrb_define_method(mrb, klass, "object",
                     mrb_grn_accessor_object, MRB_ARGS_NONE());
+
+  mrb_define_method(mrb, klass, "name",
+                    mrb_grn_accessor_name, MRB_ARGS_NONE());
 }
 #endif
-------------- next part --------------
HTML����������������������������...
Download 



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