16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 */
21
22 package com.sun.org.apache.bcel.internal.classfile;
23
24 import java.io.DataInput;
25 import java.io.DataOutputStream;
26 import java.io.IOException;
27
28 import com.sun.org.apache.bcel.internal.Const;
29
30 /**
31 * This class is derived from <em>Attribute</em> and represents a reference
32 * to the source file of this class. At most one SourceFile attribute
33 * should appear per classfile. The intention of this class is that it is
34 * instantiated from the <em>Attribute.readAttribute()</em> method.
35 *
36 * @version $Id$
37 * @see Attribute
38 */
39 public final class SourceFile extends Attribute {
40
41 private int sourcefile_index;
42
43
44 /**
45 * Initialize from another object. Note that both objects use the same
46 * references (shallow copy). Use clone() for a physical copy.
47 */
48 public SourceFile(final SourceFile c) {
49 this(c.getNameIndex(), c.getLength(), c.getSourceFileIndex(), c.getConstantPool());
50 }
51
52
53 /**
54 * Construct object from input stream.
55 * @param name_index Index in constant pool to CONSTANT_Utf8
56 * @param length Content length in bytes
86 /**
87 * Called by objects that are traversing the nodes of the tree implicitely
88 * defined by the contents of a Java class. I.e., the hierarchy of methods,
89 * fields, attributes, etc. spawns a tree of objects.
90 *
91 * @param v Visitor object
92 */
93 @Override
94 public void accept( final Visitor v ) {
95 v.visitSourceFile(this);
96 }
97
98
99 /**
100 * Dump source file attribute to file stream in binary format.
101 *
102 * @param file Output file stream
103 * @throws IOException
104 */
105 @Override
106 public final void dump( final DataOutputStream file ) throws IOException {
107 super.dump(file);
108 file.writeShort(sourcefile_index);
109 }
110
111
112 /**
113 * @return Index in constant pool of source file name.
114 */
115 public final int getSourceFileIndex() {
116 return sourcefile_index;
117 }
118
119
120 /**
121 * @param sourcefile_index
122 */
123 public final void setSourceFileIndex( final int sourcefile_index ) {
124 this.sourcefile_index = sourcefile_index;
125 }
126
127
128 /**
129 * @return Source file name.
130 */
131 public final String getSourceFileName() {
132 final ConstantUtf8 c = (ConstantUtf8) super.getConstantPool().getConstant(sourcefile_index,
133 Const.CONSTANT_Utf8);
134 return c.getBytes();
135 }
136
137
138 /**
139 * @return String representation
140 */
141 @Override
142 public final String toString() {
143 return "SourceFile: " + getSourceFileName();
144 }
145
146
147 /**
148 * @return deep copy of this attribute
149 */
150 @Override
151 public Attribute copy( final ConstantPool _constant_pool ) {
152 return (Attribute) clone();
153 }
154 }
|
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 */
21
22 package com.sun.org.apache.bcel.internal.classfile;
23
24 import java.io.DataInput;
25 import java.io.DataOutputStream;
26 import java.io.IOException;
27
28 import com.sun.org.apache.bcel.internal.Const;
29
30 /**
31 * This class is derived from <em>Attribute</em> and represents a reference
32 * to the source file of this class. At most one SourceFile attribute
33 * should appear per classfile. The intention of this class is that it is
34 * instantiated from the <em>Attribute.readAttribute()</em> method.
35 *
36 * @see Attribute
37 */
38 public final class SourceFile extends Attribute {
39
40 private int sourcefile_index;
41
42
43 /**
44 * Initialize from another object. Note that both objects use the same
45 * references (shallow copy). Use clone() for a physical copy.
46 */
47 public SourceFile(final SourceFile c) {
48 this(c.getNameIndex(), c.getLength(), c.getSourceFileIndex(), c.getConstantPool());
49 }
50
51
52 /**
53 * Construct object from input stream.
54 * @param name_index Index in constant pool to CONSTANT_Utf8
55 * @param length Content length in bytes
85 /**
86 * Called by objects that are traversing the nodes of the tree implicitely
87 * defined by the contents of a Java class. I.e., the hierarchy of methods,
88 * fields, attributes, etc. spawns a tree of objects.
89 *
90 * @param v Visitor object
91 */
92 @Override
93 public void accept( final Visitor v ) {
94 v.visitSourceFile(this);
95 }
96
97
98 /**
99 * Dump source file attribute to file stream in binary format.
100 *
101 * @param file Output file stream
102 * @throws IOException
103 */
104 @Override
105 public void dump( final DataOutputStream file ) throws IOException {
106 super.dump(file);
107 file.writeShort(sourcefile_index);
108 }
109
110
111 /**
112 * @return Index in constant pool of source file name.
113 */
114 public int getSourceFileIndex() {
115 return sourcefile_index;
116 }
117
118
119 /**
120 * @param sourcefile_index
121 */
122 public void setSourceFileIndex( final int sourcefile_index ) {
123 this.sourcefile_index = sourcefile_index;
124 }
125
126
127 /**
128 * @return Source file name.
129 */
130 public String getSourceFileName() {
131 final ConstantUtf8 c = (ConstantUtf8) super.getConstantPool().getConstant(sourcefile_index,
132 Const.CONSTANT_Utf8);
133 return c.getBytes();
134 }
135
136
137 /**
138 * @return String representation
139 */
140 @Override
141 public String toString() {
142 return "SourceFile: " + getSourceFileName();
143 }
144
145
146 /**
147 * @return deep copy of this attribute
148 */
149 @Override
150 public Attribute copy( final ConstantPool _constant_pool ) {
151 return (Attribute) clone();
152 }
153 }
|