joeq.UTF
Class Utf8

java.lang.Object
  extended by joeq.UTF.Utf8
All Implemented Interfaces:
jq_ClassFileConstants

public class Utf8
extends Object
implements jq_ClassFileConstants

TODO: ummm, synchronization?!

Version:
$Id: Utf8.java 1931 2004-09-22 22:17:47Z joewhaley $
Author:
John Whaley

Nested Class Summary
 class Utf8.MethodDescriptorIterator
           
 
Field Summary
static Utf8 BOOLEAN_DESC
           
static Utf8 BYTE_DESC
           
static int[][] chains
           
static Utf8 CHAR_DESC
           
static boolean DEBUG
           
static Utf8 DOUBLE_DESC
           
static Utf8 FLOAT_DESC
           
static Utf8 INT_DESC
           
static Utf8 LONG_DESC
           
static boolean NO_NEW
           
static Utf8 SHORT_DESC
           
static int size
           
static int STARTING_CHAIN_SIZE
           
static int STARTING_HASH_SIZE
           
static int STARTING_TABLE_SIZE
           
static Utf8[] table
           
static boolean TRACE
           
static boolean USE_CACHE
           
static Utf8 VOID_DESC
           
 
Fields inherited from interface joeq.Class.jq_ClassFileConstants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, CONSTANT_Class, CONSTANT_Double, CONSTANT_FieldRef, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodRef, CONSTANT_Long, CONSTANT_MethodRef, CONSTANT_NameAndType, CONSTANT_ResolvedClass, CONSTANT_ResolvedIFieldRef, CONSTANT_ResolvedIMethodRef, CONSTANT_ResolvedSFieldRef, CONSTANT_ResolvedSMethodRef, CONSTANT_String, CONSTANT_Utf8, CONSUME_STACK, ILLEGAL_OPCODE, ILLEGAL_TYPE, jbc_AALOAD, jbc_AASTORE, jbc_ACONST_NULL, jbc_ALOAD, jbc_ALOAD_0, jbc_ALOAD_1, jbc_ALOAD_2, jbc_ALOAD_3, jbc_ANEWARRAY, jbc_ARETURN, jbc_ARRAYLENGTH, jbc_ASTORE, jbc_ASTORE_0, jbc_ASTORE_1, jbc_ASTORE_2, jbc_ASTORE_3, jbc_ATHROW, jbc_BALOAD, jbc_BASTORE, jbc_BIPUSH, jbc_BREAKPOINT, jbc_CALOAD, jbc_CASTORE, jbc_CHECKCAST, jbc_D2F, jbc_D2I, jbc_D2L, jbc_DADD, jbc_DALOAD, jbc_DASTORE, jbc_DCMPG, jbc_DCMPL, jbc_DCONST_0, jbc_DCONST_1, jbc_DDIV, jbc_DLOAD, jbc_DLOAD_0, jbc_DLOAD_1, jbc_DLOAD_2, jbc_DLOAD_3, jbc_DMUL, jbc_DNEG, jbc_DREM, jbc_DRETURN, jbc_DSTORE, jbc_DSTORE_0, jbc_DSTORE_1, jbc_DSTORE_2, jbc_DSTORE_3, jbc_DSUB, jbc_DUP, jbc_DUP_X1, jbc_DUP_X2, jbc_DUP2, jbc_DUP2_X1, jbc_DUP2_X2, jbc_F2D, jbc_F2I, jbc_F2L, jbc_FADD, jbc_FALOAD, jbc_FASTORE, jbc_FCMPG, jbc_FCMPL, jbc_FCONST_0, jbc_FCONST_1, jbc_FCONST_2, jbc_FDIV, jbc_FLOAD, jbc_FLOAD_0, jbc_FLOAD_1, jbc_FLOAD_2, jbc_FLOAD_3, jbc_FMUL, jbc_FNEG, jbc_FREM, jbc_FRETURN, jbc_FSTORE, jbc_FSTORE_0, jbc_FSTORE_1, jbc_FSTORE_2, jbc_FSTORE_3, jbc_FSUB, jbc_GETFIELD, jbc_GETSTATIC, jbc_GOTO, jbc_GOTO_W, jbc_I2B, jbc_I2C, jbc_I2D, jbc_I2F, jbc_I2L, jbc_I2S, jbc_IADD, jbc_IALOAD, jbc_IAND, jbc_IASTORE, jbc_ICONST_0, jbc_ICONST_1, jbc_ICONST_2, jbc_ICONST_3, jbc_ICONST_4, jbc_ICONST_5, jbc_ICONST_M1, jbc_IDIV, jbc_IF_ACMPEQ, jbc_IF_ACMPNE, jbc_IF_ICMPEQ, jbc_IF_ICMPGE, jbc_IF_ICMPGT, jbc_IF_ICMPLE, jbc_IF_ICMPLT, jbc_IF_ICMPNE, jbc_IFEQ, jbc_IFGE, jbc_IFGT, jbc_IFLE, jbc_IFLT, jbc_IFNE, jbc_IFNONNULL, jbc_IFNULL, jbc_IINC, jbc_ILOAD, jbc_ILOAD_0, jbc_ILOAD_1, jbc_ILOAD_2, jbc_ILOAD_3, jbc_IMUL, jbc_INEG, jbc_INSTANCEOF, jbc_INT2BYTE, jbc_INT2CHAR, jbc_INT2SHORT, jbc_INVOKEINTERFACE, jbc_INVOKENONVIRTUAL, jbc_INVOKESPECIAL, jbc_INVOKESTATIC, jbc_INVOKEVIRTUAL, jbc_IOR, jbc_IREM, jbc_IRETURN, jbc_ISHL, jbc_ISHR, jbc_ISTORE, jbc_ISTORE_0, jbc_ISTORE_1, jbc_ISTORE_2, jbc_ISTORE_3, jbc_ISUB, jbc_IUSHR, jbc_IXOR, jbc_JSR, jbc_JSR_W, jbc_L2D, jbc_L2F, jbc_L2I, jbc_LADD, jbc_LALOAD, jbc_LAND, jbc_LASTORE, jbc_LCMP, jbc_LCONST_0, jbc_LCONST_1, jbc_LDC, jbc_LDC_W, jbc_LDC2_W, jbc_LDIV, jbc_LLOAD, jbc_LLOAD_0, jbc_LLOAD_1, jbc_LLOAD_2, jbc_LLOAD_3, jbc_LMUL, jbc_LNEG, jbc_LOOKUPSWITCH, jbc_LOR, jbc_LREM, jbc_LRETURN, jbc_LSHL, jbc_LSHR, jbc_LSTORE, jbc_LSTORE_0, jbc_LSTORE_1, jbc_LSTORE_2, jbc_LSTORE_3, jbc_LSUB, jbc_LUSHR, jbc_LXOR, jbc_MONITORENTER, jbc_MONITOREXIT, jbc_MULTIANEWARRAY, jbc_NEW, jbc_NEWARRAY, jbc_NOP, jbc_POP, jbc_POP2, jbc_PUTFIELD, jbc_PUTSTATIC, jbc_RET, jbc_RETURN, jbc_SALOAD, jbc_SASTORE, jbc_SIPUSH, jbc_SWAP, jbc_TABLESWITCH, jbc_WIDE, NO_OF_OPERANDS, OPCODE_NAMES, PRODUCE_STACK, RESERVED, STATE_CLSINITERROR, STATE_CLSINITIALIZED, STATE_CLSINITIALIZING, STATE_CLSINITRUNNING, STATE_COMPILED, STATE_COMPILING, STATE_LOADED, STATE_LOADERROR, STATE_LOADING1, STATE_LOADING2, STATE_LOADING3, STATE_PREPARED, STATE_PREPAREERROR, STATE_PREPARING, STATE_SFINITERROR, STATE_SFINITIALIZED, STATE_SFINITIALIZING, STATE_UNLOADED, STATE_VERIFIED, STATE_VERIFYERROR, STATE_VERIFYING, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TC_ARRAY, TC_BOOLEAN, TC_BYTE, TC_CHAR, TC_CLASS, TC_CLASSEND, TC_DOUBLE, TC_FLOAT, TC_INT, TC_LONG, TC_PARAM, TC_PARAMEND, TC_SHORT, TC_VOID, TYPE_OF_OPERANDS, UNDEFINED, UNPREDICTABLE
 
Method Summary
static boolean checkUtf8(byte[] bytes)
          Check whether the given sequence of bytes is valid (pseudo-)utf8.
 void debugWrite()
           
 void dump(DataOutput out)
           
static String fromUtf8(byte[] utf8)
          Convert the given sequence of (pseudo-)utf8 formatted bytes into a String.
static Utf8 get(byte[] b)
           
static Utf8 get(byte[] b, int startIndex, int endIndex)
           
static Utf8 get(String s)
           
 Utf8 getArrayElementDescriptor()
           
 Utf8 getAsArrayDescriptor()
           
 Utf8 getAsClassDescriptor()
           
 Utf8 getClassName()
           
static int getID(byte[] b)
           
static int getID(byte[] b, int startIndex, int endIndex)
           
 Utf8.MethodDescriptorIterator getParamDescriptors()
           
 int hashCode()
           
static int hashCode(byte[] data)
           
static int hashCode(byte[] data, int startIndex, int endIndex)
           
 boolean isDescriptor(byte desc)
           
 boolean isValidMethodDescriptor()
           
 boolean isValidTypeDescriptor()
           
static int lengthUtf8(String s)
          Returns the length of a string's utf8 encoded form.
 String toString()
           
static byte[] toUtf8(String s)
          Convert the given String into a sequence of (pseudo-)utf8 formatted bytes.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

TRACE

public static boolean TRACE

STARTING_TABLE_SIZE

public static final int STARTING_TABLE_SIZE
See Also:
Constant Field Values

STARTING_HASH_SIZE

public static final int STARTING_HASH_SIZE
See Also:
Constant Field Values

STARTING_CHAIN_SIZE

public static final int STARTING_CHAIN_SIZE
See Also:
Constant Field Values

table

public static Utf8[] table

size

public static int size

chains

public static int[][] chains

BYTE_DESC

public static final Utf8 BYTE_DESC

CHAR_DESC

public static final Utf8 CHAR_DESC

DOUBLE_DESC

public static final Utf8 DOUBLE_DESC

FLOAT_DESC

public static final Utf8 FLOAT_DESC

INT_DESC

public static final Utf8 INT_DESC

LONG_DESC

public static final Utf8 LONG_DESC

SHORT_DESC

public static final Utf8 SHORT_DESC

BOOLEAN_DESC

public static final Utf8 BOOLEAN_DESC

VOID_DESC

public static final Utf8 VOID_DESC

NO_NEW

public static boolean NO_NEW

USE_CACHE

public static final boolean USE_CACHE
See Also:
Constant Field Values

DEBUG

public static final boolean DEBUG
See Also:
Constant Field Values
Method Detail

get

public static Utf8 get(String s)

get

public static Utf8 get(byte[] b)

get

public static Utf8 get(byte[] b,
                       int startIndex,
                       int endIndex)

getID

public static int getID(byte[] b)

getID

public static int getID(byte[] b,
                        int startIndex,
                        int endIndex)

isValidMethodDescriptor

public boolean isValidMethodDescriptor()

isValidTypeDescriptor

public boolean isValidTypeDescriptor()

isDescriptor

public boolean isDescriptor(byte desc)

getArrayElementDescriptor

public Utf8 getArrayElementDescriptor()

getClassName

public Utf8 getClassName()

getAsArrayDescriptor

public Utf8 getAsArrayDescriptor()

getAsClassDescriptor

public Utf8 getAsClassDescriptor()

getParamDescriptors

public Utf8.MethodDescriptorIterator getParamDescriptors()

hashCode

public static int hashCode(byte[] data)

hashCode

public static int hashCode(byte[] data,
                           int startIndex,
                           int endIndex)

hashCode

public int hashCode()
Overrides:
hashCode in class Object

toString

public String toString()
Overrides:
toString in class Object

dump

public void dump(DataOutput out)
          throws IOException
Throws:
IOException

debugWrite

public void debugWrite()

fromUtf8

public static String fromUtf8(byte[] utf8)
                       throws UTFDataFormatError
Convert the given sequence of (pseudo-)utf8 formatted bytes into a String. The acceptable input formats are controlled by the STRICTLY_CHECK_FORMAT, ALLOW_NORMAL_UTF8, and ALLOW_PSEUDO_UTF8 flags.

Parameters:
utf8 - (pseudo-)utf8 byte array
Returns:
unicode string
Throws:
UTFDataFormatError - if the (pseudo-)utf8 byte array is not valid (pseudo-)utf8

toUtf8

public static byte[] toUtf8(String s)
Convert the given String into a sequence of (pseudo-)utf8 formatted bytes. The output format is controlled by the WRITE_PSEUDO_UTF8 flag.

Parameters:
s - String to convert
Returns:
array containing sequence of (pseudo-)utf8 formatted bytes

lengthUtf8

public static int lengthUtf8(String s)
Returns the length of a string's utf8 encoded form.


checkUtf8

public static boolean checkUtf8(byte[] bytes)
Check whether the given sequence of bytes is valid (pseudo-)utf8.

Parameters:
bytes - byte array to check
Returns:
true iff the given sequence is valid (pseudo-)utf8.


Copyright © 2001-2008 John Whaley. All Rights Reserved.