[Groonga-commit] groonga/groonga at 250d577 [master] mrb: add Bulk.true?

Back to archive index

Kouhei Sutou null+****@clear*****
Thu Apr 7 16:09:35 JST 2016


Kouhei Sutou	2016-04-07 16:09:35 +0900 (Thu, 07 Apr 2016)

  New Revision: 250d577d8125a4a35fc3924270f26a5ac8825e1f
  https://github.com/groonga/groonga/commit/250d577d8125a4a35fc3924270f26a5ac8825e1f

  Message:
    mrb: add Bulk.true?

  Modified files:
    lib/mrb/mrb_bulk.c

  Modified: lib/mrb/mrb_bulk.c (+24 -1)
===================================================================
--- lib/mrb/mrb_bulk.c    2016-04-07 16:08:52 +0900 (c6b672b)
+++ lib/mrb/mrb_bulk.c    2016-04-07 16:09:35 +0900 (b3f9849)
@@ -73,7 +73,8 @@ grn_mrb_value_to_bulk(mrb_state *mrb, mrb_value mrb_value_, grn_obj *bulk)
     GRN_FLOAT_SET(ctx, bulk, mrb_float(mrb_value_));
     break;
   case MRB_TT_STRING :
-    grn_obj_reinit(ctx, bulk, GRN_DB_TEXT, 0);
+    grn_obj_reinit(ctx, bulk, GRN_DB_TEXT,
+                   bulk->header.impl_flags & GRN_OBJ_DO_SHALLOW_COPY);
     GRN_TEXT_SET(ctx, bulk, RSTRING_PTR(mrb_value_), RSTRING_LEN(mrb_value_));
     break;
   default :
@@ -216,6 +217,24 @@ grn_mrb_bulk_cast(mrb_state *mrb, grn_obj *from, grn_obj *to, grn_id domain_id)
 }
 
 static mrb_value
+mrb_grn_bulk_s_is_true(mrb_state *mrb, mrb_value klass)
+{
+  grn_ctx *ctx = (grn_ctx *)mrb->ud;
+  mrb_value mrb_value_;
+  grn_obj bulk;
+  grn_bool is_true;
+
+  mrb_get_args(mrb, "o", &mrb_value_);
+
+  GRN_TEXT_INIT(&bulk, GRN_OBJ_DO_SHALLOW_COPY);
+  grn_mrb_value_to_bulk(mrb, mrb_value_, &bulk);
+  is_true = grn_obj_is_true(ctx, &bulk);
+  GRN_OBJ_FIN(ctx, &bulk);
+
+  return mrb_bool_value(is_true);
+}
+
+static mrb_value
 mrb_grn_bulk_initialize(mrb_state *mrb, mrb_value self)
 {
   mrb_value mrb_bulk_ptr;
@@ -265,6 +284,10 @@ grn_mrb_bulk_init(grn_ctx *ctx)
 
   klass = mrb_define_class_under(mrb, module, "Bulk", mrb->object_class);
   MRB_SET_INSTANCE_TT(klass, MRB_TT_DATA);
+
+  mrb_define_singleton_method(mrb, (struct RObject *)klass, "true?",
+                              mrb_grn_bulk_s_is_true, MRB_ARGS_REQ(1));
+
   mrb_define_method(mrb, klass, "initialize",
                     mrb_grn_bulk_initialize, MRB_ARGS_REQ(1));
   mrb_define_method(mrb, klass, "domain",
-------------- next part --------------
HTML����������������������������...
다운로드 



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