FileDocCategorySizeDatePackage
Item.javaAPI DocGlassfish v2 API7185Thu Mar 02 11:51:12 GMT 2006oracle.toplink.libraries.asm

Item

public final class Item extends Object
A constant pool item. Constant pool items can be created with the 'newXXX' methods in the {@link ClassWriter} class.
author
Eric Bruneton

Fields Summary
short
index
Index of this item in the constant pool.
int
type
Type of this constant pool item. A single class is used to represent all constant pool item types, in order to minimize the bytecode size of this package. The value of this field is one of the constants defined in the {@link ClassWriter ClassWriter} class.
int
intVal
Value of this item, for a {@link ClassWriter#INT INT} item.
long
longVal
Value of this item, for a {@link ClassWriter#LONG LONG} item.
float
floatVal
Value of this item, for a {@link ClassWriter#FLOAT FLOAT} item.
double
doubleVal
Value of this item, for a {@link ClassWriter#DOUBLE DOUBLE} item.
String
strVal1
First part of the value of this item, for items that do not hold a primitive value.
String
strVal2
Second part of the value of this item, for items that do not hold a primitive value.
String
strVal3
Third part of the value of this item, for items that do not hold a primitive value.
int
hashCode
The hash code value of this constant pool item.
Item
next
Link to another constant pool item, used for collision lists in the constant pool's hash table.
Constructors Summary
Item()
Constructs an uninitialized {@link Item Item} object.

  
Item(short index, Item i)
Constructs a copy of the given item.

param
index index of the item to be constructed.
param
i the item that must be copied into the item to be constructed.

    this.index = index;
    type = i.type;
    intVal = i.intVal;
    longVal = i.longVal;
    floatVal = i.floatVal;
    doubleVal = i.doubleVal;
    strVal1 = i.strVal1;
    strVal2 = i.strVal2;
    strVal3 = i.strVal3;
    hashCode = i.hashCode;
  
Methods Summary
booleanisEqualTo(oracle.toplink.libraries.asm.Item i)
Indicates if the given item is equal to this one.

param
i the item to be compared to this one.
return
true if the given item if equal to this one, false otherwise.

    if (i.type == type) {
      switch (type) {
        case ClassWriter.INT:
          return i.intVal == intVal;
        case ClassWriter.LONG:
          return i.longVal == longVal;
        case ClassWriter.FLOAT:
          return i.floatVal == floatVal;
        case ClassWriter.DOUBLE:
          return i.doubleVal == doubleVal;
        case ClassWriter.UTF8:
        case ClassWriter.STR:
        case ClassWriter.CLASS:
          return i.strVal1.equals(strVal1);
        case ClassWriter.NAME_TYPE:
          return i.strVal1.equals(strVal1) &&
                 i.strVal2.equals(strVal2);
        //case ClassWriter.FIELD:
        //case ClassWriter.METH:
        //case ClassWriter.IMETH:
        default:
          return i.strVal1.equals(strVal1) &&
                 i.strVal2.equals(strVal2) &&
                 i.strVal3.equals(strVal3);
      }
    }
    return false;
  
voidset(int intVal)
Sets this item to an {@link ClassWriter#INT INT} item.

param
intVal the value of this item.

    this.type = ClassWriter.INT;
    this.intVal = intVal;
    this.hashCode = 0x7FFFFFFF & (type + intVal);
  
voidset(long longVal)
Sets this item to a {@link ClassWriter#LONG LONG} item.

param
longVal the value of this item.

    this.type = ClassWriter.LONG;
    this.longVal = longVal;
    this.hashCode = 0x7FFFFFFF & (type + (int)longVal);
  
voidset(float floatVal)
Sets this item to a {@link ClassWriter#FLOAT FLOAT} item.

param
floatVal the value of this item.

    this.type = ClassWriter.FLOAT;
    this.floatVal = floatVal;
    this.hashCode = 0x7FFFFFFF & (type + (int)floatVal);
  
voidset(double doubleVal)
Sets this item to a {@link ClassWriter#DOUBLE DOUBLE} item.

param
doubleVal the value of this item.

    this.type = ClassWriter.DOUBLE;
    this.doubleVal = doubleVal;
    this.hashCode = 0x7FFFFFFF & (type + (int)doubleVal);
  
voidset(int type, java.lang.String strVal1, java.lang.String strVal2, java.lang.String strVal3)
Sets this item to an item that do not hold a primitive value.

param
type the type of this item.
param
strVal1 first part of the value of this item.
param
strVal2 second part of the value of this item.
param
strVal3 third part of the value of this item.

    this.type = type;
    this.strVal1 = strVal1;
    this.strVal2 = strVal2;
    this.strVal3 = strVal3;
    switch (type) {
      case ClassWriter.UTF8:
      case ClassWriter.STR:
      case ClassWriter.CLASS:
        hashCode = 0x7FFFFFFF & (type + strVal1.hashCode());
        return;
      case ClassWriter.NAME_TYPE:
        hashCode = 0x7FFFFFFF & (type + strVal1.hashCode()*strVal2.hashCode());
        return;
      //case ClassWriter.FIELD:
      //case ClassWriter.METH:
      //case ClassWriter.IMETH:
      default:
        hashCode = 0x7FFFFFFF & (type +
          strVal1.hashCode()*strVal2.hashCode()*strVal3.hashCode());
    }