package parser.dex;
import com.googlecode.dex2jar.Field;
import com.googlecode.dex2jar.Method;
import com.googlecode.dex2jar.visitors.DexAnnotationVisitor;
import com.googlecode.dex2jar.visitors.DexClassVisitor;
import com.googlecode.dex2jar.visitors.DexFieldVisitor;
import com.googlecode.dex2jar.visitors.DexMethodVisitor;
public class ClassAdapter implements DexClassVisitor {
protected int access_flags;
protected String className;
protected String file;
protected String[] interfaceNames;
protected String superClass;
protected DexClass dexClass;
public ClassAdapter(int access_flags, String className, String superClass,
String[] interfaceNames, DexClass dexClass) {
super();
this.access_flags = access_flags;
this.className = className;
this.superClass = superClass;
this.interfaceNames = interfaceNames;
this.dexClass = dexClass;
this.dexClass.stringData.add(className);
}
@Override
public void visitSource(String file) {
}
@Override
public DexFieldVisitor visitField(int accessFlags, Field field, Object value) {
DexClass.TField tField = new DexClass.TField();
tField.field = field;
tField.value = value;
dexClass.fields.add(tField);
// System.out.println("field : " + field + "=" + value);
if (null != value) {
dexClass.stringData.add(field.getName());
if (value instanceof String) {
dexClass.stringData.add(value.toString());
}
}
return null;
}
@Override
public DexMethodVisitor visitMethod(int accessFlags, final Method method) {
dexClass.methods.add(method);
dexClass.stringData.add(method.getName());
// System.out.println("field : " + method.getName());
return new MethodAdapter(accessFlags, method, dexClass);
}
@Override
public void visitEnd() {
}
@Override
public DexAnnotationVisitor visitAnnotation(String name, boolean visible) {
return null;
}
}