From 0e3a7a36d1ac35fbcb9aadd28bd9dad015b1d056 Mon Sep 17 00:00:00 2001 From: Izzat Bahadirov Date: Fri, 28 Dec 2012 10:57:12 -0800 Subject: [PATCH] Helper method to get map_item name. Useful when dumping stats. --- .../dexlib2/dexbacked/DexBackedMapItem.java | 6 +++++ .../org/jf/dexlib2/writer/DexItemType.java | 24 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedMapItem.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedMapItem.java index b42280c6..d036f5b0 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedMapItem.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedMapItem.java @@ -31,6 +31,8 @@ package org.jf.dexlib2.dexbacked; +import org.jf.dexlib2.writer.DexItemType; + import javax.annotation.Nonnull; public class DexBackedMapItem { @@ -51,6 +53,10 @@ public class DexBackedMapItem { return dexBuf.readUshort(mapItemOffset + TYPE_OFFSET); } + public String getName() { + return DexItemType.getItemTypeName(getType()); + } + public int getNumItems() { return dexBuf.readSmallUint(mapItemOffset + SIZE_OFFSET); } diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/DexItemType.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/DexItemType.java index 853ff3bd..ba3f67ff 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/writer/DexItemType.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/DexItemType.java @@ -50,4 +50,28 @@ public class DexItemType { public static final int ANNOTATION_ITEM = 0x2004; public static final int ENCODED_ARRAY_ITEM = 0x2005; public static final int ANNOTATION_DIRECTORY_ITEM = 0x2006; + + public static String getItemTypeName(int itemType) { + switch (itemType) { + case HEADER_ITEM: return "HEADER_ITEM"; + case STRING_ID_ITEM: return "STRING_ID_ITEM"; + case TYPE_ID_ITEM: return "TYPE_ID_ITEM"; + case PROTO_ID_ITEM: return "PROTO_ID_ITEM"; + case FIELD_ID_ITEM: return "FIELD_ID_ITEM"; + case METHOD_ID_ITEM: return "METHOD_ID_ITEM"; + case CLASS_DEF_ITEM: return "CLASS_DEF_ITEM"; + case MAP_LIST: return "MAP_LIST"; + case TYPE_LIST: return "TYPE_LIST"; + case ANNOTATION_SET_REF_LIST: return "ANNOTATION_SET_REF_LIST"; + case ANNOTATION_SET_ITEM: return "ANNOTATION_SET_ITEM"; + case CLASS_DATA_ITEM: return "CLASS_DATA_ITEM"; + case CODE_ITEM: return "CODE_ITEM"; + case STRING_DATA_ITEM: return "STRING_DATA_ITEM"; + case DEBUG_INFO_ITEM: return "DEBUG_INFO_ITEM"; + case ANNOTATION_ITEM: return "ANNOTATION_ITEM"; + case ENCODED_ARRAY_ITEM: return "ENCODED_ARRAY_ITEM"; + case ANNOTATION_DIRECTORY_ITEM: return "ANNOTATION_DIRECTORY_ITEM"; + default: return "Unknown dex item type"; + } + } }