1 package org.simantics.scl.compiler.internal.decompiler.impl;
3 import java.io.IOException;
6 import org.simantics.scl.compiler.internal.decompilation.IDecompiler;
7 import org.simantics.scl.compiler.runtime.MutableClassLoader;
9 import com.strobel.assembler.metadata.Buffer;
10 import com.strobel.assembler.metadata.ITypeLoader;
11 import com.strobel.core.VerifyArgument;
12 import com.strobel.decompiler.Decompiler;
13 import com.strobel.decompiler.DecompilerSettings;
14 import com.strobel.decompiler.PlainTextOutput;
16 public class DecompilerImpl implements IDecompiler {
18 public void decompile(MutableClassLoader classLoader, String className, Writer output) {
19 VerifyArgument.isNonNegative(3.0, "asd");
20 DecompilerSettings settings = DecompilerSettings.javaDefaults();
21 settings.setTypeLoader(new ITypeLoader() {
23 public boolean tryLoadType(String internalName, Buffer buffer) {
24 byte[] bytes = classLoader.getBytes(internalName.replace('/', '.'));
28 buffer.reset(bytes.length);
29 System.arraycopy(bytes, 0, buffer.array(), 0, bytes.length);
35 new PlainTextOutput(output),
39 } catch (IOException e) {