类org.objectweb.asm.ModuleVisitor源码实例Demo

下面列出了怎么用org.objectweb.asm.ModuleVisitor的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Cafebabe   文件: ModuleNode.java
/**
 * Makes the given class visitor visit this module.
 *
 * @param classVisitor
 *          a class visitor.
 */
public void accept(final ClassVisitor classVisitor) {
	ModuleVisitor moduleVisitor = classVisitor.visitModule(name, access, version);
	if (moduleVisitor == null) {
		return;
	}
	if (mainClass != null) {
		moduleVisitor.visitMainClass(mainClass);
	}
	if (packages != null) {
		for (int i = 0, n = packages.size(); i < n; i++) {
			moduleVisitor.visitPackage(packages.get(i));
		}
	}
	if (requires != null) {
		for (int i = 0, n = requires.size(); i < n; i++) {
			requires.get(i).accept(moduleVisitor);
		}
	}
	if (exports != null) {
		for (int i = 0, n = exports.size(); i < n; i++) {
			exports.get(i).accept(moduleVisitor);
		}
	}
	if (opens != null) {
		for (int i = 0, n = opens.size(); i < n; i++) {
			opens.get(i).accept(moduleVisitor);
		}
	}
	if (uses != null) {
		for (int i = 0, n = uses.size(); i < n; i++) {
			moduleVisitor.visitUse(uses.get(i));
		}
	}
	if (provides != null) {
		for (int i = 0, n = provides.size(); i < n; i++) {
			provides.get(i).accept(moduleVisitor);
		}
	}
}
 
源代码2 项目: Concurnas   文件: ModuleNode.java
/**
 * Makes the given class visitor visit this module.
 *
 * @param classVisitor a class visitor.
 */
public void accept(final ClassVisitor classVisitor) {
  ModuleVisitor moduleVisitor = classVisitor.visitModule(name, access, version);
  if (moduleVisitor == null) {
    return;
  }
  if (mainClass != null) {
    moduleVisitor.visitMainClass(mainClass);
  }
  if (packages != null) {
    for (int i = 0, n = packages.size(); i < n; i++) {
      moduleVisitor.visitPackage(packages.get(i));
    }
  }
  if (requires != null) {
    for (int i = 0, n = requires.size(); i < n; i++) {
      requires.get(i).accept(moduleVisitor);
    }
  }
  if (exports != null) {
    for (int i = 0, n = exports.size(); i < n; i++) {
      exports.get(i).accept(moduleVisitor);
    }
  }
  if (opens != null) {
    for (int i = 0, n = opens.size(); i < n; i++) {
      opens.get(i).accept(moduleVisitor);
    }
  }
  if (uses != null) {
    for (int i = 0, n = uses.size(); i < n; i++) {
      moduleVisitor.visitUse(uses.get(i));
    }
  }
  if (provides != null) {
    for (int i = 0, n = provides.size(); i < n; i++) {
      provides.get(i).accept(moduleVisitor);
    }
  }
}
 
源代码3 项目: Concurnas   文件: CheckClassAdapter.java
@Override
public ModuleVisitor visitModule(final String name, final int access, final String version) {
  checkState();
  if (visitModuleCalled) {
    throw new IllegalStateException("visitModule can be called only once.");
  }
  visitModuleCalled = true;
  checkFullyQualifiedName(this.version, name, "module name");
  checkAccess(access, Opcodes.ACC_OPEN | Opcodes.ACC_SYNTHETIC | Opcodes.ACC_MANDATED);
  CheckModuleAdapter checkModuleAdapter =
      new CheckModuleAdapter(
          api, super.visitModule(name, access, version), (access & Opcodes.ACC_OPEN) != 0);
  checkModuleAdapter.classVersion = this.version;
  return checkModuleAdapter;
}
 
源代码4 项目: JByteMod-Beta   文件: ModuleNode.java
public void accept(final ClassVisitor cv) {
  ModuleVisitor mv = cv.visitModule(name, access, version);
  if (mv == null) {
    return;
  }
  if (mainClass != null) {
    mv.visitMainClass(mainClass);
  }
  if (packages != null) {
    for (int i = 0; i < packages.size(); i++) {
      mv.visitPackage(packages.get(i));
    }
  }

  if (requires != null) {
    for (int i = 0; i < requires.size(); i++) {
      requires.get(i).accept(mv);
    }
  }
  if (exports != null) {
    for (int i = 0; i < exports.size(); i++) {
      exports.get(i).accept(mv);
    }
  }
  if (opens != null) {
    for (int i = 0; i < opens.size(); i++) {
      opens.get(i).accept(mv);
    }
  }
  if (uses != null) {
    for (int i = 0; i < uses.size(); i++) {
      mv.visitUse(uses.get(i));
    }
  }
  if (provides != null) {
    for (int i = 0; i < provides.size(); i++) {
      provides.get(i).accept(mv);
    }
  }
}
 
源代码5 项目: JByteMod-Beta   文件: ASMContentHandler.java
@Override
public void end(final String element) {
  boolean exports = "exports".equals(element);
  boolean opens = "opens".equals(element);
  boolean provides = "provides".equals(element);
  if (exports | opens | provides) {
    @SuppressWarnings("unchecked")
    ArrayList<String> list = (ArrayList<String>) pop();
    int access = (Integer) pop();
    String name = (String) pop();
    String[] tos = null;
    if (!list.isEmpty()) {
      tos = list.toArray(new String[list.size()]);
    }
    ModuleVisitor mv = (ModuleVisitor) peek();
    if (exports) {
      mv.visitExport(name, access, tos);
    } else {
      if (opens) {
        mv.visitOpen(name, access, tos);
      } else {
        mv.visitProvide(name, tos);
      }
    }
  } else if ("module".equals(element)) {
    ((ModuleVisitor) pop()).visitEnd();
  }
}
 
源代码6 项目: JByteMod-Beta   文件: SAXClassAdapter.java
@Override
public ModuleVisitor visitModule(final String name, final int access, final String version) {
  AttributesImpl att = new AttributesImpl();
  att.addAttribute("", "name", "name", "", name);
  StringBuilder sb = new StringBuilder();
  appendAccess(access | ACCESS_MODULE, sb);
  att.addAttribute("", "access", "access", "", sb.toString());
  if (version != null) {
    att.addAttribute("", "version", "version", "", encode(version));
  }
  sa.addStart("module", att);
  return new SAXModuleAdapter(sa);
}
 
源代码7 项目: JByteMod-Beta   文件: CheckClassAdapter.java
@Override
public ModuleVisitor visitModule(String name, int access, String version) {
  checkState();
  if (module) {
    throw new IllegalStateException("visitModule can be called only once.");
  }
  module = true;
  if (name == null) {
    throw new IllegalArgumentException("Illegal module name (null)");
  }
  checkAccess(access, Opcodes.ACC_OPEN | Opcodes.ACC_SYNTHETIC);
  return new CheckModuleAdapter(super.visitModule(name, access, version), (access & Opcodes.ACC_OPEN) != 0);
}
 
源代码8 项目: turbine   文件: ClassWriterTest.java
@Test
public void module() throws Exception {

  org.objectweb.asm.ClassWriter cw = new org.objectweb.asm.ClassWriter(0);

  cw.visit(53, /* access= */ 53, "module-info", null, null, null);

  ModuleVisitor mv = cw.visitModule("mod", Opcodes.ACC_OPEN, "mod-ver");

  mv.visitRequire("r1", Opcodes.ACC_TRANSITIVE, "r1-ver");
  mv.visitRequire("r2", Opcodes.ACC_STATIC_PHASE, "r2-ver");
  mv.visitRequire("r3", Opcodes.ACC_STATIC_PHASE | Opcodes.ACC_TRANSITIVE, "r3-ver");

  mv.visitExport("e1", Opcodes.ACC_SYNTHETIC, "e1m1", "e1m2", "e1m3");
  mv.visitExport("e2", Opcodes.ACC_MANDATED, "e2m1", "e2m2");
  mv.visitExport("e3", /* access= */ 0, "e3m1");

  mv.visitOpen("o1", Opcodes.ACC_SYNTHETIC, "o1m1", "o1m2", "o1m3");
  mv.visitOpen("o2", Opcodes.ACC_MANDATED, "o2m1", "o2m2");
  mv.visitOpen("o3", /* access= */ 0, "o3m1");

  mv.visitUse("u1");
  mv.visitUse("u2");
  mv.visitUse("u3");
  mv.visitUse("u4");

  mv.visitProvide("p1", "p1i1", "p1i2");
  mv.visitProvide("p2", "p2i1", "p2i2", "p2i3");

  byte[] inputBytes = cw.toByteArray();
  byte[] outputBytes = ClassWriter.writeClass(ClassReader.read("module-info", inputBytes));

  assertThat(AsmUtils.textify(inputBytes, /* skipDebug= */ true))
      .isEqualTo(AsmUtils.textify(outputBytes, /* skipDebug= */ true));

  // test a round trip
  outputBytes = ClassWriter.writeClass(ClassReader.read("module-info", outputBytes));
  assertThat(AsmUtils.textify(inputBytes, /* skipDebug= */ true))
      .isEqualTo(AsmUtils.textify(outputBytes, /* skipDebug= */ true));
}
 
源代码9 项目: JOML   文件: ModuleInfoGenerator.java
public static void main(String[] args) throws Exception {
    File dest = new File(args[0]);
    ClassWriter cw = new ClassWriter(0);
    cw.visit(V9, Opcodes.ACC_MODULE, "module-info", null, null, null);
    ModuleVisitor mv = cw.visitModule("org.joml", 0, args[1]);
    mv.visitRequire("java.base", ACC_MANDATED, "9");
    mv.visitRequire("jdk.unsupported", ACC_STATIC_PHASE, null);
    mv.visitExport("org/joml", 0, (String[]) null);
    mv.visitExport("org/joml/sampling", 0, (String[]) null);
    mv.visitEnd();
    cw.visitEnd();
    FileOutputStream fos = new FileOutputStream(new File(dest, "module-info.class"));
    fos.write(cw.toByteArray());
    fos.close();
}
 
源代码10 项目: JReFrameworker   文件: ModuleNode.java
/**
 * Makes the given class visitor visit this module.
 *
 * @param classVisitor a class visitor.
 */
public void accept(final ClassVisitor classVisitor) {
  ModuleVisitor moduleVisitor = classVisitor.visitModule(name, access, version);
  if (moduleVisitor == null) {
    return;
  }
  if (mainClass != null) {
    moduleVisitor.visitMainClass(mainClass);
  }
  if (packages != null) {
    for (int i = 0, n = packages.size(); i < n; i++) {
      moduleVisitor.visitPackage(packages.get(i));
    }
  }
  if (requires != null) {
    for (int i = 0, n = requires.size(); i < n; i++) {
      requires.get(i).accept(moduleVisitor);
    }
  }
  if (exports != null) {
    for (int i = 0, n = exports.size(); i < n; i++) {
      exports.get(i).accept(moduleVisitor);
    }
  }
  if (opens != null) {
    for (int i = 0, n = opens.size(); i < n; i++) {
      opens.get(i).accept(moduleVisitor);
    }
  }
  if (uses != null) {
    for (int i = 0, n = uses.size(); i < n; i++) {
      moduleVisitor.visitUse(uses.get(i));
    }
  }
  if (provides != null) {
    for (int i = 0, n = provides.size(); i < n; i++) {
      provides.get(i).accept(moduleVisitor);
    }
  }
}
 
源代码11 项目: JReFrameworker   文件: CheckClassAdapter.java
@Override
public ModuleVisitor visitModule(final String name, final int access, final String version) {
  checkState();
  if (visitModuleCalled) {
    throw new IllegalStateException("visitModule can be called only once.");
  }
  visitModuleCalled = true;
  checkFullyQualifiedName(this.version, name, "module name");
  checkAccess(access, Opcodes.ACC_OPEN | Opcodes.ACC_SYNTHETIC | Opcodes.ACC_MANDATED);
  CheckModuleAdapter checkModuleAdapter =
      new CheckModuleAdapter(
          api, super.visitModule(name, access, version), (access & Opcodes.ACC_OPEN) != 0);
  checkModuleAdapter.classVersion = this.version;
  return checkModuleAdapter;
}
 
源代码12 项目: JReFrameworker   文件: ModuleNode.java
/**
 * Makes the given class visitor visit this module.
 *
 * @param classVisitor a class visitor.
 */
public void accept(final ClassVisitor classVisitor) {
  ModuleVisitor moduleVisitor = classVisitor.visitModule(name, access, version);
  if (moduleVisitor == null) {
    return;
  }
  if (mainClass != null) {
    moduleVisitor.visitMainClass(mainClass);
  }
  if (packages != null) {
    for (int i = 0, n = packages.size(); i < n; i++) {
      moduleVisitor.visitPackage(packages.get(i));
    }
  }
  if (requires != null) {
    for (int i = 0, n = requires.size(); i < n; i++) {
      requires.get(i).accept(moduleVisitor);
    }
  }
  if (exports != null) {
    for (int i = 0, n = exports.size(); i < n; i++) {
      exports.get(i).accept(moduleVisitor);
    }
  }
  if (opens != null) {
    for (int i = 0, n = opens.size(); i < n; i++) {
      opens.get(i).accept(moduleVisitor);
    }
  }
  if (uses != null) {
    for (int i = 0, n = uses.size(); i < n; i++) {
      moduleVisitor.visitUse(uses.get(i));
    }
  }
  if (provides != null) {
    for (int i = 0, n = provides.size(); i < n; i++) {
      provides.get(i).accept(moduleVisitor);
    }
  }
}
 
源代码13 项目: JReFrameworker   文件: CheckClassAdapter.java
@Override
public ModuleVisitor visitModule(final String name, final int access, final String version) {
  checkState();
  if (visitModuleCalled) {
    throw new IllegalStateException("visitModule can be called only once.");
  }
  visitModuleCalled = true;
  checkFullyQualifiedName(this.version, name, "module name");
  checkAccess(access, Opcodes.ACC_OPEN | Opcodes.ACC_SYNTHETIC | Opcodes.ACC_MANDATED);
  CheckModuleAdapter checkModuleAdapter =
      new CheckModuleAdapter(
          api, super.visitModule(name, access, version), (access & Opcodes.ACC_OPEN) != 0);
  checkModuleAdapter.classVersion = this.version;
  return checkModuleAdapter;
}
 
源代码14 项目: Cafebabe   文件: ClassNode.java
@Override
public ModuleVisitor visitModule(final String name, final int access, final String version) {
	module = new ModuleNode(name, access, version);
	return module;
}
 
源代码15 项目: Concurnas   文件: ClassRemapper.java
@Override
public ModuleVisitor visitModule(final String name, final int flags, final String version) {
  ModuleVisitor moduleVisitor = super.visitModule(remapper.mapModuleName(name), flags, version);
  return moduleVisitor == null ? null : createModuleRemapper(moduleVisitor);
}
 
源代码16 项目: Concurnas   文件: ClassNode.java
@Override
public ModuleVisitor visitModule(final String name, final int access, final String version) {
  module = new ModuleNode(name, access, version);
  return module;
}
 
源代码17 项目: Concurnas   文件: TraceClassVisitor.java
@Override
public ModuleVisitor visitModule(final String name, final int flags, final String version) {
  Printer modulePrinter = p.visitModule(name, flags, version);
  return new TraceModuleVisitor(super.visitModule(name, flags, version), modulePrinter);
}
 
源代码18 项目: AVM   文件: RejectionClassVisitor.java
@Override
public ModuleVisitor visitModule(String name, int access, String version) {
    throw RuntimeAssertionError.unimplemented("AKI-106: This is never called");
}
 
源代码19 项目: JByteMod-Beta   文件: ClassRemapper.java
@Override
public ModuleVisitor visitModule(final String name, final int flags, final String version) {
  ModuleVisitor moduleVisitor = super.visitModule(remapper.mapModuleName(name), flags, version);
  return moduleVisitor == null ? null : createModuleRemapper(moduleVisitor);
}
 
源代码20 项目: JByteMod-Beta   文件: RemappingClassAdapter.java
@Override
public ModuleVisitor visitModule(String name, int flags, String version) {
  throw new RuntimeException("RemappingClassAdapter is deprecated, use ClassRemapper instead");
}
 
源代码21 项目: JByteMod-Beta   文件: ClassNode.java
@Override
public ModuleVisitor visitModule(final String name, final int access, final String version) {
  return module = new ModuleNode(name, access, version);
}
 
源代码22 项目: JByteMod-Beta   文件: CheckModuleAdapter.java
public CheckModuleAdapter(final ModuleVisitor mv, final boolean isOpen) {
  super(Opcodes.ASM6, mv);
  this.isOpen = isOpen;
}
 
源代码23 项目: JByteMod-Beta   文件: TraceClassVisitor.java
@Override
public ModuleVisitor visitModule(String name, int flags, String version) {
  Printer p = this.p.visitModule(name, flags, version);
  ModuleVisitor mv = super.visitModule(name, flags, version);
  return new TraceModuleVisitor(mv, p);
}
 
源代码24 项目: JByteMod-Beta   文件: TraceModuleVisitor.java
public TraceModuleVisitor(final ModuleVisitor mv, final Printer p) {
  super(Opcodes.ASM6, mv);
  this.p = p;
}
 
源代码25 项目: sumk   文件: MethodInfoClassVisitor.java
@Override
public ModuleVisitor visitModule(String name, int access, String version) {
	return null;
}
 
源代码26 项目: JReFrameworker   文件: ClassRemapper.java
@Override
public ModuleVisitor visitModule(final String name, final int flags, final String version) {
  ModuleVisitor moduleVisitor = super.visitModule(remapper.mapModuleName(name), flags, version);
  return moduleVisitor == null ? null : createModuleRemapper(moduleVisitor);
}
 
源代码27 项目: JReFrameworker   文件: RemappingClassAdapter.java
@Override
public ModuleVisitor visitModule(final String name, final int flags, final String version) {
  throw new RuntimeException("RemappingClassAdapter is deprecated, use ClassRemapper instead");
}
 
源代码28 项目: JReFrameworker   文件: ClassNode.java
@Override
public ModuleVisitor visitModule(final String name, final int access, final String version) {
  module = new ModuleNode(name, access, version);
  return module;
}
 
源代码29 项目: JReFrameworker   文件: TraceClassVisitor.java
@Override
public ModuleVisitor visitModule(final String name, final int flags, final String version) {
  Printer modulePrinter = p.visitModule(name, flags, version);
  return new TraceModuleVisitor(super.visitModule(name, flags, version), modulePrinter);
}
 
源代码30 项目: JReFrameworker   文件: ClassRemapper.java
@Override
public ModuleVisitor visitModule(final String name, final int flags, final String version) {
  ModuleVisitor moduleVisitor = super.visitModule(remapper.mapModuleName(name), flags, version);
  return moduleVisitor == null ? null : createModuleRemapper(moduleVisitor);
}
 
 类所在包
 同包方法