You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bcel-dev@jakarta.apache.org by tc...@apache.org on 2006/03/15 12:33:43 UTC
svn commit: r386056 [7/28] - in /jakarta/bcel/trunk: examples/
examples/Mini/ src/java/org/apache/bcel/
src/java/org/apache/bcel/classfile/ src/java/org/apache/bcel/generic/
src/java/org/apache/bcel/util/ src/java/org/apache/bcel/verifier/
src/java/org...
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Method.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Method.java?rev=386056&r1=386055&r2=386056&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Method.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Method.java Wed Mar 15 03:31:56 2006
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
- */
+ */
package org.apache.bcel.classfile;
import java.io.DataInputStream;
@@ -31,226 +31,224 @@
* @author <A HREF="mailto:m.dahm@gmx.de">M. Dahm</A>
*/
public final class Method extends FieldOrMethod {
- private static BCELComparator _cmp = new BCELComparator() {
- public boolean equals(Object o1, Object o2) {
- Method THIS = (Method)o1;
- Method THAT = (Method)o2;
-
- return THIS.getName().equals(THAT.getName())
- && THIS.getSignature().equals(THAT.getSignature());
- }
-
- public int hashCode(Object o) {
- Method THIS = (Method)o;
- return THIS.getSignature().hashCode() ^ THIS.getName().hashCode();
- }
- };
-
- /**
- * Empty constructor, all attributes have to be defined via `setXXX'
- * methods. Use at your own risk.
- */
- public Method() {
- }
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use clone() for a physical copy.
- */
- public Method(Method c) {
- super(c);
- }
-
- /**
- * Construct object from file stream.
- * @param file Input stream
- * @throws IOException
- * @throws ClassFormatException
- */
- Method(DataInputStream file, ConstantPool constant_pool)
- throws IOException, ClassFormatException {
- super(file, constant_pool);
- }
-
- /**
- * @param access_flags Access rights of method
- * @param name_index Points to field name in constant pool
- * @param signature_index Points to encoded signature
- * @param attributes Collection of attributes
- * @param constant_pool Array of constants
- */
- public Method(
- int access_flags,
- int name_index,
- int signature_index,
- Attribute[] attributes,
- ConstantPool constant_pool) {
- super(access_flags, name_index, signature_index, attributes, constant_pool);
- }
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept(Visitor v) {
- v.visitMethod(this);
- }
-
- /**
- * @return Code attribute of method, if any
- */
- public final Code getCode() {
- for (int i = 0; i < attributes_count; i++)
- if (attributes[i] instanceof Code)
- return (Code)attributes[i];
-
- return null;
- }
-
- /**
- * @return ExceptionTable attribute of method, if any, i.e., list all
- * exceptions the method may throw not exception handlers!
- */
- public final ExceptionTable getExceptionTable() {
- for (int i = 0; i < attributes_count; i++)
- if (attributes[i] instanceof ExceptionTable)
- return (ExceptionTable)attributes[i];
-
- return null;
- }
-
- /** @return LocalVariableTable of code attribute if any, i.e. the call is forwarded
- * to the Code atribute.
- */
- public final LocalVariableTable getLocalVariableTable() {
- Code code = getCode();
-
- if (code == null)
- return null;
-
- return code.getLocalVariableTable();
- }
-
- /** @return LineNumberTable of code attribute if any, i.e. the call is forwarded
- * to the Code atribute.
- */
- public final LineNumberTable getLineNumberTable() {
- Code code = getCode();
-
- if (code == null)
- return null;
-
- return code.getLineNumberTable();
- }
-
- /**
- * Return string representation close to declaration format,
- * `public static void main(String[] args) throws IOException', e.g.
- *
- * @return String representation of the method.
- */
- public final String toString() {
- ConstantUtf8 c;
- String name, signature, access; // Short cuts to constant pool
- StringBuffer buf;
-
- access = Utility.accessToString(access_flags);
-
- // Get name and signature from constant pool
- c =
- (ConstantUtf8)constant_pool.getConstant(
- signature_index,
- Constants.CONSTANT_Utf8);
- signature = c.getBytes();
-
- c =
- (ConstantUtf8)constant_pool.getConstant(
- name_index,
- Constants.CONSTANT_Utf8);
- name = c.getBytes();
-
- signature =
- Utility.methodSignatureToString(
- signature,
- name,
- access,
- true,
- getLocalVariableTable());
- buf = new StringBuffer(signature);
-
- for (int i = 0; i < attributes_count; i++) {
- Attribute a = attributes[i];
-
- if (!((a instanceof Code) || (a instanceof ExceptionTable)))
- buf.append(" [").append(a.toString()).append("]");
- }
-
- ExceptionTable e = getExceptionTable();
- if (e != null) {
- String str = e.toString();
- if (!str.equals(""))
- buf.append("\n\t\tthrows ").append(str);
- }
-
- return buf.toString();
- }
-
- /**
- * @return deep copy of this method
- */
- public final Method copy(ConstantPool _constant_pool) {
- return (Method)copy_(_constant_pool);
- }
-
- /**
- * @return return type of method
- */
- public Type getReturnType() {
- return Type.getReturnType(getSignature());
- }
-
- /**
- * @return array of method argument types
- */
- public Type[] getArgumentTypes() {
- return Type.getArgumentTypes(getSignature());
- }
-
- /**
- * @return Comparison strategy object
- */
- public static BCELComparator getComparator() {
- return _cmp;
- }
-
- /**
- * @param comparator Comparison strategy object
- */
- public static void setComparator(BCELComparator comparator) {
- _cmp = comparator;
- }
-
- /**
- * Return value as defined by given BCELComparator strategy.
- * By default two method objects are said to be equal when
- * their names and signatures are equal.
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object obj) {
- return _cmp.equals(this, obj);
- }
-
- /**
- * Return value as defined by given BCELComparator strategy.
- * By default return the hashcode of the method's name XOR signature.
- *
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return _cmp.hashCode(this);
- }
+
+ private static BCELComparator _cmp = new BCELComparator() {
+
+ public boolean equals( Object o1, Object o2 ) {
+ Method THIS = (Method) o1;
+ Method THAT = (Method) o2;
+ return THIS.getName().equals(THAT.getName())
+ && THIS.getSignature().equals(THAT.getSignature());
+ }
+
+
+ public int hashCode( Object o ) {
+ Method THIS = (Method) o;
+ return THIS.getSignature().hashCode() ^ THIS.getName().hashCode();
+ }
+ };
+
+
+ /**
+ * Empty constructor, all attributes have to be defined via `setXXX'
+ * methods. Use at your own risk.
+ */
+ public Method() {
+ }
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use clone() for a physical copy.
+ */
+ public Method(Method c) {
+ super(c);
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param file Input stream
+ * @throws IOException
+ * @throws ClassFormatException
+ */
+ Method(DataInputStream file, ConstantPool constant_pool) throws IOException,
+ ClassFormatException {
+ super(file, constant_pool);
+ }
+
+
+ /**
+ * @param access_flags Access rights of method
+ * @param name_index Points to field name in constant pool
+ * @param signature_index Points to encoded signature
+ * @param attributes Collection of attributes
+ * @param constant_pool Array of constants
+ */
+ public Method(int access_flags, int name_index, int signature_index, Attribute[] attributes,
+ ConstantPool constant_pool) {
+ super(access_flags, name_index, signature_index, attributes, constant_pool);
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitMethod(this);
+ }
+
+
+ /**
+ * @return Code attribute of method, if any
+ */
+ public final Code getCode() {
+ for (int i = 0; i < attributes_count; i++) {
+ if (attributes[i] instanceof Code) {
+ return (Code) attributes[i];
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * @return ExceptionTable attribute of method, if any, i.e., list all
+ * exceptions the method may throw not exception handlers!
+ */
+ public final ExceptionTable getExceptionTable() {
+ for (int i = 0; i < attributes_count; i++) {
+ if (attributes[i] instanceof ExceptionTable) {
+ return (ExceptionTable) attributes[i];
+ }
+ }
+ return null;
+ }
+
+
+ /** @return LocalVariableTable of code attribute if any, i.e. the call is forwarded
+ * to the Code atribute.
+ */
+ public final LocalVariableTable getLocalVariableTable() {
+ Code code = getCode();
+ if (code == null) {
+ return null;
+ }
+ return code.getLocalVariableTable();
+ }
+
+
+ /** @return LineNumberTable of code attribute if any, i.e. the call is forwarded
+ * to the Code atribute.
+ */
+ public final LineNumberTable getLineNumberTable() {
+ Code code = getCode();
+ if (code == null) {
+ return null;
+ }
+ return code.getLineNumberTable();
+ }
+
+
+ /**
+ * Return string representation close to declaration format,
+ * `public static void main(String[] args) throws IOException', e.g.
+ *
+ * @return String representation of the method.
+ */
+ public final String toString() {
+ ConstantUtf8 c;
+ String name, signature, access; // Short cuts to constant pool
+ StringBuffer buf;
+ access = Utility.accessToString(access_flags);
+ // Get name and signature from constant pool
+ c = (ConstantUtf8) constant_pool.getConstant(signature_index, Constants.CONSTANT_Utf8);
+ signature = c.getBytes();
+ c = (ConstantUtf8) constant_pool.getConstant(name_index, Constants.CONSTANT_Utf8);
+ name = c.getBytes();
+ signature = Utility.methodSignatureToString(signature, name, access, true,
+ getLocalVariableTable());
+ buf = new StringBuffer(signature);
+ for (int i = 0; i < attributes_count; i++) {
+ Attribute a = attributes[i];
+ if (!((a instanceof Code) || (a instanceof ExceptionTable))) {
+ buf.append(" [").append(a.toString()).append("]");
+ }
+ }
+ ExceptionTable e = getExceptionTable();
+ if (e != null) {
+ String str = e.toString();
+ if (!str.equals("")) {
+ buf.append("\n\t\tthrows ").append(str);
+ }
+ }
+ return buf.toString();
+ }
+
+
+ /**
+ * @return deep copy of this method
+ */
+ public final Method copy( ConstantPool _constant_pool ) {
+ return (Method) copy_(_constant_pool);
+ }
+
+
+ /**
+ * @return return type of method
+ */
+ public Type getReturnType() {
+ return Type.getReturnType(getSignature());
+ }
+
+
+ /**
+ * @return array of method argument types
+ */
+ public Type[] getArgumentTypes() {
+ return Type.getArgumentTypes(getSignature());
+ }
+
+
+ /**
+ * @return Comparison strategy object
+ */
+ public static BCELComparator getComparator() {
+ return _cmp;
+ }
+
+
+ /**
+ * @param comparator Comparison strategy object
+ */
+ public static void setComparator( BCELComparator comparator ) {
+ _cmp = comparator;
+ }
+
+
+ /**
+ * Return value as defined by given BCELComparator strategy.
+ * By default two method objects are said to be equal when
+ * their names and signatures are equal.
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals( Object obj ) {
+ return _cmp.equals(this, obj);
+ }
+
+
+ /**
+ * Return value as defined by given BCELComparator strategy.
+ * By default return the hashcode of the method's name XOR signature.
+ *
+ * @see java.lang.Object#hashCode()
+ */
+ public int hashCode() {
+ return _cmp.hashCode(this);
+ }
}
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Node.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Node.java?rev=386056&r1=386055&r2=386056&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Node.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Node.java Wed Mar 15 03:31:56 2006
@@ -13,10 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
- */
+ */
package org.apache.bcel.classfile;
-
/**
* Denote class to have an accept method();
*
@@ -24,5 +23,6 @@
* @author <A HREF="mailto:m.dahm@gmx.de">M. Dahm</A>
*/
public interface Node {
- public void accept(Visitor obj);
+
+ public void accept( Visitor obj );
}
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/PMGClass.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/PMGClass.java?rev=386056&r1=386055&r2=386056&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/PMGClass.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/PMGClass.java Wed Mar 15 03:31:56 2006
@@ -13,10 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
- */
+ */
package org.apache.bcel.classfile;
-
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
@@ -31,124 +30,138 @@
* @see Attribute
*/
public final class PMGClass extends Attribute {
- private int pmg_class_index, pmg_index;
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use clone() for a physical copy.
- */
- public PMGClass(PMGClass c) {
- this(c.getNameIndex(), c.getLength(), c.getPMGIndex(), c.getPMGClassIndex(),
- c.getConstantPool());
- }
-
- /**
- * Construct object from file stream.
- * @param name_index Index in constant pool to CONSTANT_Utf8
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- * @throws IOException
- */
- PMGClass(int name_index, int length, DataInputStream file,
- ConstantPool constant_pool) throws IOException
- {
- this(name_index, length, file.readUnsignedShort(), file.readUnsignedShort(),
- constant_pool);
- }
-
- /**
- * @param name_index Index in constant pool to CONSTANT_Utf8
- * @param length Content length in bytes
- * @param pmg_index index in constant pool for source file name
- * @param pmg_class_index Index in constant pool to CONSTANT_Utf8
- * @param constant_pool Array of constants
- */
- public PMGClass(int name_index, int length, int pmg_index, int pmg_class_index,
- ConstantPool constant_pool)
- {
- super(Constants.ATTR_PMG, name_index, length, constant_pool);
- this.pmg_index = pmg_index;
- this.pmg_class_index = pmg_class_index;
- }
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept(Visitor v) {
- System.err.println("Visiting non-standard PMGClass object");
- }
-
- /**
- * Dump source file attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump(DataOutputStream file) throws IOException
- {
- super.dump(file);
- file.writeShort(pmg_index);
- file.writeShort(pmg_class_index);
- }
-
- /**
- * @return Index in constant pool of source file name.
- */
- public final int getPMGClassIndex() { return pmg_class_index; }
-
- /**
- * @param pmg_class_index
- */
- public final void setPMGClassIndex(int pmg_class_index) {
- this.pmg_class_index = pmg_class_index;
- }
-
- /**
- * @return Index in constant pool of source file name.
- */
- public final int getPMGIndex() { return pmg_index; }
-
- /**
- * @param pmg_index
- */
- public final void setPMGIndex(int pmg_index) {
- this.pmg_index = pmg_index;
- }
-
- /**
- * @return PMG name.
- */
- public final String getPMGName() {
- ConstantUtf8 c = (ConstantUtf8)constant_pool.getConstant(pmg_index,
- Constants.CONSTANT_Utf8);
- return c.getBytes();
- }
-
- /**
- * @return PMG class name.
- */
- public final String getPMGClassName() {
- ConstantUtf8 c = (ConstantUtf8)constant_pool.getConstant(pmg_class_index,
- Constants.CONSTANT_Utf8);
- return c.getBytes();
- }
-
- /**
- * @return String representation
- */
- public final String toString() {
- return "PMGClass(" + getPMGName() + ", " + getPMGClassName() + ")";
- }
-
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy(ConstantPool _constant_pool) {
- return (PMGClass)clone();
- }
+ private int pmg_class_index, pmg_index;
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use clone() for a physical copy.
+ */
+ public PMGClass(PMGClass c) {
+ this(c.getNameIndex(), c.getLength(), c.getPMGIndex(), c.getPMGClassIndex(), c
+ .getConstantPool());
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param name_index Index in constant pool to CONSTANT_Utf8
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @throws IOException
+ */
+ PMGClass(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ this(name_index, length, file.readUnsignedShort(), file.readUnsignedShort(), constant_pool);
+ }
+
+
+ /**
+ * @param name_index Index in constant pool to CONSTANT_Utf8
+ * @param length Content length in bytes
+ * @param pmg_index index in constant pool for source file name
+ * @param pmg_class_index Index in constant pool to CONSTANT_Utf8
+ * @param constant_pool Array of constants
+ */
+ public PMGClass(int name_index, int length, int pmg_index, int pmg_class_index,
+ ConstantPool constant_pool) {
+ super(Constants.ATTR_PMG, name_index, length, constant_pool);
+ this.pmg_index = pmg_index;
+ this.pmg_class_index = pmg_class_index;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ System.err.println("Visiting non-standard PMGClass object");
+ }
+
+
+ /**
+ * Dump source file attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ file.writeShort(pmg_index);
+ file.writeShort(pmg_class_index);
+ }
+
+
+ /**
+ * @return Index in constant pool of source file name.
+ */
+ public final int getPMGClassIndex() {
+ return pmg_class_index;
+ }
+
+
+ /**
+ * @param pmg_class_index
+ */
+ public final void setPMGClassIndex( int pmg_class_index ) {
+ this.pmg_class_index = pmg_class_index;
+ }
+
+
+ /**
+ * @return Index in constant pool of source file name.
+ */
+ public final int getPMGIndex() {
+ return pmg_index;
+ }
+
+
+ /**
+ * @param pmg_index
+ */
+ public final void setPMGIndex( int pmg_index ) {
+ this.pmg_index = pmg_index;
+ }
+
+
+ /**
+ * @return PMG name.
+ */
+ public final String getPMGName() {
+ ConstantUtf8 c = (ConstantUtf8) constant_pool.getConstant(pmg_index,
+ Constants.CONSTANT_Utf8);
+ return c.getBytes();
+ }
+
+
+ /**
+ * @return PMG class name.
+ */
+ public final String getPMGClassName() {
+ ConstantUtf8 c = (ConstantUtf8) constant_pool.getConstant(pmg_class_index,
+ Constants.CONSTANT_Utf8);
+ return c.getBytes();
+ }
+
+
+ /**
+ * @return String representation
+ */
+ public final String toString() {
+ return "PMGClass(" + getPMGName() + ", " + getPMGClassName() + ")";
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ return (PMGClass) clone();
+ }
}
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java?rev=386056&r1=386055&r2=386056&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java Wed Mar 15 03:31:56 2006
@@ -20,53 +20,56 @@
import java.io.IOException;
import org.apache.bcel.Constants;
-
/**
* represents one parameter annotation in the parameter annotation table
*
* @version $Id: ParameterAnnotationEntry
* @author <A HREF="mailto:dbrosius@qis.net">D. Brosius</A>
*/
-public class ParameterAnnotationEntry implements Node, Constants
-{
- private int annotation_table_length;
- private AnnotationEntry[] annotation_table;
-
- /**
- * Construct object from file stream.
- * @param file Input stream
- * @throws IOException
- */
- ParameterAnnotationEntry(DataInputStream file, ConstantPool constant_pool)
- throws IOException
- {
- annotation_table_length = (file.readUnsignedShort());
-
- annotation_table = new AnnotationEntry[annotation_table_length];
- for(int i=0; i < annotation_table_length; i++)
- annotation_table[i] = new AnnotationEntry(file, constant_pool);
- }
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept(Visitor v) {
-// v.visitParameterAnnotationEntry(this);
- }
-
- /**
- * @return the number of annotation entries in this parameter annotation
- */
- public final int getNumAnnotations() { return annotation_table_length; }
-
- /**
- * returns the array of annotation entries in this annotation
- */
- public AnnotationEntry[] getAnnotationEntries() {
- return annotation_table;
- }
+public class ParameterAnnotationEntry implements Node, Constants {
+
+ private int annotation_table_length;
+ private AnnotationEntry[] annotation_table;
+
+
+ /**
+ * Construct object from file stream.
+ * @param file Input stream
+ * @throws IOException
+ */
+ ParameterAnnotationEntry(DataInputStream file, ConstantPool constant_pool) throws IOException {
+ annotation_table_length = (file.readUnsignedShort());
+ annotation_table = new AnnotationEntry[annotation_table_length];
+ for (int i = 0; i < annotation_table_length; i++) {
+ annotation_table[i] = new AnnotationEntry(file, constant_pool);
+ }
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ // v.visitParameterAnnotationEntry(this);
+ }
+
+
+ /**
+ * @return the number of annotation entries in this parameter annotation
+ */
+ public final int getNumAnnotations() {
+ return annotation_table_length;
+ }
+
+
+ /**
+ * returns the array of annotation entries in this annotation
+ */
+ public AnnotationEntry[] getAnnotationEntries() {
+ return annotation_table;
+ }
}
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotations.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotations.java?rev=386056&r1=386055&r2=386056&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotations.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotations.java Wed Mar 15 03:31:56 2006
@@ -27,80 +27,87 @@
*/
public abstract class ParameterAnnotations extends Attribute {
- private int num_parameters;
- private ParameterAnnotationEntry[] parameter_annotation_table; // Table of parameter annotations
+ private int num_parameters;
+ private ParameterAnnotationEntry[] parameter_annotation_table; // Table of parameter annotations
- /**
- * @param parameter_annotation_type the subclass type of the parameter annotation
- * @param name_index Index pointing to the name <em>Code</em>
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- */
- ParameterAnnotations(byte parameter_annotation_type, int name_index, int length, DataInputStream file,
- ConstantPool constant_pool) throws IOException
- {
- this(parameter_annotation_type, name_index, length, (ParameterAnnotationEntry[]) null, constant_pool);
-
- num_parameters = (file.readUnsignedByte());
- parameter_annotation_table = new ParameterAnnotationEntry[num_parameters];
-
- for(int i=0; i < num_parameters; i++)
- parameter_annotation_table[i] = new ParameterAnnotationEntry(file, constant_pool);
- }
-
- /**
- * @param parameter_annotation_type the subclass type of the parameter annotation
- * @param name_index Index pointing to the name <em>Code</em>
- * @param length Content length in bytes
- * @param parameter_annotation_table the actual parameter annotations
- * @param constant_pool Array of constants
- */
- public ParameterAnnotations(byte parameter_annotation_type, int name_index, int length, ParameterAnnotationEntry[] parameter_annotation_table, ConstantPool constant_pool)
- {
- super(parameter_annotation_type, name_index, length, constant_pool);
- setParameterAnnotationTable(parameter_annotation_table);
-
- }
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept(Visitor v) {
-// v.visitParameterAnnotation(this);
- }
-
- /**
- * @param parameter_annotation_table the entries to set in this parameter annotation
- */
- public final void setParameterAnnotationTable(ParameterAnnotationEntry[] parameter_annotation_table)
- {
- this.parameter_annotation_table = parameter_annotation_table;
- num_parameters = (parameter_annotation_table == null)? 0 :
- parameter_annotation_table.length;
- }
-
- /**
- * @return the parameter annotation entry table
- */
- public final ParameterAnnotationEntry[] getParameterAnnotationTable()
- {
- return parameter_annotation_table;
- }
-
- /**
- * returns the array of parameter annotation entries in this parameter annotation
- */
- public ParameterAnnotationEntry[] getParameterAnnotationEntries() {
- return parameter_annotation_table;
- }
-
- /**
- * @return the number of parameter annotation entries in this parameter annotation
- */
- public final int getNumParameterAnnotation() { return num_parameters; }
+
+ /**
+ * @param parameter_annotation_type the subclass type of the parameter annotation
+ * @param name_index Index pointing to the name <em>Code</em>
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ */
+ ParameterAnnotations(byte parameter_annotation_type, int name_index, int length,
+ DataInputStream file, ConstantPool constant_pool) throws IOException {
+ this(parameter_annotation_type, name_index, length, (ParameterAnnotationEntry[]) null,
+ constant_pool);
+ num_parameters = (file.readUnsignedByte());
+ parameter_annotation_table = new ParameterAnnotationEntry[num_parameters];
+ for (int i = 0; i < num_parameters; i++) {
+ parameter_annotation_table[i] = new ParameterAnnotationEntry(file, constant_pool);
+ }
+ }
+
+
+ /**
+ * @param parameter_annotation_type the subclass type of the parameter annotation
+ * @param name_index Index pointing to the name <em>Code</em>
+ * @param length Content length in bytes
+ * @param parameter_annotation_table the actual parameter annotations
+ * @param constant_pool Array of constants
+ */
+ public ParameterAnnotations(byte parameter_annotation_type, int name_index, int length,
+ ParameterAnnotationEntry[] parameter_annotation_table, ConstantPool constant_pool) {
+ super(parameter_annotation_type, name_index, length, constant_pool);
+ setParameterAnnotationTable(parameter_annotation_table);
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ // v.visitParameterAnnotation(this);
+ }
+
+
+ /**
+ * @param parameter_annotation_table the entries to set in this parameter annotation
+ */
+ public final void setParameterAnnotationTable(
+ ParameterAnnotationEntry[] parameter_annotation_table ) {
+ this.parameter_annotation_table = parameter_annotation_table;
+ num_parameters = (parameter_annotation_table == null)
+ ? 0
+ : parameter_annotation_table.length;
+ }
+
+
+ /**
+ * @return the parameter annotation entry table
+ */
+ public final ParameterAnnotationEntry[] getParameterAnnotationTable() {
+ return parameter_annotation_table;
+ }
+
+
+ /**
+ * returns the array of parameter annotation entries in this parameter annotation
+ */
+ public ParameterAnnotationEntry[] getParameterAnnotationEntries() {
+ return parameter_annotation_table;
+ }
+
+
+ /**
+ * @return the number of parameter annotation entries in this parameter annotation
+ */
+ public final int getNumParameterAnnotation() {
+ return num_parameters;
+ }
}
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/RuntimeInvisibleAnnotations.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/RuntimeInvisibleAnnotations.java?rev=386056&r1=386055&r2=386056&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/RuntimeInvisibleAnnotations.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/RuntimeInvisibleAnnotations.java Wed Mar 15 03:31:56 2006
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
- */
+ */
package org.apache.bcel.classfile;
import java.io.DataInputStream;
@@ -27,27 +27,25 @@
* @version $Id: RuntimeInvisibleAnnotations
* @author <A HREF="mailto:dbrosius@qis.net">D. Brosius</A>
*/
-public class RuntimeInvisibleAnnotations extends Annotations
-{
- /**
- * @param name_index Index pointing to the name <em>Code</em>
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- */
- RuntimeInvisibleAnnotations(int name_index, int length, DataInputStream file,
- ConstantPool constant_pool) throws IOException
- {
- super(Constants.ATTR_RUNTIMEINVISIBLE_ANNOTATIONS, name_index, length, file, constant_pool);
- }
+public class RuntimeInvisibleAnnotations extends Annotations {
+
+ /**
+ * @param name_index Index pointing to the name <em>Code</em>
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ */
+ RuntimeInvisibleAnnotations(int name_index, int length, DataInputStream file,
+ ConstantPool constant_pool) throws IOException {
+ super(Constants.ATTR_RUNTIMEINVISIBLE_ANNOTATIONS, name_index, length, file, constant_pool);
+ }
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy(ConstantPool constant_pool) {
- Annotations c = (Annotations)clone();
-
- return c;
- }
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool constant_pool ) {
+ Annotations c = (Annotations) clone();
+ return c;
+ }
}
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/RuntimeInvisibleParameterAnnotations.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/RuntimeInvisibleParameterAnnotations.java?rev=386056&r1=386055&r2=386056&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/RuntimeInvisibleParameterAnnotations.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/RuntimeInvisibleParameterAnnotations.java Wed Mar 15 03:31:56 2006
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
- */
+ */
package org.apache.bcel.classfile;
import java.io.DataInputStream;
@@ -27,27 +27,26 @@
* @version $Id: RuntimeInvisibleParameterAnnotations
* @author <A HREF="mailto:dbrosius@qis.net">D. Brosius</A>
*/
-public class RuntimeInvisibleParameterAnnotations extends ParameterAnnotations
-{
- /**
- * @param name_index Index pointing to the name <em>Code</em>
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- */
- RuntimeInvisibleParameterAnnotations(int name_index, int length, DataInputStream file,
- ConstantPool constant_pool) throws IOException
- {
- super(Constants.ATTR_RUNTIMEINVISIBLE_PARAMETER_ANNOTATIONS, name_index, length, file, constant_pool);
- }
+public class RuntimeInvisibleParameterAnnotations extends ParameterAnnotations {
+
+ /**
+ * @param name_index Index pointing to the name <em>Code</em>
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ */
+ RuntimeInvisibleParameterAnnotations(int name_index, int length, DataInputStream file,
+ ConstantPool constant_pool) throws IOException {
+ super(Constants.ATTR_RUNTIMEINVISIBLE_PARAMETER_ANNOTATIONS, name_index, length, file,
+ constant_pool);
+ }
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy(ConstantPool constant_pool) {
- Annotations c = (Annotations)clone();
-
- return c;
- }
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool constant_pool ) {
+ Annotations c = (Annotations) clone();
+ return c;
+ }
}
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/RuntimeVisibleAnnotations.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/RuntimeVisibleAnnotations.java?rev=386056&r1=386055&r2=386056&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/RuntimeVisibleAnnotations.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/RuntimeVisibleAnnotations.java Wed Mar 15 03:31:56 2006
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
- */
+ */
package org.apache.bcel.classfile;
import java.io.DataInputStream;
@@ -27,27 +27,25 @@
* @version $Id: RuntimeVisibleAnnotations
* @author <A HREF="mailto:dbrosius@qis.net">D. Brosius</A>
*/
-public class RuntimeVisibleAnnotations extends Annotations
-{
- /**
- * @param name_index Index pointing to the name <em>Code</em>
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- */
- RuntimeVisibleAnnotations(int name_index, int length, DataInputStream file,
- ConstantPool constant_pool) throws IOException
- {
- super(Constants.ATTR_RUNTIMEVISIBLE_ANNOTATIONS, name_index, length, file, constant_pool);
- }
+public class RuntimeVisibleAnnotations extends Annotations {
+
+ /**
+ * @param name_index Index pointing to the name <em>Code</em>
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ */
+ RuntimeVisibleAnnotations(int name_index, int length, DataInputStream file,
+ ConstantPool constant_pool) throws IOException {
+ super(Constants.ATTR_RUNTIMEVISIBLE_ANNOTATIONS, name_index, length, file, constant_pool);
+ }
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy(ConstantPool constant_pool) {
- Annotations c = (Annotations)clone();
-
- return c;
- }
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool constant_pool ) {
+ Annotations c = (Annotations) clone();
+ return c;
+ }
}
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/RuntimeVisibleParameterAnnotations.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/RuntimeVisibleParameterAnnotations.java?rev=386056&r1=386055&r2=386056&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/RuntimeVisibleParameterAnnotations.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/RuntimeVisibleParameterAnnotations.java Wed Mar 15 03:31:56 2006
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
- */
+ */
package org.apache.bcel.classfile;
import java.io.DataInputStream;
@@ -27,27 +27,26 @@
* @version $Id: RuntimeVisibleParameterAnnotations
* @author <A HREF="mailto:dbrosius@qis.net">D. Brosius</A>
*/
-public class RuntimeVisibleParameterAnnotations extends ParameterAnnotations
-{
- /**
- * @param name_index Index pointing to the name <em>Code</em>
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- */
- RuntimeVisibleParameterAnnotations(int name_index, int length, DataInputStream file,
- ConstantPool constant_pool) throws IOException
- {
- super(Constants.ATTR_RUNTIMEVISIBLE_PARAMETER_ANNOTATIONS, name_index, length, file, constant_pool);
- }
+public class RuntimeVisibleParameterAnnotations extends ParameterAnnotations {
+
+ /**
+ * @param name_index Index pointing to the name <em>Code</em>
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ */
+ RuntimeVisibleParameterAnnotations(int name_index, int length, DataInputStream file,
+ ConstantPool constant_pool) throws IOException {
+ super(Constants.ATTR_RUNTIMEVISIBLE_PARAMETER_ANNOTATIONS, name_index, length, file,
+ constant_pool);
+ }
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy(ConstantPool constant_pool) {
- Annotations c = (Annotations)clone();
-
- return c;
- }
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool constant_pool ) {
+ Annotations c = (Annotations) clone();
+ return c;
+ }
}
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Signature.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Signature.java?rev=386056&r1=386055&r2=386056&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Signature.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Signature.java Wed Mar 15 03:31:56 2006
@@ -13,10 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
- */
+ */
package org.apache.bcel.classfile;
-
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -32,227 +31,243 @@
* @see Attribute
*/
public final class Signature extends Attribute {
- private int signature_index;
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use clone() for a physical copy.
- */
- public Signature(Signature c) {
- this(c.getNameIndex(), c.getLength(), c.getSignatureIndex(), c.getConstantPool());
- }
-
- /**
- * Construct object from file stream.
- * @param name_index Index in constant pool to CONSTANT_Utf8
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- * @throws IOException
- */
- Signature(int name_index, int length, DataInputStream file,
- ConstantPool constant_pool) throws IOException
- {
- this(name_index, length, file.readUnsignedShort(), constant_pool);
- }
-
- /**
- * @param name_index Index in constant pool to CONSTANT_Utf8
- * @param length Content length in bytes
- * @param signature_index Index in constant pool to CONSTANT_Utf8
- * @param constant_pool Array of constants
- */
- public Signature(int name_index, int length, int signature_index,
- ConstantPool constant_pool)
- {
- super(Constants.ATTR_SIGNATURE, name_index, length, constant_pool);
- this.signature_index = signature_index;
- }
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept(Visitor v) {
- //System.err.println("Visiting non-standard Signature object");
- v.visitSignature(this);
- }
-
- /**
- * Dump source file attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump(DataOutputStream file) throws IOException
- {
- super.dump(file);
- file.writeShort(signature_index);
- }
-
- /**
- * @return Index in constant pool of source file name.
- */
- public final int getSignatureIndex() { return signature_index; }
-
- /**
- * @param signature_index the index info the constant pool of this signature
- */
- public final void setSignatureIndex(int signature_index) {
- this.signature_index = signature_index;
- }
-
- /**
- * @return GJ signature.
- */
- public final String getSignature() {
- ConstantUtf8 c = (ConstantUtf8)constant_pool.getConstant(signature_index,
- Constants.CONSTANT_Utf8);
- return c.getBytes();
- }
-
- /**
- * Extends ByteArrayInputStream to make 'unreading' chars possible.
- */
- private static final class MyByteArrayInputStream extends ByteArrayInputStream {
- MyByteArrayInputStream(String data) { super(data.getBytes()); }
- final int mark() { return pos; }
- final String getData() { return new String(buf); }
- final void reset(int p) { pos = p; }
- final void unread() { if(pos > 0) pos--; }
- }
-
- private static boolean identStart(int ch) {
- return ch == 'T' || ch == 'L';
- }
-
- private static final void matchIdent(MyByteArrayInputStream in, StringBuffer buf) {
- int ch;
-
- if((ch = in.read()) == -1)
- throw new RuntimeException("Illegal signature: " + in.getData() +
- " no ident, reaching EOF");
-
- //System.out.println("return from ident:" + (char)ch);
-
- if(!identStart(ch)) {
- StringBuffer buf2 = new StringBuffer();
-
- int count = 1;
- while(Character.isJavaIdentifierPart((char)ch)) {
- buf2.append((char)ch);
- count++;
- ch = in.read();
- }
-
- if(ch == ':') { // Ok, formal parameter
- in.skip("Ljava/lang/Object".length());
- buf.append(buf2);
+ private int signature_index;
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use clone() for a physical copy.
+ */
+ public Signature(Signature c) {
+ this(c.getNameIndex(), c.getLength(), c.getSignatureIndex(), c.getConstantPool());
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param name_index Index in constant pool to CONSTANT_Utf8
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @throws IOException
+ */
+ Signature(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ this(name_index, length, file.readUnsignedShort(), constant_pool);
+ }
+
+
+ /**
+ * @param name_index Index in constant pool to CONSTANT_Utf8
+ * @param length Content length in bytes
+ * @param signature_index Index in constant pool to CONSTANT_Utf8
+ * @param constant_pool Array of constants
+ */
+ public Signature(int name_index, int length, int signature_index, ConstantPool constant_pool) {
+ super(Constants.ATTR_SIGNATURE, name_index, length, constant_pool);
+ this.signature_index = signature_index;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ //System.err.println("Visiting non-standard Signature object");
+ v.visitSignature(this);
+ }
+
+
+ /**
+ * Dump source file attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ file.writeShort(signature_index);
+ }
+
+
+ /**
+ * @return Index in constant pool of source file name.
+ */
+ public final int getSignatureIndex() {
+ return signature_index;
+ }
+
+
+ /**
+ * @param signature_index the index info the constant pool of this signature
+ */
+ public final void setSignatureIndex( int signature_index ) {
+ this.signature_index = signature_index;
+ }
+
+
+ /**
+ * @return GJ signature.
+ */
+ public final String getSignature() {
+ ConstantUtf8 c = (ConstantUtf8) constant_pool.getConstant(signature_index,
+ Constants.CONSTANT_Utf8);
+ return c.getBytes();
+ }
+
+ /**
+ * Extends ByteArrayInputStream to make 'unreading' chars possible.
+ */
+ private static final class MyByteArrayInputStream extends ByteArrayInputStream {
+
+ MyByteArrayInputStream(String data) {
+ super(data.getBytes());
+ }
+
+
+ final int mark() {
+ return pos;
+ }
+
+ final String getData() {
+ return new String(buf);
+ }
+
+
+ final void reset( int p ) {
+ pos = p;
+ }
+
+
+ final void unread() {
+ if (pos > 0) {
+ pos--;
+ }
+ }
+ }
+
+
+ private static boolean identStart( int ch ) {
+ return ch == 'T' || ch == 'L';
+ }
+
+
+ private static final void matchIdent( MyByteArrayInputStream in, StringBuffer buf ) {
+ int ch;
+ if ((ch = in.read()) == -1) {
+ throw new RuntimeException("Illegal signature: " + in.getData()
+ + " no ident, reaching EOF");
+ }
+ //System.out.println("return from ident:" + (char)ch);
+ if (!identStart(ch)) {
+ StringBuffer buf2 = new StringBuffer();
+ int count = 1;
+ while (Character.isJavaIdentifierPart((char) ch)) {
+ buf2.append((char) ch);
+ count++;
+ ch = in.read();
+ }
+ if (ch == ':') { // Ok, formal parameter
+ in.skip("Ljava/lang/Object".length());
+ buf.append(buf2);
+ ch = in.read();
+ in.unread();
+ //System.out.println("so far:" + buf2 + ":next:" +(char)ch);
+ } else {
+ for (int i = 0; i < count; i++) {
+ in.unread();
+ }
+ }
+ return;
+ }
+ StringBuffer buf2 = new StringBuffer();
+ ch = in.read();
+ do {
+ buf2.append((char) ch);
+ ch = in.read();
+ //System.out.println("within ident:"+ (char)ch);
+ } while ((ch != -1) && (Character.isJavaIdentifierPart((char) ch) || (ch == '/')));
+ buf.append(buf2.toString().replace('/', '.'));
+ //System.out.println("regular return ident:"+ (char)ch + ":" + buf2);
+ if (ch != -1) {
+ in.unread();
+ }
+ }
+
+
+ private static final void matchGJIdent( MyByteArrayInputStream in, StringBuffer buf ) {
+ int ch;
+ matchIdent(in, buf);
ch = in.read();
- in.unread();
- //System.out.println("so far:" + buf2 + ":next:" +(char)ch);
- } else {
- for(int i=0; i < count; i++)
- in.unread();
- }
-
- return;
- }
-
- StringBuffer buf2 = new StringBuffer();
- ch = in.read();
-
- do {
- buf2.append((char)ch);
- ch = in.read();
- //System.out.println("within ident:"+ (char)ch);
-
- } while((ch != -1) && (Character.isJavaIdentifierPart((char)ch) || (ch == '/')));
-
- buf.append(buf2.toString().replace('/', '.'));
-
- //System.out.println("regular return ident:"+ (char)ch + ":" + buf2);
-
- if(ch != -1)
- in.unread();
- }
-
- private static final void matchGJIdent(MyByteArrayInputStream in,
- StringBuffer buf)
- {
- int ch;
-
- matchIdent(in, buf);
-
- ch = in.read();
- if((ch == '<') || ch == '(') { // Parameterized or method
- //System.out.println("Enter <");
- buf.append((char)ch);
- matchGJIdent(in, buf);
-
- while(((ch = in.read()) != '>') && (ch != ')')) { // List of parameters
- if(ch == -1)
- throw new RuntimeException("Illegal signature: " + in.getData() +
- " reaching EOF");
-
- //System.out.println("Still no >");
- buf.append(", ");
- in.unread();
- matchGJIdent(in, buf); // Recursive call
- }
-
- //System.out.println("Exit >");
-
- buf.append((char)ch);
- } else
- in.unread();
-
- ch = in.read();
- if(identStart(ch)) {
- in.unread();
- matchGJIdent(in, buf);
- } else if(ch == ')') {
- in.unread();
- return;
- } else if(ch != ';')
- throw new RuntimeException("Illegal signature: " + in.getData() + " read " +
- (char)ch);
- }
-
- public static String translate(String s) {
- //System.out.println("Sig:" + s);
- StringBuffer buf = new StringBuffer();
-
- matchGJIdent(new MyByteArrayInputStream(s), buf);
-
- return buf.toString();
- }
-
- public static final boolean isFormalParameterList(String s) {
- return s.startsWith("<") && (s.indexOf(':') > 0);
- }
-
- public static final boolean isActualParameterList(String s) {
- return s.startsWith("L") && s.endsWith(">;");
- }
-
- /**
- * @return String representation
- */
- public final String toString() {
- String s = getSignature();
-
- return "Signature(" + s + ")";
- }
-
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy(ConstantPool _constant_pool) {
- return (Signature)clone();
- }
+ if ((ch == '<') || ch == '(') { // Parameterized or method
+ //System.out.println("Enter <");
+ buf.append((char) ch);
+ matchGJIdent(in, buf);
+ while (((ch = in.read()) != '>') && (ch != ')')) { // List of parameters
+ if (ch == -1) {
+ throw new RuntimeException("Illegal signature: " + in.getData()
+ + " reaching EOF");
+ }
+ //System.out.println("Still no >");
+ buf.append(", ");
+ in.unread();
+ matchGJIdent(in, buf); // Recursive call
+ }
+ //System.out.println("Exit >");
+ buf.append((char) ch);
+ } else {
+ in.unread();
+ }
+ ch = in.read();
+ if (identStart(ch)) {
+ in.unread();
+ matchGJIdent(in, buf);
+ } else if (ch == ')') {
+ in.unread();
+ return;
+ } else if (ch != ';') {
+ throw new RuntimeException("Illegal signature: " + in.getData() + " read " + (char) ch);
+ }
+ }
+
+
+ public static String translate( String s ) {
+ //System.out.println("Sig:" + s);
+ StringBuffer buf = new StringBuffer();
+ matchGJIdent(new MyByteArrayInputStream(s), buf);
+ return buf.toString();
+ }
+
+
+ public static final boolean isFormalParameterList( String s ) {
+ return s.startsWith("<") && (s.indexOf(':') > 0);
+ }
+
+
+ public static final boolean isActualParameterList( String s ) {
+ return s.startsWith("L") && s.endsWith(">;");
+ }
+
+
+ /**
+ * @return String representation
+ */
+ public final String toString() {
+ String s = getSignature();
+ return "Signature(" + s + ")";
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ return (Signature) clone();
+ }
}
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/SourceFile.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/SourceFile.java?rev=386056&r1=386055&r2=386056&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/SourceFile.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/SourceFile.java Wed Mar 15 03:31:56 2006
@@ -13,10 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
- */
+ */
package org.apache.bcel.classfile;
-
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
@@ -33,106 +32,114 @@
* @see Attribute
*/
public final class SourceFile extends Attribute {
- private int sourcefile_index;
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use clone() for a physical copy.
- */
- public SourceFile(SourceFile c) {
- this(c.getNameIndex(), c.getLength(), c.getSourceFileIndex(),
- c.getConstantPool());
- }
-
- /**
- * Construct object from file stream.
- * @param name_index Index in constant pool to CONSTANT_Utf8
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- * @throws IOException
- */
- SourceFile(int name_index, int length, DataInputStream file,
- ConstantPool constant_pool) throws IOException
- {
- this(name_index, length, file.readUnsignedShort(), constant_pool);
- }
-
- /**
- * @param name_index Index in constant pool to CONSTANT_Utf8, which
- * should represent the string "SourceFile".
- * @param length Content length in bytes, the value should be 2.
- * @param constant_pool The constant pool that this attribute is
- * associated with.
- * @param sourcefile_index Index in constant pool to CONSTANT_Utf8. This
- * string will be interpreted as the name of the file from which this
- * class was compiled. It will not be interpreted as indicating the name
- * of the directory contqining the file or an absolute path; this
- * information has to be supplied the consumer of this attribute - in
- * many cases, the JVM.
- */
- public SourceFile(int name_index, int length, int sourcefile_index,
- ConstantPool constant_pool)
- {
- super(Constants.ATTR_SOURCE_FILE, name_index, length, constant_pool);
- this.sourcefile_index = sourcefile_index;
- }
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept(Visitor v) {
- v.visitSourceFile(this);
- }
-
- /**
- * Dump source file attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump(DataOutputStream file) throws IOException
- {
- super.dump(file);
- file.writeShort(sourcefile_index);
- }
-
- /**
- * @return Index in constant pool of source file name.
- */
- public final int getSourceFileIndex() { return sourcefile_index; }
-
- /**
- * @param sourcefile_index
- */
- public final void setSourceFileIndex(int sourcefile_index) {
- this.sourcefile_index = sourcefile_index;
- }
-
- /**
- * @return Source file name.
- */
- public final String getSourceFileName() {
- ConstantUtf8 c = (ConstantUtf8)constant_pool.getConstant(sourcefile_index,
- Constants.CONSTANT_Utf8);
- return c.getBytes();
- }
-
- /**
- * @return String representation
- */
- public final String toString() {
- return "SourceFile(" + getSourceFileName() + ")";
- }
-
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy(ConstantPool _constant_pool) {
- return (SourceFile)clone();
- }
+ private int sourcefile_index;
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use clone() for a physical copy.
+ */
+ public SourceFile(SourceFile c) {
+ this(c.getNameIndex(), c.getLength(), c.getSourceFileIndex(), c.getConstantPool());
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param name_index Index in constant pool to CONSTANT_Utf8
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @throws IOException
+ */
+ SourceFile(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ this(name_index, length, file.readUnsignedShort(), constant_pool);
+ }
+
+
+ /**
+ * @param name_index Index in constant pool to CONSTANT_Utf8, which
+ * should represent the string "SourceFile".
+ * @param length Content length in bytes, the value should be 2.
+ * @param constant_pool The constant pool that this attribute is
+ * associated with.
+ * @param sourcefile_index Index in constant pool to CONSTANT_Utf8. This
+ * string will be interpreted as the name of the file from which this
+ * class was compiled. It will not be interpreted as indicating the name
+ * of the directory contqining the file or an absolute path; this
+ * information has to be supplied the consumer of this attribute - in
+ * many cases, the JVM.
+ */
+ public SourceFile(int name_index, int length, int sourcefile_index, ConstantPool constant_pool) {
+ super(Constants.ATTR_SOURCE_FILE, name_index, length, constant_pool);
+ this.sourcefile_index = sourcefile_index;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitSourceFile(this);
+ }
+
+
+ /**
+ * Dump source file attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ file.writeShort(sourcefile_index);
+ }
+
+
+ /**
+ * @return Index in constant pool of source file name.
+ */
+ public final int getSourceFileIndex() {
+ return sourcefile_index;
+ }
+
+
+ /**
+ * @param sourcefile_index
+ */
+ public final void setSourceFileIndex( int sourcefile_index ) {
+ this.sourcefile_index = sourcefile_index;
+ }
+
+
+ /**
+ * @return Source file name.
+ */
+ public final String getSourceFileName() {
+ ConstantUtf8 c = (ConstantUtf8) constant_pool.getConstant(sourcefile_index,
+ Constants.CONSTANT_Utf8);
+ return c.getBytes();
+ }
+
+
+ /**
+ * @return String representation
+ */
+ public final String toString() {
+ return "SourceFile(" + getSourceFileName() + ")";
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ return (SourceFile) clone();
+ }
}
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/StackMap.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/StackMap.java?rev=386056&r1=386055&r2=386056&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/StackMap.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/StackMap.java Wed Mar 15 03:31:56 2006
@@ -13,10 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
- */
+ */
package org.apache.bcel.classfile;
-
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
@@ -38,113 +37,117 @@
* @see StackMapType
*/
public final class StackMap extends Attribute implements Node {
- private int map_length;
- private StackMapEntry[] map; // Table of stack map entries
- /*
- * @param name_index Index of name
- * @param length Content length in bytes
- * @param map Table of stack map entries
- * @param constant_pool Array of constants
- */
- public StackMap(int name_index, int length, StackMapEntry[] map,
- ConstantPool constant_pool)
- {
- super(Constants.ATTR_STACK_MAP, name_index, length, constant_pool);
-
- setStackMap(map);
- }
-
- /**
- * Construct object from file stream.
- * @param name_index Index of name
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- * @throws IOException
- */
- StackMap(int name_index, int length, DataInputStream file,
- ConstantPool constant_pool) throws IOException
- {
- this(name_index, length, (StackMapEntry[])null, constant_pool);
-
- map_length = file.readUnsignedShort();
- map = new StackMapEntry[map_length];
-
- for(int i=0; i < map_length; i++)
- map[i] = new StackMapEntry(file, constant_pool);
- }
-
- /**
- * Dump line number table attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump(DataOutputStream file) throws IOException
- {
- super.dump(file);
- file.writeShort(map_length);
- for(int i=0; i < map_length; i++)
- map[i].dump(file);
- }
-
- /**
- * @return Array of stack map entries
- */
- public final StackMapEntry[] getStackMap() { return map; }
-
- /**
- * @param map Array of stack map entries
- */
- public final void setStackMap(StackMapEntry[] map) {
- this.map = map;
-
- map_length = (map == null)? 0 : map.length;
- }
-
- /**
- * @return String representation.
- */
- public final String toString() {
- StringBuffer buf = new StringBuffer("StackMap(");
-
- for(int i=0; i < map_length; i++) {
- buf.append(map[i].toString());
-
- if(i < map_length - 1)
- buf.append(", ");
- }
-
- buf.append(')');
-
- return buf.toString();
- }
-
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy(ConstantPool _constant_pool) {
- StackMap c = (StackMap)clone();
-
- c.map = new StackMapEntry[map_length];
- for(int i=0; i < map_length; i++)
- c.map[i] = map[i].copy();
-
- c.constant_pool = _constant_pool;
- return c;
- }
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept(Visitor v) {
- v.visitStackMap(this);
- }
+ private int map_length;
+ private StackMapEntry[] map; // Table of stack map entries
+
+
+ /*
+ * @param name_index Index of name
+ * @param length Content length in bytes
+ * @param map Table of stack map entries
+ * @param constant_pool Array of constants
+ */
+ public StackMap(int name_index, int length, StackMapEntry[] map, ConstantPool constant_pool) {
+ super(Constants.ATTR_STACK_MAP, name_index, length, constant_pool);
+ setStackMap(map);
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param name_index Index of name
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @throws IOException
+ */
+ StackMap(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ this(name_index, length, (StackMapEntry[]) null, constant_pool);
+ map_length = file.readUnsignedShort();
+ map = new StackMapEntry[map_length];
+ for (int i = 0; i < map_length; i++) {
+ map[i] = new StackMapEntry(file, constant_pool);
+ }
+ }
+
+
+ /**
+ * Dump line number table attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ file.writeShort(map_length);
+ for (int i = 0; i < map_length; i++) {
+ map[i].dump(file);
+ }
+ }
+
+
+ /**
+ * @return Array of stack map entries
+ */
+ public final StackMapEntry[] getStackMap() {
+ return map;
+ }
+
+
+ /**
+ * @param map Array of stack map entries
+ */
+ public final void setStackMap( StackMapEntry[] map ) {
+ this.map = map;
+ map_length = (map == null) ? 0 : map.length;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ StringBuffer buf = new StringBuffer("StackMap(");
+ for (int i = 0; i < map_length; i++) {
+ buf.append(map[i].toString());
+ if (i < map_length - 1) {
+ buf.append(", ");
+ }
+ }
+ buf.append(')');
+ return buf.toString();
+ }
+
- public final int getMapLength() { return map_length; }
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ StackMap c = (StackMap) clone();
+ c.map = new StackMapEntry[map_length];
+ for (int i = 0; i < map_length; i++) {
+ c.map[i] = map[i].copy();
+ }
+ c.constant_pool = _constant_pool;
+ return c;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackMap(this);
+ }
+
+
+ public final int getMapLength() {
+ return map_length;
+ }
}
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/StackMapEntry.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/StackMapEntry.java?rev=386056&r1=386055&r2=386056&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/StackMapEntry.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/StackMapEntry.java Wed Mar 15 03:31:56 2006
@@ -13,10 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
- */
+ */
package org.apache.bcel.classfile;
-
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
@@ -32,143 +31,182 @@
* @see StackMapType
*/
public final class StackMapEntry implements Cloneable {
- private int byte_code_offset;
- private int number_of_locals;
- private StackMapType[] types_of_locals;
- private int number_of_stack_items;
- private StackMapType[] types_of_stack_items;
- private ConstantPool constant_pool;
-
- /**
- * Construct object from file stream.
- * @param file Input stream
- * @throws IOException
- */
- StackMapEntry(DataInputStream file, ConstantPool constant_pool) throws IOException
- {
- this(file.readShort(), file.readShort(), null, -1, null, constant_pool);
-
- types_of_locals = new StackMapType[number_of_locals];
- for(int i=0; i < number_of_locals; i++)
- types_of_locals[i] = new StackMapType(file, constant_pool);
-
- number_of_stack_items = file.readShort();
- types_of_stack_items = new StackMapType[number_of_stack_items];
- for(int i=0; i < number_of_stack_items; i++)
- types_of_stack_items[i] = new StackMapType(file, constant_pool);
- }
-
- public StackMapEntry(int byte_code_offset, int number_of_locals,
- StackMapType[] types_of_locals,
- int number_of_stack_items,
- StackMapType[] types_of_stack_items,
- ConstantPool constant_pool) {
- this.byte_code_offset = byte_code_offset;
- this.number_of_locals = number_of_locals;
- this.types_of_locals = types_of_locals;
- this.number_of_stack_items = number_of_stack_items;
- this.types_of_stack_items = types_of_stack_items;
- this.constant_pool = constant_pool;
- }
-
- /**
- * Dump stack map entry
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump(DataOutputStream file) throws IOException
- {
- file.writeShort(byte_code_offset);
-
- file.writeShort(number_of_locals);
- for(int i=0; i < number_of_locals; i++)
- types_of_locals[i].dump(file);
-
- file.writeShort(number_of_stack_items);
- for(int i=0; i < number_of_stack_items; i++)
- types_of_stack_items[i].dump(file);
- }
-
- /**
- * @return String representation.
- */
- public final String toString() {
- StringBuffer buf = new StringBuffer(64);
- buf.append("(offset=").append(byte_code_offset);
-
- if(number_of_locals > 0) {
- buf.append(", locals={");
-
- for(int i=0; i < number_of_locals; i++) {
- buf.append(types_of_locals[i]);
- if(i < number_of_locals - 1)
- buf.append(", ");
- }
-
- buf.append("}");
- }
-
- if(number_of_stack_items > 0) {
- buf.append(", stack items={");
-
- for(int i=0; i < number_of_stack_items; i++) {
- buf.append(types_of_stack_items[i]);
- if(i < number_of_stack_items - 1)
- buf.append(", ");
- }
-
- buf.append("}");
- }
-
- buf.append(")");
-
- return buf.toString();
- }
-
-
- public void setByteCodeOffset(int b) { byte_code_offset = b; }
- public int getByteCodeOffset() { return byte_code_offset; }
- public void setNumberOfLocals(int n) { number_of_locals = n; }
- public int getNumberOfLocals() { return number_of_locals; }
- public void setTypesOfLocals(StackMapType[] t) { types_of_locals = t; }
- public StackMapType[] getTypesOfLocals() { return types_of_locals; }
- public void setNumberOfStackItems(int n) { number_of_stack_items = n; }
- public int getNumberOfStackItems() { return number_of_stack_items; }
- public void setTypesOfStackItems(StackMapType[] t) { types_of_stack_items = t; }
- public StackMapType[] getTypesOfStackItems() { return types_of_stack_items; }
-
- /**
- * @return deep copy of this object
- */
- public StackMapEntry copy() {
- try {
- return (StackMapEntry)clone();
- } catch(CloneNotSupportedException e) {}
-
- return null;
- }
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept(Visitor v) {
- v.visitStackMapEntry(this);
- }
-
- /**
- * @return Constant pool used by this object.
- */
- public final ConstantPool getConstantPool() { return constant_pool; }
-
- /**
- * @param constant_pool Constant pool to be used for this object.
- */
- public final void setConstantPool(ConstantPool constant_pool) {
- this.constant_pool = constant_pool;
- }
+
+ private int byte_code_offset;
+ private int number_of_locals;
+ private StackMapType[] types_of_locals;
+ private int number_of_stack_items;
+ private StackMapType[] types_of_stack_items;
+ private ConstantPool constant_pool;
+
+
+ /**
+ * Construct object from file stream.
+ * @param file Input stream
+ * @throws IOException
+ */
+ StackMapEntry(DataInputStream file, ConstantPool constant_pool) throws IOException {
+ this(file.readShort(), file.readShort(), null, -1, null, constant_pool);
+ types_of_locals = new StackMapType[number_of_locals];
+ for (int i = 0; i < number_of_locals; i++) {
+ types_of_locals[i] = new StackMapType(file, constant_pool);
+ }
+ number_of_stack_items = file.readShort();
+ types_of_stack_items = new StackMapType[number_of_stack_items];
+ for (int i = 0; i < number_of_stack_items; i++) {
+ types_of_stack_items[i] = new StackMapType(file, constant_pool);
+ }
+ }
+
+
+ public StackMapEntry(int byte_code_offset, int number_of_locals,
+ StackMapType[] types_of_locals, int number_of_stack_items,
+ StackMapType[] types_of_stack_items, ConstantPool constant_pool) {
+ this.byte_code_offset = byte_code_offset;
+ this.number_of_locals = number_of_locals;
+ this.types_of_locals = types_of_locals;
+ this.number_of_stack_items = number_of_stack_items;
+ this.types_of_stack_items = types_of_stack_items;
+ this.constant_pool = constant_pool;
+ }
+
+
+ /**
+ * Dump stack map entry
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeShort(byte_code_offset);
+ file.writeShort(number_of_locals);
+ for (int i = 0; i < number_of_locals; i++) {
+ types_of_locals[i].dump(file);
+ }
+ file.writeShort(number_of_stack_items);
+ for (int i = 0; i < number_of_stack_items; i++) {
+ types_of_stack_items[i].dump(file);
+ }
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ StringBuffer buf = new StringBuffer(64);
+ buf.append("(offset=").append(byte_code_offset);
+ if (number_of_locals > 0) {
+ buf.append(", locals={");
+ for (int i = 0; i < number_of_locals; i++) {
+ buf.append(types_of_locals[i]);
+ if (i < number_of_locals - 1) {
+ buf.append(", ");
+ }
+ }
+ buf.append("}");
+ }
+ if (number_of_stack_items > 0) {
+ buf.append(", stack items={");
+ for (int i = 0; i < number_of_stack_items; i++) {
+ buf.append(types_of_stack_items[i]);
+ if (i < number_of_stack_items - 1) {
+ buf.append(", ");
+ }
+ }
+ buf.append("}");
+ }
+ buf.append(")");
+ return buf.toString();
+ }
+
+
+ public void setByteCodeOffset( int b ) {
+ byte_code_offset = b;
+ }
+
+
+ public int getByteCodeOffset() {
+ return byte_code_offset;
+ }
+
+
+ public void setNumberOfLocals( int n ) {
+ number_of_locals = n;
+ }
+
+
+ public int getNumberOfLocals() {
+ return number_of_locals;
+ }
+
+
+ public void setTypesOfLocals( StackMapType[] t ) {
+ types_of_locals = t;
+ }
+
+
+ public StackMapType[] getTypesOfLocals() {
+ return types_of_locals;
+ }
+
+
+ public void setNumberOfStackItems( int n ) {
+ number_of_stack_items = n;
+ }
+
+
+ public int getNumberOfStackItems() {
+ return number_of_stack_items;
+ }
+
+
+ public void setTypesOfStackItems( StackMapType[] t ) {
+ types_of_stack_items = t;
+ }
+
+
+ public StackMapType[] getTypesOfStackItems() {
+ return types_of_stack_items;
+ }
+
+
+ /**
+ * @return deep copy of this object
+ */
+ public StackMapEntry copy() {
+ try {
+ return (StackMapEntry) clone();
+ } catch (CloneNotSupportedException e) {
+ }
+ return null;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackMapEntry(this);
+ }
+
+
+ /**
+ * @return Constant pool used by this object.
+ */
+ public final ConstantPool getConstantPool() {
+ return constant_pool;
+ }
+
+
+ /**
+ * @param constant_pool Constant pool to be used for this object.
+ */
+ public final void setConstantPool( ConstantPool constant_pool ) {
+ this.constant_pool = constant_pool;
+ }
}
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/StackMapType.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/StackMapType.java?rev=386056&r1=386055&r2=386056&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/StackMapType.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/StackMapType.java Wed Mar 15 03:31:56 2006
@@ -13,10 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
- */
+ */
package org.apache.bcel.classfile;
-
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
@@ -33,107 +32,130 @@
* @see Constants
*/
public final class StackMapType implements Cloneable {
- private byte type;
- private int index = -1; // Index to CONSTANT_Class or offset
- private ConstantPool constant_pool;
-
- /**
- * Construct object from file stream.
- * @param file Input stream
- * @throws IOException
- */
- StackMapType(DataInputStream file, ConstantPool constant_pool) throws IOException
- {
- this(file.readByte(), -1, constant_pool);
-
- if(hasIndex())
- setIndex(file.readShort());
-
- setConstantPool(constant_pool);
- }
-
- /**
- * @param type type tag as defined in the Constants interface
- * @param index index to constant pool, or byte code offset
- */
- public StackMapType(byte type, int index, ConstantPool constant_pool) {
- setType(type);
- setIndex(index);
- setConstantPool(constant_pool);
- }
-
- public void setType(byte t) {
- if((t < Constants.ITEM_Bogus) || (t > Constants.ITEM_NewObject))
- throw new RuntimeException("Illegal type for StackMapType: " + t);
- type = t;
- }
-
- public byte getType() { return type; }
- public void setIndex(int t) { index = t; }
-
- /** @return index to constant pool if type == ITEM_Object, or offset
- * in byte code, if type == ITEM_NewObject, and -1 otherwise
- */
- public int getIndex() { return index; }
-
- /**
- * Dump type entries to file.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump(DataOutputStream file) throws IOException
- {
- file.writeByte(type);
- if(hasIndex())
- file.writeShort(getIndex());
- }
-
- /** @return true, if type is either ITEM_Object or ITEM_NewObject
- */
- public final boolean hasIndex() {
- return ((type == Constants.ITEM_Object) ||
- (type == Constants.ITEM_NewObject));
- }
-
- private String printIndex() {
- if(type == Constants.ITEM_Object) {
- if (index < 0)
- return ", class=<unknown>";
- return ", class=" + constant_pool.constantToString(index, Constants.CONSTANT_Class);
- } else if(type == Constants.ITEM_NewObject)
- return ", offset=" + index;
- else
- return "";
- }
-
- /**
- * @return String representation
- */
- public final String toString() {
- return "(type=" + Constants.ITEM_NAMES[type] + printIndex() + ")";
- }
-
- /**
- * @return deep copy of this object
- */
- public StackMapType copy() {
- try {
- return (StackMapType)clone();
- } catch(CloneNotSupportedException e) {}
-
- return null;
- }
-
- /**
- * @return Constant pool used by this object.
- */
- public final ConstantPool getConstantPool() { return constant_pool; }
-
- /**
- * @param constant_pool Constant pool to be used for this object.
- */
- public final void setConstantPool(ConstantPool constant_pool) {
- this.constant_pool = constant_pool;
- }
+
+ private byte type;
+ private int index = -1; // Index to CONSTANT_Class or offset
+ private ConstantPool constant_pool;
+
+
+ /**
+ * Construct object from file stream.
+ * @param file Input stream
+ * @throws IOException
+ */
+ StackMapType(DataInputStream file, ConstantPool constant_pool) throws IOException {
+ this(file.readByte(), -1, constant_pool);
+ if (hasIndex()) {
+ setIndex(file.readShort());
+ }
+ setConstantPool(constant_pool);
+ }
+
+
+ /**
+ * @param type type tag as defined in the Constants interface
+ * @param index index to constant pool, or byte code offset
+ */
+ public StackMapType(byte type, int index, ConstantPool constant_pool) {
+ setType(type);
+ setIndex(index);
+ setConstantPool(constant_pool);
+ }
+
+
+ public void setType( byte t ) {
+ if ((t < Constants.ITEM_Bogus) || (t > Constants.ITEM_NewObject)) {
+ throw new RuntimeException("Illegal type for StackMapType: " + t);
+ }
+ type = t;
+ }
+
+
+ public byte getType() {
+ return type;
+ }
+
+
+ public void setIndex( int t ) {
+ index = t;
+ }
+
+
+ /** @return index to constant pool if type == ITEM_Object, or offset
+ * in byte code, if type == ITEM_NewObject, and -1 otherwise
+ */
+ public int getIndex() {
+ return index;
+ }
+
+
+ /**
+ * Dump type entries to file.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeByte(type);
+ if (hasIndex()) {
+ file.writeShort(getIndex());
+ }
+ }
+
+
+ /** @return true, if type is either ITEM_Object or ITEM_NewObject
+ */
+ public final boolean hasIndex() {
+ return ((type == Constants.ITEM_Object) || (type == Constants.ITEM_NewObject));
+ }
+
+
+ private String printIndex() {
+ if (type == Constants.ITEM_Object) {
+ if (index < 0) {
+ return ", class=<unknown>";
+ }
+ return ", class=" + constant_pool.constantToString(index, Constants.CONSTANT_Class);
+ } else if (type == Constants.ITEM_NewObject) {
+ return ", offset=" + index;
+ } else {
+ return "";
+ }
+ }
+
+
+ /**
+ * @return String representation
+ */
+ public final String toString() {
+ return "(type=" + Constants.ITEM_NAMES[type] + printIndex() + ")";
+ }
+
+
+ /**
+ * @return deep copy of this object
+ */
+ public StackMapType copy() {
+ try {
+ return (StackMapType) clone();
+ } catch (CloneNotSupportedException e) {
+ }
+ return null;
+ }
+
+
+ /**
+ * @return Constant pool used by this object.
+ */
+ public final ConstantPool getConstantPool() {
+ return constant_pool;
+ }
+
+
+ /**
+ * @param constant_pool Constant pool to be used for this object.
+ */
+ public final void setConstantPool( ConstantPool constant_pool ) {
+ this.constant_pool = constant_pool;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: bcel-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: bcel-dev-help@jakarta.apache.org