/*
* call-seq:
* mod.class_variables => array
*
* Returns an array of the names of class variables in <i>mod</i> and
* the ancestors of <i>mod</i>.
*
* class One
* @@var1 = 1
* end
* class Two < One
* @@var2 = 2
* end
* One.class_variables #=> ["@@var1"]
* Two.class_variables #=> ["@@var2", "@@var1"]
*/
VALUE
rb_mod_class_variables(obj)
VALUE obj;
{
VALUE ary = rb_ary_new();
for (;;) {
if (RCLASS(obj)->iv_tbl) {
st_foreach_safe(RCLASS(obj)->iv_tbl, cv_i, ary);
}
obj = RCLASS(obj)->super;
if (!obj) break;
}
return ary;
}