package parser.dex; import com.googlecode.dex2jar.DexOpcodes; import com.googlecode.dex2jar.Method; import com.googlecode.dex2jar.visitors.DexAnnotationAble; import com.googlecode.dex2jar.visitors.DexAnnotationVisitor; import com.googlecode.dex2jar.visitors.DexCodeVisitor; import com.googlecode.dex2jar.visitors.DexMethodVisitor; import org.objectweb.asm.Opcodes; import java.io.StringWriter; public class MethodAdapter implements DexMethodVisitor, Opcodes { final protected Method method; protected int accessFlags; protected int config; protected DexClass dexClass; public MethodAdapter(int accessFlags, Method method, DexClass dexClass) { this(accessFlags, method, 0, dexClass); } public MethodAdapter(int accessFlags, Method method, int config, DexClass dexClass) { super(); this.dexClass = dexClass; this.method = method; final int cleanFlag = ~((DexOpcodes.ACC_DECLARED_SYNCHRONIZED | DexOpcodes.ACC_CONSTRUCTOR)); this.accessFlags = accessFlags & cleanFlag; this.config = config; } @Override public DexCodeVisitor visitCode() { final StringWriter writer = new StringWriter(1024 * 10); // final PrintWriter printWriter = new PrintWriter(writer); // return new DumpDexCodeAdapter((accessFlags & DexOpcodes.ACC_STATIC) != 0, method, printWriter) { // @Override // public void visitEnd() { // dexClass.methodMap.put(method.toString(), writer.toString()); // printWriter.close(); // } // }; return new CodeAdapter((accessFlags & DexOpcodes.ACC_STATIC) != 0, method, writer, dexClass); } @Override public void visitEnd() { } @Override public DexAnnotationAble visitParameterAnnotation(int index) { return null; } @Override public DexAnnotationVisitor visitAnnotation(String name, boolean visible) { return null; } }