001 package edu.rice.cs.cunit.classFile.attributes;
002
003 import edu.rice.cs.cunit.classFile.attributes.visitors.IAttributeVisitor;
004 import edu.rice.cs.cunit.classFile.code.instructions.LineNumberTable;
005 import edu.rice.cs.cunit.classFile.constantPool.APoolInfo;
006 import edu.rice.cs.cunit.classFile.constantPool.AUTFPoolInfo;
007 import edu.rice.cs.cunit.classFile.constantPool.ConstantPool;
008 import edu.rice.cs.cunit.classFile.constantPool.visitors.CheckUTFVisitor;
009 import edu.rice.cs.cunit.classFile.ClassFile;
010 import edu.rice.cs.cunit.util.Types;
011
012 import java.util.ArrayList;
013
014 /**
015 * Represents the Deprecated attribute in a class file.
016 *
017 * @author Mathias Ricken
018 */
019 public class DeprecatedAttributeInfo extends AAttributeInfo {
020 /**
021 * Constructor.
022 *
023 * @param name attribute name
024 * @param data attribute data
025 * @param cp constant pool
026 *
027 * @throws ClassFormatError
028 */
029 public DeprecatedAttributeInfo(AUTFPoolInfo name, byte[] data, ConstantPool cp) throws ClassFormatError {
030 super(name, data, cp);
031 }
032
033 /**
034 * Execute a visitor on this attribute.
035 *
036 * @param visitor visitor
037 * @param param visitor-specific parameter
038 *
039 * @return visitor-specific return value
040 */
041 public <R, D> R execute(IAttributeVisitor<R, D> visitor, D param) {
042 return visitor.deprecatedCase(this, param);
043 }
044
045 /**
046 * Adjust program counter values contained in this attribute, starting at startPC, by adding deltaPC to them.
047 *
048 * @param startPC program counter to start at
049 * @param deltaPC change in program counter values
050 */
051 public void adjustPC(int startPC, int deltaPC) {
052 // nothing to do
053 }
054
055 /**
056 * Translate the program counter values contained in this attribute from an old line number table to a new one.
057 *
058 * @param index critical point (insertion or deletion point)
059 * @param deltaIndex delta value to add to all old line numbers greater than the critical point
060 * @param oldLnt old line number table
061 * @param newLnt new line number table
062 */
063 public void translatePC(int index, int deltaIndex, LineNumberTable oldLnt, LineNumberTable newLnt) {
064 // nothing to do
065 }
066
067 /**
068 * Creates and returns a copy of this object.
069 */
070 public Object clone() throws CloneNotSupportedException {
071 return super.clone();
072 }
073
074 /**
075 * Return a human-readable version of this attribute.
076 *
077 * @return string
078 */
079 public String toString() {
080 return "Deprecated";
081 }
082
083 /**
084 * Returns the name of the attribute as it appears in the class file.
085 *
086 * @return name of the attribute.
087 */
088 public static String getAttributeName() {
089 return "Deprecated";
090 }
091 }