org.jruby.RubyModule.getAlreadyRefinementWrapper()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(2.1k)|赞(0)|评价(0)|浏览(64)

本文整理了Java中org.jruby.RubyModule.getAlreadyRefinementWrapper方法的一些代码示例,展示了RubyModule.getAlreadyRefinementWrapper的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RubyModule.getAlreadyRefinementWrapper方法的具体详情如下:
包路径:org.jruby.RubyModule
类名称:RubyModule
方法名:getAlreadyRefinementWrapper

RubyModule.getAlreadyRefinementWrapper介绍

暂无

代码示例

代码示例来源:origin: org.jruby/jruby-complete

private static void usingRefinement(Ruby runtime, RubyModule cref, RubyModule klass, RubyModule module) {
    RubyModule superclass = getAlreadyRefinementWrapper(cref, klass, module);
    if (superclass == null) return; // already been refined and added to refinementwrapper

    module.setFlag(IS_OVERLAID_F, true);
    superclass = refinementSuperclass(runtime, klass, module);
    RubyModule c, iclass = new IncludedModuleWrapper(runtime, (RubyClass) superclass, module);
    c = iclass;
    c.refinedClass = klass;

//        RCLASS_M_TBL(OBJ_WB_UNPROTECT(c)) =
//                RCLASS_M_TBL(OBJ_WB_UNPROTECT(module)); /* TODO: check unprotecting */

    for (module = module.getSuperClass(); module != null && module != klass; module = module.getSuperClass()) {
      module.setFlag(IS_OVERLAID_F, true);
      c.setSuperClass(new IncludedModuleWrapper(cref.getRuntime(), c.getSuperClass(), module));
      c = c.getSuperClass();
      c.refinedClass = klass;
    }

    cref.refinements.put(klass, iclass);
  }

代码示例来源:origin: org.jruby/jruby-core

private static void usingRefinement(Ruby runtime, RubyModule cref, RubyModule klass, RubyModule module) {
    RubyModule superclass = getAlreadyRefinementWrapper(cref, klass, module);
    if (superclass == null) return; // already been refined and added to refinementwrapper

    module.setFlag(IS_OVERLAID_F, true);
    superclass = refinementSuperclass(runtime, klass, module);
    RubyModule c, iclass = new IncludedModuleWrapper(runtime, (RubyClass) superclass, module);
    c = iclass;
    c.refinedClass = klass;

//        RCLASS_M_TBL(OBJ_WB_UNPROTECT(c)) =
//                RCLASS_M_TBL(OBJ_WB_UNPROTECT(module)); /* TODO: check unprotecting */

    for (module = module.getSuperClass(); module != null && module != klass; module = module.getSuperClass()) {
      module.setFlag(IS_OVERLAID_F, true);
      c.setSuperClass(new IncludedModuleWrapper(cref.getRuntime(), c.getSuperClass(), module));
      c = c.getSuperClass();
      c.refinedClass = klass;
    }

    cref.refinements.put(klass, iclass);
  }

相关文章

微信公众号

最新文章

更多

RubyModule类方法