Feature #2170 ยป 0001--proc.c-Add-Method-UnboundMethod-visibility-predic.patch
proc.c | ||
---|---|---|
/*
|
||
* call-seq:
|
||
* meth.private? => true or false
|
||
*
|
||
* Returns true if meth is a private method.
|
||
*/
|
||
static VALUE
|
||
method_private_p(VALUE obj)
|
||
{
|
||
struct METHOD *data;
|
||
TypedData_Get_Struct(obj, struct METHOD, &method_data_type, data);
|
||
if ((data->me.flag & NOEX_MASK) == NOEX_PRIVATE) return Qtrue;
|
||
return Qfalse;
|
||
}
|
||
/*
|
||
* call-seq:
|
||
* meth.public? => true or false
|
||
*
|
||
* Returns true if meth is a public method.
|
||
*/
|
||
static VALUE
|
||
method_public_p(VALUE obj)
|
||
{
|
||
struct METHOD *data;
|
||
TypedData_Get_Struct(obj, struct METHOD, &method_data_type, data);
|
||
if ((data->me.flag & NOEX_MASK) == NOEX_PUBLIC) return Qtrue;
|
||
return Qfalse;
|
||
}
|
||
/*
|
||
* call-seq:
|
||
* meth.protected? => true or false
|
||
*
|
||
* Returns true if meth is a protected method.
|
||
*/
|
||
static VALUE
|
||
method_protected_p(VALUE obj)
|
||
{
|
||
struct METHOD *data;
|
||
TypedData_Get_Struct(obj, struct METHOD, &method_data_type, data);
|
||
if ((data->me.flag & NOEX_MASK) == NOEX_PROTECTED) return Qtrue;
|
||
return Qfalse;
|
||
}
|
||
/*
|
||
* call-seq:
|
||
* obj.method(sym) => method
|
||
*
|
||
* Looks up the named method as a receiver in <i>obj</i>, returning a
|
||
... | ... | |
rb_define_method(rb_cMethod, "unbind", method_unbind, 0);
|
||
rb_define_method(rb_cMethod, "source_location", rb_method_location, 0);
|
||
rb_define_method(rb_cMethod, "parameters", rb_method_parameters, 0);
|
||
rb_define_method(rb_cMethod, "public?", method_public_p, 0);
|
||
rb_define_method(rb_cMethod, "private?", method_private_p, 0);
|
||
rb_define_method(rb_cMethod, "protected?", method_protected_p, 0);
|
||
rb_define_method(rb_mKernel, "method", rb_obj_method, 1);
|
||
rb_define_method(rb_mKernel, "public_method", rb_obj_public_method, 1);
|
||
... | ... | |
rb_define_method(rb_cUnboundMethod, "bind", umethod_bind, 1);
|
||
rb_define_method(rb_cUnboundMethod, "source_location", rb_method_location, 0);
|
||
rb_define_method(rb_cUnboundMethod, "parameters", rb_method_parameters, 0);
|
||
rb_define_method(rb_cUnboundMethod, "public?", method_public_p, 0);
|
||
rb_define_method(rb_cUnboundMethod, "private?", method_private_p, 0);
|
||
rb_define_method(rb_cUnboundMethod, "protected?", method_protected_p, 0);
|
||
/* Module#*_method */
|
||
rb_define_method(rb_cModule, "instance_method", rb_mod_instance_method, 1);
|