1674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen/*** 2674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * ASM: a very small and fast Java bytecode manipulation framework 3674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Copyright (c) 2000-2007 INRIA, France Telecom 4674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * All rights reserved. 5674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * 6674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Redistribution and use in source and binary forms, with or without 7674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * modification, are permitted provided that the following conditions 8674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * are met: 9674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * 1. Redistributions of source code must retain the above copyright 10674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * notice, this list of conditions and the following disclaimer. 11674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * 2. Redistributions in binary form must reproduce the above copyright 12674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * notice, this list of conditions and the following disclaimer in the 13674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * documentation and/or other materials provided with the distribution. 14674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * 3. Neither the name of the copyright holders nor the names of its 15674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * contributors may be used to endorse or promote products derived from 16674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * this software without specific prior written permission. 17674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * 18674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 22674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 28674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * THE POSSIBILITY OF SUCH DAMAGE. 29674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 30674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogenpackage org.mockito.asm; 31674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 32674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen/** 33674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * A constant pool item. Constant pool items can be created with the 'newXXX' 34674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * methods in the {@link ClassWriter} class. 35674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * 36674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * @author Eric Bruneton 37674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 38674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogenfinal class Item { 39674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 40674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 41674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Index of this item in the constant pool. 42674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 43674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen int index; 44674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 45674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 46674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Type of this constant pool item. A single class is used to represent all 47674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * constant pool item types, in order to minimize the bytecode size of this 48674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * package. The value of this field is one of {@link ClassWriter#INT}, 49674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * {@link ClassWriter#LONG}, {@link ClassWriter#FLOAT}, 50674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * {@link ClassWriter#DOUBLE}, {@link ClassWriter#UTF8}, 51674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * {@link ClassWriter#STR}, {@link ClassWriter#CLASS}, 52674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * {@link ClassWriter#NAME_TYPE}, {@link ClassWriter#FIELD}, 53674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * {@link ClassWriter#METH}, {@link ClassWriter#IMETH}. 54674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * 55674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Special Item types are used for Items that are stored in the ClassWriter 56674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * {@link ClassWriter#typeTable}, instead of the constant pool, in order to 57674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * avoid clashes with normal constant pool items in the ClassWriter constant 58674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * pool's hash table. These special item types are 59674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * {@link ClassWriter#TYPE_NORMAL}, {@link ClassWriter#TYPE_UNINIT} and 60674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * {@link ClassWriter#TYPE_MERGED}. 61674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 62674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen int type; 63674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 64674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 65674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Value of this item, for an integer item. 66674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 67674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen int intVal; 68674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 69674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 70674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Value of this item, for a long item. 71674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 72674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen long longVal; 73674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 74674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 75674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * First part of the value of this item, for items that do not hold a 76674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * primitive value. 77674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 78674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen String strVal1; 79674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 80674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 81674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Second part of the value of this item, for items that do not hold a 82674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * primitive value. 83674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 84674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen String strVal2; 85674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 86674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 87674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Third part of the value of this item, for items that do not hold a 88674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * primitive value. 89674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 90674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen String strVal3; 91674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 92674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 93674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * The hash code value of this constant pool item. 94674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 95674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen int hashCode; 96674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 97674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 98674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Link to another constant pool item, used for collision lists in the 99674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * constant pool's hash table. 100674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 101674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen Item next; 102674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 103674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 104674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Constructs an uninitialized {@link Item}. 105674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 106674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen Item() { 107674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen } 108674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 109674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 110674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Constructs an uninitialized {@link Item} for constant pool element at 111674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * given position. 112674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * 113674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * @param index index of the item to be constructed. 114674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 115674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen Item(final int index) { 116674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.index = index; 117674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen } 118674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 119674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 120674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Constructs a copy of the given item. 121674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * 122674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * @param index index of the item to be constructed. 123674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * @param i the item that must be copied into the item to be constructed. 124674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 125674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen Item(final int index, final Item i) { 126674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.index = index; 127674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen type = i.type; 128674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen intVal = i.intVal; 129674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen longVal = i.longVal; 130674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen strVal1 = i.strVal1; 131674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen strVal2 = i.strVal2; 132674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen strVal3 = i.strVal3; 133674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen hashCode = i.hashCode; 134674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen } 135674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 136674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 137674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Sets this item to an integer item. 138674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * 139674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * @param intVal the value of this item. 140674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 141674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen void set(final int intVal) { 142674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.type = ClassWriter.INT; 143674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.intVal = intVal; 144674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.hashCode = 0x7FFFFFFF & (type + intVal); 145674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen } 146674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 147674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 148674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Sets this item to a long item. 149674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * 150674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * @param longVal the value of this item. 151674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 152674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen void set(final long longVal) { 153674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.type = ClassWriter.LONG; 154674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.longVal = longVal; 155674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.hashCode = 0x7FFFFFFF & (type + (int) longVal); 156674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen } 157674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 158674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 159674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Sets this item to a float item. 160674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * 161674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * @param floatVal the value of this item. 162674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 163674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen void set(final float floatVal) { 164674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.type = ClassWriter.FLOAT; 165674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.intVal = Float.floatToRawIntBits(floatVal); 166674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.hashCode = 0x7FFFFFFF & (type + (int) floatVal); 167674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen } 168674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 169674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 170674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Sets this item to a double item. 171674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * 172674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * @param doubleVal the value of this item. 173674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 174674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen void set(final double doubleVal) { 175674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.type = ClassWriter.DOUBLE; 176674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.longVal = Double.doubleToRawLongBits(doubleVal); 177674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.hashCode = 0x7FFFFFFF & (type + (int) doubleVal); 178674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen } 179674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 180674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 181674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Sets this item to an item that do not hold a primitive value. 182674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * 183674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * @param type the type of this item. 184674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * @param strVal1 first part of the value of this item. 185674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * @param strVal2 second part of the value of this item. 186674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * @param strVal3 third part of the value of this item. 187674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 188674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen void set( 189674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen final int type, 190674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen final String strVal1, 191674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen final String strVal2, 192674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen final String strVal3) 193674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen { 194674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.type = type; 195674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.strVal1 = strVal1; 196674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.strVal2 = strVal2; 197674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen this.strVal3 = strVal3; 198674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen switch (type) { 199674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen case ClassWriter.UTF8: 200674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen case ClassWriter.STR: 201674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen case ClassWriter.CLASS: 202674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen case ClassWriter.TYPE_NORMAL: 203674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen hashCode = 0x7FFFFFFF & (type + strVal1.hashCode()); 204674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen return; 205674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen case ClassWriter.NAME_TYPE: 206674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen hashCode = 0x7FFFFFFF & (type + strVal1.hashCode() 207674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * strVal2.hashCode()); 208674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen return; 209674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen // ClassWriter.FIELD: 210674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen // ClassWriter.METH: 211674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen // ClassWriter.IMETH: 212674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen default: 213674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen hashCode = 0x7FFFFFFF & (type + strVal1.hashCode() 214674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * strVal2.hashCode() * strVal3.hashCode()); 215674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen } 216674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen } 217674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen 218674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen /** 219674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Indicates if the given item is equal to this one. 220674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * 221674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * @param i the item to be compared to this one. 222674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * @return <tt>true</tt> if the given item if equal to this one, 223674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * <tt>false</tt> otherwise. 224674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */ 225674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen boolean isEqualTo(final Item i) { 226674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen if (i.type == type) { 227674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen switch (type) { 228674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen case ClassWriter.INT: 229674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen case ClassWriter.FLOAT: 230674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen return i.intVal == intVal; 231674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen case ClassWriter.TYPE_MERGED: 232674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen case ClassWriter.LONG: 233674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen case ClassWriter.DOUBLE: 234674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen return i.longVal == longVal; 235674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen case ClassWriter.UTF8: 236674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen case ClassWriter.STR: 237674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen case ClassWriter.CLASS: 238674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen case ClassWriter.TYPE_NORMAL: 239674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen return i.strVal1.equals(strVal1); 240674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen case ClassWriter.TYPE_UNINIT: 241674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen return i.intVal == intVal && i.strVal1.equals(strVal1); 242674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen case ClassWriter.NAME_TYPE: 243674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen return i.strVal1.equals(strVal1) 244674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen && i.strVal2.equals(strVal2); 245674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen // ClassWriter.FIELD: 246674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen // ClassWriter.METH: 247674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen // ClassWriter.IMETH: 248674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen default: 249674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen return i.strVal1.equals(strVal1) 250674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen && i.strVal2.equals(strVal2) 251674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen && i.strVal3.equals(strVal3); 252674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen } 253674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen } 254674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen return false; 255674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen } 256674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen} 257