128 lines
3.0 KiB
Java
128 lines
3.0 KiB
Java
/*******************************************************************************
|
|
* Copyright (c) 2013 IBM Corporation.
|
|
* All rights reserved. This program and the accompanying materials
|
|
* are made available under the terms of the Eclipse Public License v1.0
|
|
* which accompanies this distribution, and is available at
|
|
* http://www.eclipse.org/legal/epl-v10.html
|
|
*
|
|
* Contributors:
|
|
* IBM Corporation - initial API and implementation
|
|
*******************************************************************************/
|
|
package com.ibm.wala.ide.util;
|
|
|
|
import java.io.IOException;
|
|
import java.io.Reader;
|
|
import java.net.MalformedURLException;
|
|
import java.net.URL;
|
|
|
|
import org.eclipse.core.resources.IFile;
|
|
|
|
import com.ibm.wala.cast.tree.CAstSourcePositionMap.Position;
|
|
import com.ibm.wala.util.debug.Assertions;
|
|
|
|
public final class JdtPosition implements Position {
|
|
private final int firstOffset;
|
|
|
|
private final int lastOffset;
|
|
|
|
private final int firstLine, lastLine;
|
|
|
|
private final String path;
|
|
|
|
private final IFile eclipseFile;
|
|
|
|
public JdtPosition(int start, int end, int startLine, int endLine, IFile eclipseFile, String path) {
|
|
firstOffset = start;
|
|
lastOffset = end;
|
|
firstLine = startLine;
|
|
lastLine = endLine;
|
|
this.path = path;
|
|
this.eclipseFile = eclipseFile;
|
|
}
|
|
|
|
@Override
|
|
public int getFirstCol() {
|
|
return -1;
|
|
}
|
|
|
|
@Override
|
|
public int getFirstLine() {
|
|
return firstLine;
|
|
}
|
|
|
|
@Override
|
|
public Reader getReader() throws IOException {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public int getLastCol() {
|
|
return -1;
|
|
}
|
|
|
|
@Override
|
|
public int getLastLine() {
|
|
return lastLine;
|
|
}
|
|
|
|
@Override
|
|
public URL getURL() {
|
|
try {
|
|
return new URL("file:" + path);
|
|
} catch (MalformedURLException e) {
|
|
Assertions.UNREACHABLE(e.toString());
|
|
return null;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int compareTo(Object arg0) {
|
|
if (arg0 instanceof JdtPosition) {
|
|
if (firstOffset != ((JdtPosition)arg0).firstOffset) {
|
|
return firstOffset - ((JdtPosition)arg0).firstOffset;
|
|
} else if (lastOffset != ((JdtPosition)arg0).lastOffset) {
|
|
return lastOffset - ((JdtPosition)arg0).lastOffset;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
@Override
|
|
public int getFirstOffset() {
|
|
return firstOffset;
|
|
}
|
|
|
|
@Override
|
|
public int getLastOffset() {
|
|
return lastOffset;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "[offset " + firstOffset + ":" + lastOffset + "]";
|
|
}
|
|
|
|
public IFile getEclipseFile() {
|
|
return eclipseFile;
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object obj) {
|
|
if (obj instanceof JdtPosition) {
|
|
JdtPosition jp = (JdtPosition) obj;
|
|
return jp.getEclipseFile().equals(eclipseFile)
|
|
&& jp.getFirstOffset() == firstOffset
|
|
&& jp.getLastOffset() == lastOffset;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
return firstOffset + 12432*lastOffset;
|
|
}
|
|
|
|
}
|