WALA/com.ibm.wala.ide.jdt/source/com/ibm/wala/ide/util/JdtPosition.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;
}
}