Project

General

Profile

Feature #2170 ยป 0001--proc.c-Add-Method-UnboundMethod-visibility-predic.patch

runpaint (Run Paint Run Run), 10/03/2009 04:50 AM

View differences:

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);
    (1-1/1)