From 6cbd18d7ef28ab2eebc07dfb1badc9c02fba8a15 Mon Sep 17 00:00:00 2001 From: ko1 Date: Wed, 24 Oct 2012 01:21:13 +0000 Subject: * ext/objspace/objspace.c (Init_objspace): add a new method `ObjectSpace::InternalObjectWrapper#internal_object_id' which returns an object id of a wrapped internal object. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37308 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/objspace/objspace.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'ext') diff --git a/ext/objspace/objspace.c b/ext/objspace/objspace.c index 6e2da9aef1..1fbf148ef8 100644 --- a/ext/objspace/objspace.c +++ b/ext/objspace/objspace.c @@ -668,6 +668,13 @@ iow_inspect(VALUE self) return rb_sprintf("#", (void *)obj, rb_id2name(SYM2ID(type))); } +static VALUE +iow_internal_object_id(VALUE self) +{ + VALUE obj = (VALUE)DATA_PTR(self); + return rb_obj_id(obj); +} + struct rof_data { st_table *refs; VALUE internals; @@ -787,4 +794,5 @@ Init_objspace(void) rb_mInternalObjectWrapper = rb_define_class_under(rb_mObjSpace, "InternalObjectWrapper", rb_cObject); rb_define_method(rb_mInternalObjectWrapper, "type", iow_type, 0); rb_define_method(rb_mInternalObjectWrapper, "inspect", iow_inspect, 0); + rb_define_method(rb_mInternalObjectWrapper, "internal_object_id", iow_internal_object_id, 0); } -- cgit v1.2.3