View Javadoc

1   package serp.bytecode;
2   
3   import java.io.*;
4   
5   import serp.bytecode.visitor.*;
6   
7   /***
8    * An unrecognized attribute; class files are allowed to contain
9    * attributes that are not recognized, and the JVM must ignore them.
10   *
11   * @author Abe White
12   */
13  public class UnknownAttribute extends Attribute {
14      private byte[] _value = new byte[0];
15  
16      UnknownAttribute(int nameIndex, Attributes owner) {
17          super(nameIndex, owner);
18      }
19  
20      int getLength() {
21          return _value.length;
22      }
23  
24      /***
25       * The value is of unknown content, so it is stored as a byte array.
26       */
27      public byte[] getValue() {
28          return _value;
29      }
30  
31      /***
32       * The value is of unknown content, so it is stored as a byte array.
33       */
34      public void setValue(byte[] value) {
35          if (value == null)
36              value = new byte[0];
37          _value = value;
38      }
39  
40      public void acceptVisit(BCVisitor visit) {
41          visit.enterUnknownAttribute(this);
42          visit.exitUnknownAttribute(this);
43      }
44  
45      void read(Attribute other) {
46          setValue(((UnknownAttribute) other).getValue());
47      }
48  
49      void read(DataInput in, int length) throws IOException {
50          _value = new byte[length];
51          in.readFully(_value);
52      }
53  
54      void write(DataOutput out, int length) throws IOException {
55          out.write(_value);
56      }
57  }