Mercurial > hg > Members > kono > jpf-core
comparison src/main/gov/nasa/jpf/util/SourceRef.java @ 0:61d41facf527
initial v8 import (history reset)
author | Peter Mehlitz <Peter.C.Mehlitz@nasa.gov> |
---|---|
date | Fri, 23 Jan 2015 10:14:01 -0800 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:61d41facf527 |
---|---|
1 /* | |
2 * Copyright (C) 2014, United States Government, as represented by the | |
3 * Administrator of the National Aeronautics and Space Administration. | |
4 * All rights reserved. | |
5 * | |
6 * The Java Pathfinder core (jpf-core) platform is licensed under the | |
7 * Apache License, Version 2.0 (the "License"); you may not use this file except | |
8 * in compliance with the License. You may obtain a copy of the License at | |
9 * | |
10 * http://www.apache.org/licenses/LICENSE-2.0. | |
11 * | |
12 * Unless required by applicable law or agreed to in writing, software | |
13 * distributed under the License is distributed on an "AS IS" BASIS, | |
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
15 * See the License for the specific language governing permissions and | |
16 * limitations under the License. | |
17 */ | |
18 package gov.nasa.jpf.util; | |
19 | |
20 /** | |
21 * a source reference abstraction wrapping file and line information | |
22 */ | |
23 public class SourceRef { | |
24 public String fileName; | |
25 public int line; | |
26 | |
27 public SourceRef (String f, int l) { | |
28 if (f == null) { | |
29 fileName = "?"; | |
30 } else { | |
31 fileName = f; | |
32 } | |
33 | |
34 line = l; | |
35 } | |
36 | |
37 public SourceRef (String spec){ | |
38 int idx = spec.indexOf(':'); | |
39 if (idx > 0){ | |
40 fileName = spec.substring(0, idx); | |
41 line = Integer.parseInt(spec.substring(idx+1)); | |
42 } else { | |
43 fileName = spec; | |
44 line = 0; | |
45 } | |
46 } | |
47 | |
48 public String getLocationString() { | |
49 return (fileName + ':' + line); | |
50 } | |
51 | |
52 public String getLineString () { | |
53 Source source = Source.getSource(fileName); | |
54 if (source != null) { | |
55 return source.getLine(line); | |
56 } else { | |
57 return null; | |
58 } | |
59 } | |
60 | |
61 @Override | |
62 public boolean equals (Object o) { | |
63 if (o == null) { | |
64 return false; | |
65 } | |
66 | |
67 if (!(o instanceof SourceRef)) { | |
68 return false; | |
69 } | |
70 | |
71 SourceRef that = (SourceRef) o; | |
72 | |
73 if (this.fileName == null) { | |
74 return false; | |
75 } | |
76 | |
77 if (this.line == -1) { | |
78 return false; | |
79 } | |
80 | |
81 if (!this.fileName.equals(that.fileName)) { | |
82 return false; | |
83 } | |
84 | |
85 if (this.line != that.line) { | |
86 return false; | |
87 } | |
88 | |
89 return true; | |
90 } | |
91 | |
92 public boolean equals (String f, int l) { | |
93 if (fileName == null) { | |
94 return false; | |
95 } | |
96 | |
97 if (line == -1) { | |
98 return false; | |
99 } | |
100 | |
101 if (!fileName.equals(f)) { | |
102 return false; | |
103 } | |
104 | |
105 if (line != l) { | |
106 return false; | |
107 } | |
108 | |
109 return true; | |
110 } | |
111 | |
112 public boolean equals (String filePos){ | |
113 if (filePos.startsWith(fileName)){ | |
114 int len = fileName.length(); | |
115 if (filePos.charAt(len) == ':'){ | |
116 if (Integer.parseInt(filePos.substring(len+1)) == line){ | |
117 return true; | |
118 } | |
119 } | |
120 } | |
121 | |
122 return false; | |
123 } | |
124 | |
125 @Override | |
126 public int hashCode() { | |
127 assert false : "hashCode not designed"; | |
128 return 42; // any arbitrary constant will do | |
129 // thanks, FindBugs! | |
130 } | |
131 | |
132 public String getFileName () { | |
133 return fileName; | |
134 } | |
135 | |
136 public void set (SourceRef sr) { | |
137 fileName = sr.fileName; | |
138 line = sr.line; | |
139 } | |
140 | |
141 @Override | |
142 public String toString () { | |
143 return (fileName + ':' + line); | |
144 } | |
145 } |