1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 22:52:11 +02:00

Changed position trackers to use IRegion instead of Position.

This commit is contained in:
Markus Schorn 2006-07-12 14:04:55 +00:00
parent 8cd5946f7a
commit 8cf13ce26a
5 changed files with 35 additions and 28 deletions

View file

@ -18,7 +18,8 @@ import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.eclipse.cdt.internal.core.PositionTracker;
import org.eclipse.jface.text.Position;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.Region;
public class PositionTrackerTests extends TestCase {
public static Test suite() {
@ -260,13 +261,13 @@ public class PositionTrackerTests extends TestCase {
doubleCheck(pt, 2, 3);
// ranges
doubleRangeCheck(pt, new Position(0,2), new Position(0,3));
backwdRangeCheck(pt, new Position(0,1), new Position(0,2));
doubleRangeCheck(pt, new Position(0,1), new Position(0,1));
backwdRangeCheck(pt, new Position(1,0), new Position(1,1));
backwdRangeCheck(pt, new Position(1,0), new Position(1,0));
doubleRangeCheck(pt, new Position(1,1), new Position(2,1));
doubleRangeCheck(pt, new Position(1,0), new Position(2,0));
doubleRangeCheck(pt, new Region(0,2), new Region(0,3));
backwdRangeCheck(pt, new Region(0,1), new Region(0,2));
doubleRangeCheck(pt, new Region(0,1), new Region(0,1));
backwdRangeCheck(pt, new Region(1,0), new Region(1,1));
backwdRangeCheck(pt, new Region(1,0), new Region(1,0));
doubleRangeCheck(pt, new Region(1,1), new Region(2,1));
doubleRangeCheck(pt, new Region(1,0), new Region(2,0));
}
public void testDeletion() {
@ -282,13 +283,13 @@ public class PositionTrackerTests extends TestCase {
doubleCheck(pt, 3, 2);
// ranges
doubleRangeCheck(pt, new Position(0,3), new Position(0,2));
fwdRangeCheck (pt, new Position(0,2), new Position(0,1));
doubleRangeCheck(pt, new Position(0,1), new Position(0,1));
fwdRangeCheck (pt, new Position(1,1), new Position(1,0));
fwdRangeCheck (pt, new Position(1,0), new Position(1,0));
doubleRangeCheck(pt, new Position(2,1), new Position(1,1));
doubleRangeCheck(pt, new Position(2,0), new Position(1,0));
doubleRangeCheck(pt, new Region(0,3), new Region(0,2));
fwdRangeCheck (pt, new Region(0,2), new Region(0,1));
doubleRangeCheck(pt, new Region(0,1), new Region(0,1));
fwdRangeCheck (pt, new Region(1,1), new Region(1,0));
fwdRangeCheck (pt, new Region(1,0), new Region(1,0));
doubleRangeCheck(pt, new Region(2,1), new Region(1,1));
doubleRangeCheck(pt, new Region(2,0), new Region(1,0));
}
public void testReplace() {
@ -342,16 +343,16 @@ public class PositionTrackerTests extends TestCase {
assertEquals(orig, pt.historicOffset(mapped));
}
private void doubleRangeCheck(PositionTracker pt, Position orig, Position mapped) {
private void doubleRangeCheck(PositionTracker pt, IRegion orig, IRegion mapped) {
fwdRangeCheck(pt, orig, mapped);
backwdRangeCheck(pt, orig, mapped);
}
private void fwdRangeCheck(PositionTracker pt, Position orig, Position mapped) {
private void fwdRangeCheck(PositionTracker pt, IRegion orig, IRegion mapped) {
assertEquals(mapped, pt.historicToActual(orig));
}
private void backwdRangeCheck(PositionTracker pt, Position orig, Position mapped) {
private void backwdRangeCheck(PositionTracker pt, IRegion orig, IRegion mapped) {
assertEquals(orig, pt.actualToHistoric(mapped));
}
}

View file

@ -11,7 +11,8 @@
package org.eclipse.cdt.core;
import org.eclipse.jface.text.Position;
import org.eclipse.jface.text.IRegion;
/**
* Allows for converting character ranges of files previously stored on disk to the
@ -37,6 +38,8 @@ import org.eclipse.jface.text.Position;
* work or that it will remain the same. Please do not use this API without
* consulting with the CDT team.
* </p>
*
* @since 4.0
*/
public interface IPositionConverter {
@ -47,7 +50,7 @@ public interface IPositionConverter {
* @return a range suitable for the version of the file for which the converter
* was obtained.
*/
Position actualToHistoric(Position actualPosition);
IRegion actualToHistoric(IRegion actualPosition);
/**
* Converts a historic character range to the range where the underlying text
@ -56,5 +59,5 @@ public interface IPositionConverter {
* the converter was obtained.
* @return a range suitable for the current text buffer of the file.
*/
Position historicToActual(Position historicPosition);
IRegion historicToActual(IRegion historicPosition);
}

View file

@ -27,6 +27,7 @@ import org.eclipse.core.runtime.IPath;
* work or that it will remain the same. Please do not use this API without
* consulting with the CDT team.
* </p>
* @since 4.0
*/
public interface IPositionTrackerManager {
/**

View file

@ -14,7 +14,8 @@ package org.eclipse.cdt.internal.core;
import java.io.PrintStream;
import org.eclipse.cdt.core.IPositionConverter;
import org.eclipse.jface.text.Position;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.Region;
/**
* Tracks changes made to a text buffer, to afterwards recalculate positions.
@ -165,7 +166,7 @@ public class PositionTracker implements IPositionConverter {
return fAboveRoot.countNodes();
}
public synchronized Position actualToHistoric(Position actualPosition) {
public synchronized IRegion actualToHistoric(IRegion actualPosition) {
int actual= actualPosition.getOffset();
int len= actualPosition.getLength();
@ -174,10 +175,10 @@ public class PositionTracker implements IPositionConverter {
len= historicOffset(actual+len-1, false) - historic + 1;
}
assert len >= 0;
return new Position(historic, len);
return new Region(historic, len);
}
public synchronized Position historicToActual(Position historicPosition) {
public synchronized IRegion historicToActual(IRegion historicPosition) {
int historic= historicPosition.getOffset();
int len= historicPosition.getLength();
@ -186,7 +187,7 @@ public class PositionTracker implements IPositionConverter {
len= currentOffset(historic+len-1, false) - actual + 1;
}
assert len >= 0;
return new Position(actual, len);
return new Region(actual, len);
}
/**

View file

@ -25,7 +25,8 @@ import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.text.Position;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.Region;
import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.viewers.IOpenListener;
import org.eclipse.jface.viewers.ISelection;
@ -698,7 +699,7 @@ public class IBViewPart extends ViewPart
}
if (editor instanceof ITextEditor) {
ITextEditor te= (ITextEditor) editor;
Position pos= new Position(node.getDirectiveCharacterOffset(),
IRegion pos= new Region(node.getDirectiveCharacterOffset(),
node.getDirectiveName().length() + 2);
if (filebufferKey != null) {
IPositionConverter pc= CCorePlugin.getPositionTrackerManager().findPositionConverter(filebufferKey, timestamp);