void Module::set_name(STATE, Symbol* name, Module* under) { if(!module_name()->nil_p()) return; if(under == G(object)) { module_name(state, name); } else { Symbol* under_name = under->module_name(); if(!under_name->nil_p()) { std::ostringstream path_name; path_name << under_name->cpp_str(state) << "::" << name->cpp_str(state); module_name(state, state->symbol(path_name.str())); ConstantTable::iterator i(constant_table()); while(i.advance()) { if(Module* m = try_as<Module>(i.constant())) { if(m->module_name()->nil_p()) { m->set_name(state, i.name(), this); } } } } } }
void Module::setup(STATE) { constant_table(state, ConstantTable::create(state)); method_table(state, MethodTable::create(state)); if(!superclass()->nil_p()) { superclass()->track_subclass(state, this); } }
void Module::setup(STATE, Symbol* name, Module* under) { if(!under) under = G(object); constant_table(state, LookupTable::create(state)); this->method_table(state, MethodTable::create(state)); this->name(state, name); under->set_const(state, name, this); }
void Module::setup(STATE) { constant_table(state, LookupTable::create(state)); method_table(state, MethodTable::create(state)); }
void Module::del_const(STATE, Symbol* sym) { constant_table()->remove(state, sym); state->shared().inc_global_serial(state); }
void Module::set_const(STATE, Symbol* sym, Object* val) { constant_table()->store(state, sym, val, G(sym_public)); state->shared().inc_global_serial(state); }