/*
* reserved comment block
* DO NOT REMOVE OR ALTER!
*/
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache BCEL" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache BCEL", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
*/
/**
* Abstract super class for all possible java types, namely basic types
* such as int, object types like String and array types, e.g. int[]
*
* @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A>
*/
protected byte type;
/** Predefined constants
*/
"<unknown object>"){};
type = t;
signature = s;
}
/**
* @return signature for given type.
*/
/**
* @return type as defined in Constants
*/
/**
* @return stack size of this type (2 for long and double, 0 for void, 1 otherwise)
*/
public int getSize() {
switch(type) {
default: return 1;
}
}
/**
* @return Type string, e.g. `int[]'
*/
}
/**
* Convert type to Java method signature, e.g. int[] f(java.lang.String x)
*
* @param return_type what the method returns
* @param arg_types what are the argument types
* @return method signature for given type(s).
*/
for(int i=0; i < length; i++)
}
/**
* Convert signature to a Type object.
* @return type object
*/
{
consumed_chars = 1;
int dim=0;
do { // Count dimensions
dim++;
// Recurse, but just once, if the signature is ok
} else { // type == T_REFERENCE
if(index < 0)
}
}
/**
* Convert return value of a method (signature) to a Type object.
*
* @return return type
*/
try {
// Read return type after `)'
} catch(StringIndexOutOfBoundsException e) { // Should never occur
}
}
/**
* Convert arguments of a method (signature) to an array of Type objects.
* @return array of argument types
*/
int index;
try { // Read all declarations between for `(' and `)'
}
} catch(StringIndexOutOfBoundsException e) { // Should never occur
}
return types;
}
/** Convert runtime java.lang.Class to BCEL Type object.
* @param cl Java class
* @return corresponding Type object
*/
throw new IllegalArgumentException("Class must not be null");
}
/* That's an amzingly easy case, because getName() returns
* the signature. That's what we would have liked anyway.
*/
} else if(cl.isPrimitive()) {
return INT;
return VOID;
return DOUBLE;
return FLOAT;
return BOOLEAN;
return BYTE;
return SHORT;
return BYTE;
return LONG;
return CHAR;
} else {
}
} else { // "Real" class
}
}
}
}
}