KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > bcel > classfile > LineNumber


1 /*
2  * Copyright 2000-2004 The Apache Software Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */

17 package org.apache.bcel.classfile;
18
19 import java.io.DataInputStream JavaDoc;
20 import java.io.DataOutputStream JavaDoc;
21 import java.io.IOException JavaDoc;
22 import java.io.Serializable JavaDoc;
23
24 /**
25  * This class represents a (PC offset, line number) pair, i.e., a line number in
26  * the source that corresponds to a relative address in the byte code. This
27  * is used for debugging purposes.
28  *
29  * @version $Id: LineNumber.java 386056 2006-03-15 11:31:56Z tcurdt $
30  * @author <A HREF="mailto:m.dahm@gmx.de">M. Dahm</A>
31  * @see LineNumberTable
32  */

33 public final class LineNumber implements Cloneable JavaDoc, Node, Serializable JavaDoc {
34
35     private int start_pc; // Program Counter (PC) corresponds to line
36
private int line_number; // number in source file
37

38
39     /**
40      * Initialize from another object.
41      */

42     public LineNumber(LineNumber c) {
43         this(c.getStartPC(), c.getLineNumber());
44     }
45
46
47     /**
48      * Construct object from file stream.
49      * @param file Input stream
50      * @throws IOException
51      */

52     LineNumber(DataInputStream JavaDoc file) throws IOException JavaDoc {
53         this(file.readUnsignedShort(), file.readUnsignedShort());
54     }
55
56
57     /**
58      * @param start_pc Program Counter (PC) corresponds to
59      * @param line_number line number in source file
60      */

61     public LineNumber(int start_pc, int line_number) {
62         this.start_pc = start_pc;
63         this.line_number = line_number;
64     }
65
66
67     /**
68      * Called by objects that are traversing the nodes of the tree implicitely
69      * defined by the contents of a Java class. I.e., the hierarchy of methods,
70      * fields, attributes, etc. spawns a tree of objects.
71      *
72      * @param v Visitor object
73      */

74     public void accept( Visitor v ) {
75         v.visitLineNumber(this);
76     }
77
78
79     /**
80      * Dump line number/pc pair to file stream in binary format.
81      *
82      * @param file Output file stream
83      * @throws IOException
84      */

85     public final void dump( DataOutputStream JavaDoc file ) throws IOException JavaDoc {
86         file.writeShort(start_pc);
87         file.writeShort(line_number);
88     }
89
90
91     /**
92      * @return Corresponding source line
93      */

94     public final int getLineNumber() {
95         return line_number;
96     }
97
98
99     /**
100      * @return PC in code
101      */

102     public final int getStartPC() {
103         return start_pc;
104     }
105
106
107     /**
108      * @param line_number the source line number
109      */

110     public final void setLineNumber( int line_number ) {
111         this.line_number = line_number;
112     }
113
114
115     /**
116      * @param start_pc the pc for this line number
117      */

118     public final void setStartPC( int start_pc ) {
119         this.start_pc = start_pc;
120     }
121
122
123     /**
124      * @return String representation
125      */

126     public final String JavaDoc toString() {
127         return "LineNumber(" + start_pc + ", " + line_number + ")";
128     }
129
130
131     /**
132      * @return deep copy of this object
133      */

134     public LineNumber copy() {
135         try {
136             return (LineNumber) clone();
137         } catch (CloneNotSupportedException JavaDoc e) {
138         }
139         return null;
140     }
141 }
142
Popular Tags