[Groonga-commit] groonga/groonga at 4a17a93 [master] mrb: put grn_inspect() result into #inspect result

Back to archive index

Kouhei Sutou null+****@clear*****
Wed Feb 18 18:42:09 JST 2015


Kouhei Sutou	2015-02-18 18:42:09 +0900 (Wed, 18 Feb 2015)

  New Revision: 4a17a9323c394a7b2c26ff5b41721631719a781b
  https://github.com/groonga/groonga/commit/4a17a9323c394a7b2c26ff5b41721631719a781b

  Message:
    mrb: put grn_inspect() result into #inspect result

  Modified files:
    lib/mrb/mrb_object.c

  Modified: lib/mrb/mrb_object.c (+32 -0)
===================================================================
--- lib/mrb/mrb_object.c    2015-02-18 18:20:29 +0900 (60398b9)
+++ lib/mrb/mrb_object.c    2015-02-18 18:42:09 +0900 (59f715c)
@@ -30,6 +30,35 @@
 #include "mrb_converter.h"
 
 static mrb_value
+object_inspect(mrb_state *mrb, mrb_value self)
+{
+  grn_ctx *ctx = (grn_ctx *)mrb->ud;
+  grn_obj *object;
+  mrb_value inspected;
+
+  object = DATA_PTR(self);
+  inspected = mrb_str_buf_new(mrb, 48);
+
+  mrb_str_cat_lit(mrb, inspected, "#<");
+  mrb_str_cat_cstr(mrb, inspected, mrb_obj_classname(mrb, self));
+  mrb_str_cat_lit(mrb, inspected, ":");
+  mrb_str_concat(mrb, inspected, mrb_ptr_to_str(mrb, mrb_cptr(self)));
+  if (object) {
+    grn_obj buffer;
+    GRN_TEXT_INIT(&buffer, 0);
+    grn_inspect(ctx, &buffer, object);
+    mrb_str_cat_lit(mrb, inspected, " ");
+    mrb_str_cat(mrb, inspected, GRN_TEXT_VALUE(&buffer), GRN_TEXT_LEN(&buffer));
+    GRN_OBJ_FIN(ctx, &buffer);
+  } else {
+    mrb_str_cat_lit(mrb, inspected, " (closed)");
+  }
+  mrb_str_cat_lit(mrb, inspected, ">");
+
+  return inspected;
+}
+
+static mrb_value
 object_get_id(mrb_state *mrb, mrb_value self)
 {
   grn_ctx *ctx = (grn_ctx *)mrb->ud;
@@ -173,6 +202,9 @@ grn_mrb_object_init(grn_ctx *ctx)
   MRB_SET_INSTANCE_TT(klass, MRB_TT_DATA);
   data->object_class = klass;
 
+  mrb_define_method(mrb, klass, "inspect",
+                    object_inspect, MRB_ARGS_NONE());
+
   mrb_define_method(mrb, klass, "id", object_get_id, MRB_ARGS_NONE());
   mrb_define_method(mrb, klass, "name", object_get_name, MRB_ARGS_NONE());
   mrb_define_method(mrb, klass, "find_index",
-------------- next part --------------
HTML����������������������������...
Download 



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