Example #1
0
VALUE
rb_mod_ancestors_nocopy(VALUE mod)
{
    VALUE ary = rb_attr_get(mod, idAncestors);
    if (NIL_P(ary)) {
	ary = rb_ary_new();
	for (VALUE p = mod; p != 0; p = RCLASS_SUPER(p)) {
	    rb_ary_push(ary, p);
	    rb_mod_included_modules_nosuper(p, ary);
	}
	rb_ivar_set(mod, idAncestors, ary);	
    }
    return ary;
}
Example #2
0
File: class.c Project: MSch/MacRuby
VALUE
rb_mod_included_modules(VALUE mod)
{
    VALUE ary = rb_ary_new();
    bool mod_detected = false;

    for (VALUE p = mod; p != 0; p = RCLASS_SUPER(p)) {
	if (!mod_detected) {
	    if (RCLASS_MODULE(p)) {
		mod_detected = true;
	    }
	}
	else {
	    if (!RCLASS_SINGLETON(p)) {
		break;
	    }
	}
	rb_mod_included_modules_nosuper(p, ary);
    }
    return ary;
}