本文整理汇总了Java中com.sun.org.apache.bcel.internal.Constants.T_ARRAY属性的典型用法代码示例。如果您正苦于以下问题:Java Constants.T_ARRAY属性的具体用法?Java Constants.T_ARRAY怎么用?Java Constants.T_ARRAY使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类com.sun.org.apache.bcel.internal.Constants
的用法示例。
在下文中一共展示了Constants.T_ARRAY属性的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: createAppend
public Instruction createAppend(Type type) {
byte t = type.getType();
if(isString(type))
return createInvoke(append_mos[0], Constants.INVOKEVIRTUAL);
switch(t) {
case Constants.T_BOOLEAN:
case Constants.T_CHAR:
case Constants.T_FLOAT:
case Constants.T_DOUBLE:
case Constants.T_BYTE:
case Constants.T_SHORT:
case Constants.T_INT:
case Constants.T_LONG
: return createInvoke(append_mos[t], Constants.INVOKEVIRTUAL);
case Constants.T_ARRAY:
case Constants.T_OBJECT:
return createInvoke(append_mos[1], Constants.INVOKEVIRTUAL);
default:
throw new RuntimeException("Oops: No append for this type? " + type);
}
}
示例2: createReturn
/** Create typed return
*/
public static ReturnInstruction createReturn(Type type) {
switch(type.getType()) {
case Constants.T_ARRAY:
case Constants.T_OBJECT: return ARETURN;
case Constants.T_INT:
case Constants.T_SHORT:
case Constants.T_BOOLEAN:
case Constants.T_CHAR:
case Constants.T_BYTE: return IRETURN;
case Constants.T_FLOAT: return FRETURN;
case Constants.T_DOUBLE: return DRETURN;
case Constants.T_LONG: return LRETURN;
case Constants.T_VOID: return RETURN;
default:
throw new RuntimeException("Invalid type: " + type);
}
}
示例3: createStore
/**
* @param index index of local variable
*/
public static LocalVariableInstruction createStore(Type type, int index) {
switch(type.getType()) {
case Constants.T_BOOLEAN:
case Constants.T_CHAR:
case Constants.T_BYTE:
case Constants.T_SHORT:
case Constants.T_INT: return new ISTORE(index);
case Constants.T_FLOAT: return new FSTORE(index);
case Constants.T_DOUBLE: return new DSTORE(index);
case Constants.T_LONG: return new LSTORE(index);
case Constants.T_ARRAY:
case Constants.T_OBJECT: return new ASTORE(index);
default: throw new RuntimeException("Invalid type " + type);
}
}
示例4: createLoad
/**
* @param index index of local variable
*/
public static LocalVariableInstruction createLoad(Type type, int index) {
switch(type.getType()) {
case Constants.T_BOOLEAN:
case Constants.T_CHAR:
case Constants.T_BYTE:
case Constants.T_SHORT:
case Constants.T_INT: return new ILOAD(index);
case Constants.T_FLOAT: return new FLOAD(index);
case Constants.T_DOUBLE: return new DLOAD(index);
case Constants.T_LONG: return new LLOAD(index);
case Constants.T_ARRAY:
case Constants.T_OBJECT: return new ALOAD(index);
default: throw new RuntimeException("Invalid type " + type);
}
}
示例5: createArrayLoad
/**
* @param type type of elements of array, i.e., array.getElementType()
*/
public static ArrayInstruction createArrayLoad(Type type) {
switch(type.getType()) {
case Constants.T_BOOLEAN:
case Constants.T_BYTE: return BALOAD;
case Constants.T_CHAR: return CALOAD;
case Constants.T_SHORT: return SALOAD;
case Constants.T_INT: return IALOAD;
case Constants.T_FLOAT: return FALOAD;
case Constants.T_DOUBLE: return DALOAD;
case Constants.T_LONG: return LALOAD;
case Constants.T_ARRAY:
case Constants.T_OBJECT: return AALOAD;
default: throw new RuntimeException("Invalid type " + type);
}
}
示例6: createArrayStore
/**
* @param type type of elements of array, i.e., array.getElementType()
*/
public static ArrayInstruction createArrayStore(Type type) {
switch(type.getType()) {
case Constants.T_BOOLEAN:
case Constants.T_BYTE: return BASTORE;
case Constants.T_CHAR: return CASTORE;
case Constants.T_SHORT: return SASTORE;
case Constants.T_INT: return IASTORE;
case Constants.T_FLOAT: return FASTORE;
case Constants.T_DOUBLE: return DASTORE;
case Constants.T_LONG: return LASTORE;
case Constants.T_ARRAY:
case Constants.T_OBJECT: return AASTORE;
default: throw new RuntimeException("Invalid type " + type);
}
}
示例7: createNull
/** Create "null" value for reference types, 0 for basic types like int
*/
public static Instruction createNull(Type type) {
switch(type.getType()) {
case Constants.T_ARRAY:
case Constants.T_OBJECT: return ACONST_NULL;
case Constants.T_INT:
case Constants.T_SHORT:
case Constants.T_BOOLEAN:
case Constants.T_CHAR:
case Constants.T_BYTE: return ICONST_0;
case Constants.T_FLOAT: return FCONST_0;
case Constants.T_DOUBLE: return DCONST_0;
case Constants.T_LONG: return LCONST_0;
case Constants.T_VOID: return NOP;
default:
throw new RuntimeException("Invalid type: " + type);
}
}
示例8: typeOfSignature
/**
* Return type of signature as a byte value as defined in <em>Constants</em>
*
* @param signature in format described above
* @return type of signature
* @see Constants
*/
public static final byte typeOfSignature(String signature)
throws ClassFormatException
{
try {
switch(signature.charAt(0)) {
case 'B' : return Constants.T_BYTE;
case 'C' : return Constants.T_CHAR;
case 'D' : return Constants.T_DOUBLE;
case 'F' : return Constants.T_FLOAT;
case 'I' : return Constants.T_INT;
case 'J' : return Constants.T_LONG;
case 'L' : return Constants.T_REFERENCE;
case '[' : return Constants.T_ARRAY;
case 'V' : return Constants.T_VOID;
case 'Z' : return Constants.T_BOOLEAN;
case 'S' : return Constants.T_SHORT;
default:
throw new ClassFormatException("Invalid method signature: " + signature);
}
} catch(StringIndexOutOfBoundsException e) {
throw new ClassFormatException("Invalid method signature: " + signature);
}
}
示例9: ArrayType
/**
* Constructor for array of given type
*
* @param type type of array (may be an array itself)
*/
public ArrayType(Type type, int dimensions) {
super(Constants.T_ARRAY, "<dummy>");
if((dimensions < 1) || (dimensions > Constants.MAX_BYTE))
throw new ClassGenException("Invalid number of dimensions: " + dimensions);
switch(type.getType()) {
case Constants.T_ARRAY:
ArrayType array = (ArrayType)type;
this.dimensions = dimensions + array.dimensions;
basic_type = array.basic_type;
break;
case Constants.T_VOID:
throw new ClassGenException("Invalid type: void[]");
default: // Basic type or reference
this.dimensions = dimensions;
basic_type = type;
break;
}
StringBuffer buf = new StringBuffer();
for(int i=0; i < this.dimensions; i++)
buf.append('[');
buf.append(basic_type.getSignature());
signature = buf.toString();
}
示例10: getType
/**
* Convert signature to a Type object.
* @param signature signature string such as Ljava/lang/String;
* @return type object
*/
public static final Type getType(String signature)
throws StringIndexOutOfBoundsException
{
byte type = Utility.typeOfSignature(signature);
if(type <= Constants.T_VOID) {
consumed_chars = 1;
return BasicType.getType(type);
} else if(type == Constants.T_ARRAY) {
int dim=0;
do { // Count dimensions
dim++;
} while(signature.charAt(dim) == '[');
// Recurse, but just once, if the signature is ok
Type t = getType(signature.substring(dim));
consumed_chars += dim; // update counter
return new ArrayType(t, dim);
} else { // type == T_REFERENCE
int index = signature.indexOf(';'); // Look for closing `;'
if(index < 0)
throw new ClassFormatException("Invalid signature: " + signature);
consumed_chars = index + 1; // "Lblabla;" `L' and `;' are removed
return new ObjectType(signature.substring(1, index).replace('/', '.'));
}
}