static VALUE rb_mod_method_defined(VALUE mod, VALUE mid) { if (!rb_method_boundp(mod, rb_to_id(mid), 1)) { return Qfalse; } return Qtrue; }
static VALUE rb_mod_method_defined(VALUE mod, VALUE mid) { ID id = rb_check_id(&mid); if (!id || !rb_method_boundp(mod, id, 1)) { return Qfalse; } return Qtrue; }
static VALUE obj_respond_to(int argc, VALUE *argv, VALUE obj) { VALUE mid, priv; ID id; rb_scan_args(argc, argv, "11", &mid, &priv); id = rb_to_id(mid); if (rb_method_boundp(CLASS_OF(obj), id, !RTEST(priv))) { return Qtrue; } return Qfalse; }
static inline int basic_obj_respond_to(VALUE obj, ID id, int pub) { VALUE klass = CLASS_OF(obj); switch (rb_method_boundp(klass, id, pub|NOEX_RESPONDS)) { case 2: return FALSE; case 0: return RTEST(rb_funcall(obj, respond_to_missing, 2, ID2SYM(id), pub ? Qfalse : Qtrue)); default: return TRUE; } }
int rb_obj_respond_to(VALUE obj, ID id, int priv) { VALUE klass = CLASS_OF(obj); if (rb_method_node(klass, idRespond_to) == basic_respond_to) { return rb_method_boundp(klass, id, !priv); } else { VALUE args[2]; int n = 0; args[n++] = ID2SYM(id); if (priv) args[n++] = Qtrue; return RTEST(rb_funcall2(obj, idRespond_to, n, args)); } }
static VALUE rb_mod_method_defined(VALUE mod, VALUE mid) { return rb_method_boundp(mod, rb_to_id(mid), 1); }