aboutsummaryrefslogtreecommitdiff
path: root/dexlib2/src
diff options
context:
space:
mode:
Diffstat (limited to 'dexlib2/src')
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/dexbacked/BaseDexReader.java1
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java8
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java20
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedMethodImplementation.java2
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/DebugInfo.java2
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/VariableSizeLookaheadIterator.java30
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/iface/debug/DebugItem.java3
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/util/AnnotatedBytes.java3
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderClassDef.java12
9 files changed, 44 insertions, 37 deletions
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/BaseDexReader.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/BaseDexReader.java
index 262fb546..96645b8c 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/BaseDexReader.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/BaseDexReader.java
@@ -48,7 +48,6 @@ public class BaseDexReader<T extends BaseDexBuffer> {
public int getOffset() { return offset; }
public void setOffset(int offset) { this.offset = offset; }
- /** {@inheritDoc} */
public int readSleb128() {
int end = offset;
int currentByteValue;
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java
index 06f07796..9596a278 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java
@@ -173,7 +173,7 @@ public class DexBackedClassDef extends BaseTypeReference implements ClassDef {
while (true) {
if (++count > staticFieldCount) {
instanceFieldsOffset = reader.getOffset();
- return null;
+ return endOfData();
}
DexBackedField item = new DexBackedField(reader, DexBackedClassDef.this,
@@ -232,7 +232,7 @@ public class DexBackedClassDef extends BaseTypeReference implements ClassDef {
while (true) {
if (++count > instanceFieldCount) {
directMethodsOffset = reader.getOffset();
- return null;
+ return endOfData();
}
DexBackedField item = new DexBackedField(reader, DexBackedClassDef.this,
@@ -301,7 +301,7 @@ public class DexBackedClassDef extends BaseTypeReference implements ClassDef {
while (true) {
if (++count > directMethodCount) {
virtualMethodsOffset = reader.getOffset();
- return null;
+ return endOfData();
}
DexBackedMethod item = new DexBackedMethod(reader, DexBackedClassDef.this,
@@ -357,7 +357,7 @@ public class DexBackedClassDef extends BaseTypeReference implements ClassDef {
protected DexBackedMethod readNextItem(@Nonnull DexReader reader) {
while (true) {
if (++count > virtualMethodCount) {
- return null;
+ return endOfData();
}
DexBackedMethod item = new DexBackedMethod(reader, DexBackedClassDef.this,
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java
index b1a13396..1774096e 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java
@@ -207,6 +207,26 @@ public class DexBackedDexFile extends BaseDexBuffer implements DexFile {
return classCount;
}
+ public int getStringCount() {
+ return stringCount;
+ }
+
+ public int getTypeCount() {
+ return typeCount;
+ }
+
+ public int getProtoCount() {
+ return protoCount;
+ }
+
+ public int getFieldCount() {
+ return fieldCount;
+ }
+
+ public int getMethodCount() {
+ return methodCount;
+ }
+
@Nonnull
public String getString(int stringIndex) {
int stringOffset = getStringIdItemOffset(stringIndex);
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedMethodImplementation.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedMethodImplementation.java
index 455f397a..0c06b1d7 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedMethodImplementation.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedMethodImplementation.java
@@ -76,7 +76,7 @@ public class DexBackedMethodImplementation implements MethodImplementation {
@Override
protected Instruction readNextItem(@Nonnull DexReader reader) {
if (reader.getOffset() >= endOffset) {
- return null;
+ return endOfData();
}
Instruction instruction = DexBackedInstruction.readFrom(reader);
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/DebugInfo.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/DebugInfo.java
index ffa4c20d..6759820e 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/DebugInfo.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/DebugInfo.java
@@ -160,7 +160,7 @@ public abstract class DebugInfo implements Iterable<DebugItem> {
int next = reader.readUbyte();
switch (next) {
case DebugItemType.END_SEQUENCE: {
- return null;
+ return endOfData();
}
case DebugItemType.ADVANCE_PC: {
int addressDiff = reader.readSmallUleb128();
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/VariableSizeLookaheadIterator.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/VariableSizeLookaheadIterator.java
index d330094f..1f4259ff 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/VariableSizeLookaheadIterator.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/VariableSizeLookaheadIterator.java
@@ -31,46 +31,32 @@
package org.jf.dexlib2.dexbacked.util;
+import com.google.common.collect.AbstractIterator;
import org.jf.dexlib2.dexbacked.DexBackedDexFile;
import org.jf.dexlib2.dexbacked.DexReader;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.Iterator;
-import java.util.NoSuchElementException;
-public abstract class VariableSizeLookaheadIterator<T> implements Iterator<T> {
+public abstract class VariableSizeLookaheadIterator<T> extends AbstractIterator<T> implements Iterator<T> {
@Nonnull private final DexReader reader;
- private T cachedItem = null;
-
protected VariableSizeLookaheadIterator(@Nonnull DexBackedDexFile dexFile, int offset) {
this.reader = dexFile.readerAt(offset);
- cachedItem = readNextItem(reader);
}
/**
- * Reads the next item from reader. If the end of the list has been reached, it should return null.
+ * Reads the next item from reader. If the end of the list has been reached, it should call endOfData.
+ *
+ * endOfData has a return value of T, so you can simply {@code return endOfData()}
*
- * @return The item that was read, or null if the end of the list has been reached.
+ * @return The item that was read. If endOfData was called, the return value is ignored.
*/
@Nullable protected abstract T readNextItem(@Nonnull DexReader reader);
@Override
- public boolean hasNext() {
- return cachedItem != null;
- }
-
- @Override
- @Nonnull
- public T next() {
- if (cachedItem == null) {
- throw new NoSuchElementException();
- }
- T ret = cachedItem;
- cachedItem = readNextItem(reader);
- return ret;
+ protected T computeNext() {
+ return readNextItem(reader);
}
-
- @Override public void remove() { throw new UnsupportedOperationException(); }
}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/iface/debug/DebugItem.java b/dexlib2/src/main/java/org/jf/dexlib2/iface/debug/DebugItem.java
index ea3f5ffb..6cf4dbbc 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/iface/debug/DebugItem.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/iface/debug/DebugItem.java
@@ -48,8 +48,7 @@ public interface DebugItem {
int getDebugItemType();
/**
- * The code address
- * @return
+ * @return The code address
*/
int getCodeAddress();
}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/util/AnnotatedBytes.java b/dexlib2/src/main/java/org/jf/dexlib2/util/AnnotatedBytes.java
index c48bac2d..5b4e3ee8 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/util/AnnotatedBytes.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/util/AnnotatedBytes.java
@@ -268,8 +268,7 @@ public class AnnotatedBytes {
}
/**
- * Gets the width of the right side containing the annotations
- * @return
+ * @return The width of the right side containing the annotations
*/
public int getAnnotationWidth() {
int leftWidth = 8 + (hexCols * 2) + (hexCols / 2);
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderClassDef.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderClassDef.java
index 46e75ce0..f19a2e7f 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderClassDef.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderClassDef.java
@@ -80,10 +80,14 @@ public class BuilderClassDef extends BaseTypeReference implements ClassDef {
this.interfaces = interfaces;
this.sourceFile = sourceFile;
this.annotations = annotations;
- this.staticFields = ImmutableSortedSet.copyOf(Iterables.filter(fields, FieldUtil.FIELD_IS_STATIC));
- this.instanceFields = ImmutableSortedSet.copyOf(Iterables.filter(fields, FieldUtil.FIELD_IS_INSTANCE));
- this.directMethods = ImmutableSortedSet.copyOf(Iterables.filter(methods, MethodUtil.METHOD_IS_DIRECT));
- this.virtualMethods = ImmutableSortedSet.copyOf(Iterables.filter(methods, MethodUtil.METHOD_IS_VIRTUAL));
+ this.staticFields = ImmutableSortedSet.copyOf(
+ (Iterable<? extends BuilderField>)Iterables.filter(fields, FieldUtil.FIELD_IS_STATIC));
+ this.instanceFields = ImmutableSortedSet.copyOf(
+ (Iterable<? extends BuilderField>)Iterables.filter(fields, FieldUtil.FIELD_IS_INSTANCE));
+ this.directMethods = ImmutableSortedSet.copyOf(
+ (Iterable<? extends BuilderMethod>)Iterables.filter(methods, MethodUtil.METHOD_IS_DIRECT));
+ this.virtualMethods = ImmutableSortedSet.copyOf(
+ (Iterable<? extends BuilderMethod>)Iterables.filter(methods, MethodUtil.METHOD_IS_VIRTUAL));
}
@Nonnull @Override public String getType() { return type.getType(); }