Esempio n. 1
0
  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);
            }
          }
        }
      }
    }
  }
Esempio n. 2
0
 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);
   }
 }
Esempio n. 3
0
  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);
  }
Esempio n. 4
0
 void Module::setup(STATE) {
   constant_table(state, LookupTable::create(state));
   method_table(state, MethodTable::create(state));
 }
Esempio n. 5
0
 void Module::del_const(STATE, Symbol* sym) {
   constant_table()->remove(state, sym);
   state->shared().inc_global_serial(state);
 }
Esempio n. 6
0
 void Module::set_const(STATE, Symbol* sym, Object* val) {
   constant_table()->store(state, sym, val, G(sym_public));
   state->shared().inc_global_serial(state);
 }