Remove the DexBuffer wrapper methods from DexReader

This commit is contained in:
Ben Gruver 2012-12-30 21:48:35 -08:00
parent 982e9f614f
commit fd26bc6062
15 changed files with 20 additions and 34 deletions

View File

@ -38,16 +38,16 @@ import org.jf.dexlib2.iface.value.EncodedValue;
import javax.annotation.Nonnull;
public class DexBackedAnnotationElement extends BaseAnnotationElement {
@Nonnull private final DexBuffer dexBuffer;
@Nonnull private final DexBuffer dexBuf;
public final int nameIndex;
@Nonnull public final EncodedValue value;
public DexBackedAnnotationElement(@Nonnull DexReader reader) {
this.dexBuffer = reader.getDexBuffer();
this.dexBuf = reader.dexBuf;
this.nameIndex = reader.readSmallUleb128();
this.value = DexBackedEncodedValue.readFrom(reader);
}
@Nonnull @Override public String getName() { return dexBuffer.getString(nameIndex); }
@Nonnull @Override public String getName() { return dexBuf.getString(nameIndex); }
@Nonnull @Override public EncodedValue getValue() { return value; }
}

View File

@ -43,7 +43,7 @@ public class DexBackedExceptionHandler extends BaseExceptionHandler implements E
public DexBackedExceptionHandler(@Nonnull DexReader reader) {
// TODO: verify dalvik doesn't accept an exception handler that points in the middle of an instruction
this.dexBuf = reader.getDexBuffer();
this.dexBuf = reader.dexBuf;
this.typeId = reader.readSmallUleb128();
this.handlerCodeAddress = reader.readSmallUleb128();
}

View File

@ -63,7 +63,7 @@ public class DexBackedField extends BaseFieldReference implements Field {
int previousFieldIndex,
@Nonnull StaticInitialValueIterator staticInitialValueIterator,
@Nonnull AnnotationsDirectory.AnnotationIterator annotationIterator) {
this.dexBuf = reader.getDexBuffer();
this.dexBuf = reader.dexBuf;
this.classDef = classDef;
int fieldIndexDiff = reader.readSmallUleb128();

View File

@ -73,7 +73,7 @@ public class DexBackedMethod extends BaseMethodReference implements Method {
public DexBackedMethod(@Nonnull DexReader reader,
@Nonnull DexBackedClassDef classDef,
int previousMethodIndex) {
this.dexBuf = reader.getDexBuffer();
this.dexBuf = reader.dexBuf;
this.classDef = classDef;
int methodIndexDiff = reader.readSmallUleb128();
@ -90,7 +90,7 @@ public class DexBackedMethod extends BaseMethodReference implements Method {
int previousMethodIndex,
@Nonnull AnnotationsDirectory.AnnotationIterator methodAnnotationIterator,
@Nonnull AnnotationsDirectory.AnnotationIterator paramaterAnnotationIterator) {
this.dexBuf = reader.getDexBuffer();
this.dexBuf = reader.dexBuf;
this.classDef = classDef;
int methodIndexDiff = reader.readSmallUleb128();

View File

@ -36,7 +36,7 @@ import org.jf.util.ExceptionWithContext;
import javax.annotation.Nonnull;
public class DexReader {
@Nonnull private final DexBuffer dexBuf;
@Nonnull public final DexBuffer dexBuf;
private int offset;
public DexReader(@Nonnull DexBuffer dexBuf, int offset) {
@ -44,24 +44,9 @@ public class DexReader {
this.offset = offset;
}
@Nonnull public DexBuffer getDexBuffer() { return dexBuf; }
public int getOffset() { return offset; }
public void setOffset(int offset) { this.offset = offset; }
public int getStringIdItemOffset(int stringIndex) { return dexBuf.getStringIdItemOffset(stringIndex); }
public int getTypeIdItemOffset(int typeIndex) { return dexBuf.getTypeIdItemOffset(typeIndex); }
public int getFieldIdItemOffset(int fieldIndex) { return dexBuf.getFieldIdItemOffset(fieldIndex); }
public int getMethodIdItemOffset(int methodIndex) { return dexBuf.getMethodIdItemOffset(methodIndex); }
public int getProtoIdItemOffset(int methodIndex) { return dexBuf.getProtoIdItemOffset(methodIndex); }
public int getClassDefItemOffset(int classIndex) { return dexBuf.getClassDefItemOffset(classIndex); }
public String getString(int stringIndex) { return dexBuf.getString(stringIndex); }
public String getOptionalString(int stringIndex) { return dexBuf.getOptionalString(stringIndex); }
public String getType(int typeIndex) { return dexBuf.getType(typeIndex); }
public String getOptionalType(int typeIndex) { return dexBuf.getOptionalType(typeIndex); }
public String getField(int fieldIndex) { return dexBuf.getField(fieldIndex); }
public String getMethod(int methodIndex) { return dexBuf.getMethod(methodIndex); }
public String getReference(int type, int index) { return dexBuf.getReference(type, index); }
/** {@inheritDoc} */
public int readSleb128() {
int end = offset;

View File

@ -66,7 +66,7 @@ public abstract class DexBackedInstruction implements Instruction {
Opcode opcode = Opcode.getOpcodeByValue(opcodeValue);
//TODO: handle unexpected/unknown opcodes
Instruction instruction = buildInstruction(reader.getDexBuffer(), opcode, reader.getOffset());
Instruction instruction = buildInstruction(reader.dexBuf, opcode, reader.getOffset());
reader.moveRelative(instruction.getCodeUnits()*2);
return instruction;
}

View File

@ -247,7 +247,7 @@ public abstract class DebugInfo implements Iterable<DebugItem> {
final MethodParameter methodParameter = methodParametersWithoutNames.get(index);
String _name = null;
if (index < parameterNameCount) {
_name = reader.getOptionalString(reader.readSmallUleb128() - 1);
_name = dexBuf.getOptionalString(reader.readSmallUleb128() - 1);
}
final String name = _name;

View File

@ -48,8 +48,8 @@ public class DexBackedAnnotationEncodedValue extends BaseAnnotationEncodedValue
private final int elementsOffset;
public DexBackedAnnotationEncodedValue(@Nonnull DexReader reader) {
this.dexBuf = reader.getDexBuffer();
this.type = reader.getType(reader.readSmallUleb128());
this.dexBuf = reader.dexBuf;
this.type = dexBuf.getType(reader.readSmallUleb128());
this.elementCount = reader.readSmallUleb128();
this.elementsOffset = reader.getOffset();
skipElements(reader, elementCount);

View File

@ -47,7 +47,7 @@ public class DexBackedArrayEncodedValue extends BaseArrayEncodedValue implements
private final int encodedArrayOffset;
public DexBackedArrayEncodedValue(@Nonnull DexReader reader) {
this.dexBuf = reader.getDexBuffer();
this.dexBuf = reader.dexBuf;
this.elementCount = reader.readSmallUleb128();
this.encodedArrayOffset = reader.getOffset();
skipElementsFrom(reader, elementCount);

View File

@ -79,7 +79,8 @@ public abstract class DexBackedEncodedValue {
return new DexBackedStringEncodedValue(reader, valueArg);
case ValueType.TYPE:
Preconditions.checkValueArg(valueArg, 3);
return new ImmutableTypeEncodedValue(reader.getType(reader.readSizedSmallUint(valueArg + 1)));
return new ImmutableTypeEncodedValue(reader.dexBuf.getType(
reader.readSizedSmallUint(valueArg + 1)));
case ValueType.FIELD:
Preconditions.checkValueArg(valueArg, 3);
return new DexBackedFieldEncodedValue(reader, valueArg);

View File

@ -44,7 +44,7 @@ public class DexBackedEnumEncodedValue extends BaseEnumEncodedValue {
private final int fieldIndex;
public DexBackedEnumEncodedValue(@Nonnull DexReader reader, int valueArg) {
this.dexBuf = reader.getDexBuffer();
this.dexBuf = reader.dexBuf;
fieldIndex = reader.readSizedSmallUint(valueArg + 1);
}

View File

@ -44,7 +44,7 @@ public class DexBackedFieldEncodedValue extends BaseFieldEncodedValue {
private final int fieldIndex;
public DexBackedFieldEncodedValue(@Nonnull DexReader reader, int valueArg) {
this.dexBuf = reader.getDexBuffer();
this.dexBuf = reader.dexBuf;
fieldIndex = reader.readSizedSmallUint(valueArg + 1);
}

View File

@ -44,7 +44,7 @@ public class DexBackedMethodEncodedValue extends BaseMethodEncodedValue {
private final int MethodIndex;
public DexBackedMethodEncodedValue(@Nonnull DexReader reader, int valueArg) {
this.dexBuf = reader.getDexBuffer();
this.dexBuf = reader.dexBuf;
MethodIndex = reader.readSizedSmallUint(valueArg + 1);
}

View File

@ -42,7 +42,7 @@ public class DexBackedStringEncodedValue extends BaseStringEncodedValue {
private final int stringIndex;
public DexBackedStringEncodedValue(@Nonnull DexReader reader, int valueArg) {
this.dexBuf = reader.getDexBuffer();
this.dexBuf = reader.dexBuf;
stringIndex = reader.readSizedSmallUint(valueArg + 1);
}

View File

@ -42,7 +42,7 @@ public class DexBackedTypeEncodedValue extends BaseTypeEncodedValue {
private final int typeIndex;
public DexBackedTypeEncodedValue(@Nonnull DexReader reader, int valueArg) {
this.dexBuf = reader.getDexBuffer();
this.dexBuf = reader.dexBuf;
typeIndex = reader.readSizedSmallUint(valueArg + 1);
}