ValueType.java revision 00fc68adf2e39aeb9fed35293f2576bbe729ec4b
1/* 2 * [The "BSD licence"] 3 * Copyright (c) 2010 Ben Gruver (JesusFreke) 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 3. The name of the author may not be used to endorse or promote products 15 * derived from this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29package org.jf.dexlib.EncodedValue; 30 31import org.jf.dexlib.Util.SparseArray; 32 33public enum ValueType { 34 35 VALUE_BYTE((byte) 0x00), 36 VALUE_SHORT((byte) 0x02), 37 VALUE_CHAR((byte) 0x03), 38 VALUE_INT((byte) 0x04), 39 VALUE_LONG((byte) 0x06), 40 VALUE_FLOAT((byte) 0x10), 41 VALUE_DOUBLE((byte) 0x11), 42 VALUE_STRING((byte) 0x17), 43 VALUE_TYPE((byte) 0x18), 44 VALUE_FIELD((byte) 0x19), 45 VALUE_METHOD((byte) 0x1a), 46 VALUE_ENUM((byte) 0x1b), 47 VALUE_ARRAY((byte) 0x1c), 48 VALUE_ANNOTATION((byte) 0x1d), 49 VALUE_NULL((byte) 0x1e), 50 VALUE_BOOLEAN((byte) 0x1f); 51 52 /** 53 * A map to facilitate looking up a <code>ValueType</code> by byte value 54 */ 55 private final static SparseArray<ValueType> valueTypeIntegerMap; 56 57 static { 58 /** build the <code>valueTypeIntegerMap</code> object */ 59 valueTypeIntegerMap = new SparseArray<ValueType>(16); 60 61 for (ValueType valueType : ValueType.values()) { 62 valueTypeIntegerMap.put(valueType.value, valueType); 63 } 64 } 65 66 /** 67 * The byte value for this ValueType 68 */ 69 public final byte value; 70 71 private ValueType(byte value) { 72 this.value = value; 73 } 74 75 /** 76 * Converts a byte value to the corresponding ValueType enum value, 77 * or null if the value isn't a valid ValueType value 78 * 79 * @param valueType the byte value to convert to a ValueType 80 * @return the ValueType enum value corresponding to valueType, or null 81 * if not a valid ValueType value 82 */ 83 public static ValueType fromByte(byte valueType) { 84 return valueTypeIntegerMap.get(valueType); 85 } 86}