* eval_proc.c (method_receiver): add new method to get the bound
receiver of the method object. [ruby-talk:234949] * eval_proc.c (method_name): new method to get the name of a method. * eval_proc.c (method_owner): a new method to get the class or module that defines the method. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11551 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
3b5dbc4b06
commit
0fe77cd26b
11
ChangeLog
11
ChangeLog
@ -12,6 +12,17 @@ Sat Jan 20 11:18:49 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
|
|||||||
|
|
||||||
* test/win32ole/test_win32ole.rb: ditto.
|
* test/win32ole/test_win32ole.rb: ditto.
|
||||||
|
|
||||||
|
Sat Jan 20 06:45:21 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* eval_proc.c (method_receiver): add new method to get the bound
|
||||||
|
receiver of the method object. [ruby-talk:234949]
|
||||||
|
|
||||||
|
* eval_proc.c (method_name): new method to get the name of a
|
||||||
|
method.
|
||||||
|
|
||||||
|
* eval_proc.c (method_owner): a new method to get the class or
|
||||||
|
module that defines the method.
|
||||||
|
|
||||||
Fri Jan 19 17:12:23 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
|
Fri Jan 19 17:12:23 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
|
||||||
|
|
||||||
* ext/win32ole/win32ole.c (Init_win32ole): add WIN32OLE_VARIANT::Empty,
|
* ext/win32ole/win32ole.c (Init_win32ole): add WIN32OLE_VARIANT::Empty,
|
||||||
|
53
proc.c
53
proc.c
@ -790,6 +790,54 @@ method_unbind(obj)
|
|||||||
return method;
|
return method;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* call-seq:
|
||||||
|
* meth.receiver => object
|
||||||
|
*
|
||||||
|
* Returns the bound receiver of the method object.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
method_receiver(VALUE obj)
|
||||||
|
{
|
||||||
|
struct METHOD *data;
|
||||||
|
|
||||||
|
Data_Get_Struct(obj, struct METHOD, data);
|
||||||
|
return data->recv;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* call-seq:
|
||||||
|
* meth.name => string
|
||||||
|
*
|
||||||
|
* Returns the name of the method.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
method_name(VALUE obj)
|
||||||
|
{
|
||||||
|
struct METHOD *data;
|
||||||
|
|
||||||
|
Data_Get_Struct(obj, struct METHOD, data);
|
||||||
|
return rb_str_new2(rb_id2name(data->id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* call-seq:
|
||||||
|
* meth.owner => class_or_module
|
||||||
|
*
|
||||||
|
* Returns the class or module that defines the method.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
method_owner(VALUE obj)
|
||||||
|
{
|
||||||
|
struct METHOD *data;
|
||||||
|
|
||||||
|
Data_Get_Struct(obj, struct METHOD, data);
|
||||||
|
return data->klass;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* obj.method(sym) => method
|
* obj.method(sym) => method
|
||||||
@ -1492,6 +1540,9 @@ Init_Proc()
|
|||||||
rb_define_method(rb_cMethod, "inspect", method_inspect, 0);
|
rb_define_method(rb_cMethod, "inspect", method_inspect, 0);
|
||||||
rb_define_method(rb_cMethod, "to_s", method_inspect, 0);
|
rb_define_method(rb_cMethod, "to_s", method_inspect, 0);
|
||||||
rb_define_method(rb_cMethod, "to_proc", method_proc, 0);
|
rb_define_method(rb_cMethod, "to_proc", method_proc, 0);
|
||||||
|
rb_define_method(rb_cMethod, "receiver", method_receiver, 0);
|
||||||
|
rb_define_method(rb_cMethod, "name", method_name, 0);
|
||||||
|
rb_define_method(rb_cMethod, "owner", method_owner, 0);
|
||||||
rb_define_method(rb_cMethod, "unbind", method_unbind, 0);
|
rb_define_method(rb_cMethod, "unbind", method_unbind, 0);
|
||||||
rb_define_method(rb_mKernel, "method", rb_obj_method, 1);
|
rb_define_method(rb_mKernel, "method", rb_obj_method, 1);
|
||||||
|
|
||||||
@ -1506,6 +1557,8 @@ Init_Proc()
|
|||||||
rb_define_method(rb_cUnboundMethod, "arity", method_arity_m, 0);
|
rb_define_method(rb_cUnboundMethod, "arity", method_arity_m, 0);
|
||||||
rb_define_method(rb_cUnboundMethod, "inspect", method_inspect, 0);
|
rb_define_method(rb_cUnboundMethod, "inspect", method_inspect, 0);
|
||||||
rb_define_method(rb_cUnboundMethod, "to_s", method_inspect, 0);
|
rb_define_method(rb_cUnboundMethod, "to_s", method_inspect, 0);
|
||||||
|
rb_define_method(rb_cUnboundMethod, "name", method_name, 0);
|
||||||
|
rb_define_method(rb_cUnboundMethod, "owner", method_owner, 0);
|
||||||
rb_define_method(rb_cUnboundMethod, "bind", umethod_bind, 1);
|
rb_define_method(rb_cUnboundMethod, "bind", umethod_bind, 1);
|
||||||
|
|
||||||
/* Module#*_method */
|
/* Module#*_method */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user