1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * you may not use this file except in compliance with the License. 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * You may obtain a copy of the License at 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage com.android.dx.dex.file; 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport com.android.dx.util.ToHuman; 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Enumeration of all the top-level item types. 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic enum ItemType implements ToHuman { 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_HEADER_ITEM( 0x0000, "header_item"), 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_STRING_ID_ITEM( 0x0001, "string_id_item"), 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_TYPE_ID_ITEM( 0x0002, "type_id_item"), 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_PROTO_ID_ITEM( 0x0003, "proto_id_item"), 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_FIELD_ID_ITEM( 0x0004, "field_id_item"), 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_METHOD_ID_ITEM( 0x0005, "method_id_item"), 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_CLASS_DEF_ITEM( 0x0006, "class_def_item"), 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_MAP_LIST( 0x1000, "map_list"), 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_TYPE_LIST( 0x1001, "type_list"), 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_ANNOTATION_SET_REF_LIST( 0x1002, "annotation_set_ref_list"), 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_ANNOTATION_SET_ITEM( 0x1003, "annotation_set_item"), 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_CLASS_DATA_ITEM( 0x2000, "class_data_item"), 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_CODE_ITEM( 0x2001, "code_item"), 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_STRING_DATA_ITEM( 0x2002, "string_data_item"), 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_DEBUG_INFO_ITEM( 0x2003, "debug_info_item"), 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_ANNOTATION_ITEM( 0x2004, "annotation_item"), 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_ENCODED_ARRAY_ITEM( 0x2005, "encoded_array_item"), 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_ANNOTATIONS_DIRECTORY_ITEM(0x2006, "annotations_directory_item"), 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_MAP_ITEM( -1, "map_item"), 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_TYPE_ITEM( -1, "type_item"), 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_EXCEPTION_HANDLER_ITEM( -1, "exception_handler_item"), 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TYPE_ANNOTATION_SET_REF_ITEM( -1, "annotation_set_ref_item"); 47de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** value when represented in a {@link MapItem} */ 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private final int mapValue; 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 5199409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project /** {@code non-null;} name of the type */ 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private final String typeName; 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 5499409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project /** {@code non-null;} the short human name */ 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private final String humanName; 56de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Constructs an instance. 59de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro * 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param mapValue value when represented in a {@link MapItem} 6199409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @param typeName {@code non-null;} name of the type 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private ItemType(int mapValue, String typeName) { 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.mapValue = mapValue; 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.typeName = typeName; 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Make the human name. 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String human = typeName; 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (human.endsWith("_item")) { 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project human = human.substring(0, human.length() - 5); 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.humanName = human.replace('_', ' '); 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Gets the map value. 77de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro * 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the map value 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int getMapValue() { 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return mapValue; 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 83de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Gets the type name. 86de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro * 8799409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @return {@code non-null;} the type name 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getTypeName() { 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return typeName; 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** {@inheritDoc} */ 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String toHuman() { 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return humanName; 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 98