[Groonga-commit] groonga/groonga at 70f8afd [master] mrb: support Groonga::Object as Hash key

Back to archive index

Kouhei Sutou null+****@clear*****
Thu Apr 7 12:44:27 JST 2016


Kouhei Sutou	2016-04-07 12:44:27 +0900 (Thu, 07 Apr 2016)

  New Revision: 70f8afd6904aeab576ca8a77099ec769ecac9fdd
  https://github.com/groonga/groonga/commit/70f8afd6904aeab576ca8a77099ec769ecac9fdd

  Message:
    mrb: support Groonga::Object as Hash key

  Modified files:
    lib/mrb/mrb_object.c

  Modified: lib/mrb/mrb_object.c (+11 -0)
===================================================================
--- lib/mrb/mrb_object.c    2016-04-07 10:30:58 +0900 (c1af52f)
+++ lib/mrb/mrb_object.c    2016-04-07 12:44:27 +0900 (d8b74d6)
@@ -122,6 +122,15 @@ object_equal(mrb_state *mrb, mrb_value self)
 }
 
 static mrb_value
+object_hash(mrb_state *mrb, mrb_value self)
+{
+  grn_obj *object;
+
+  object = DATA_PTR(self);
+  return mrb_fixnum_value((mrb_int)((uint64_t)object));
+}
+
+static mrb_value
 object_close(mrb_state *mrb, mrb_value self)
 {
   grn_ctx *ctx = (grn_ctx *)mrb->ud;
@@ -241,6 +250,8 @@ grn_mrb_object_init(grn_ctx *ctx)
   mrb_define_method(mrb, klass, "grn_inspect",
                     object_grn_inspect, MRB_ARGS_NONE());
   mrb_define_method(mrb, klass, "==", object_equal, MRB_ARGS_REQ(1));
+  mrb_define_method(mrb, klass, "eql?", object_equal, MRB_ARGS_REQ(1));
+  mrb_define_method(mrb, klass, "hash", object_hash, MRB_ARGS_NONE());
   mrb_define_method(mrb, klass, "close", object_close, MRB_ARGS_NONE());
   mrb_define_method(mrb, klass, "remove", object_remove, MRB_ARGS_OPT(1));
 
-------------- next part --------------
HTML����������������������������...
Télécharger 



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