Package org.jparsec
Class SourceLocator
- java.lang.Object
-
- org.jparsec.SourceLocator
-
final class SourceLocator extends java.lang.ObjectLocates the line and column number of a 0-based index in the source.This class internally keeps a cache of the indices of all the line break characters scanned so far, therefore repeated location lookup can be done in amortized log(n) time.
It is not multi-thread safe.
-
-
Field Summary
Fields Modifier and Type Field Description private static charLINE_BREAKThe line break character.(package private) IntListlineBreakIndicesThe 0-based indices of the line break characters scanned so far.(package private) intnextColumnIndexThe 0-based index of the column of the next character to be scanned.(package private) intnextIndexThe 0-based index of the next character to be scanned.private java.lang.CharSequencesourceprivate intstartColumnNumberThe first column number.private intstartLineNumberThe first line number.
-
Constructor Summary
Constructors Constructor Description SourceLocator(java.lang.CharSequence source)Creates aSourceLocatorobject.SourceLocator(java.lang.CharSequence source, int lineNumber, int columnNumber)Creates aSourceLocatorobject.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) static intbinarySearch(IntList ascendingInts, int value)Uses binary search to look up the index of the first element inascendingIntsthat's greater than or equal tovalue.private intgetLineBreakColumnIndex(int lineIndex)Gets the 0-based column number of the line break character for line identified bylineIndex.private LocationgetLineBreakLocation(int lineIndex)(package private) Locationlocate(int index)private Locationlocation(int l, int c)(package private) Locationlookup(int index)Looks up the location identified byindusing the cached indices of line break characters.(package private) LocationscanTo(int index)Scans fromnextIndextoindand saves all indices of line break characters intolineBreakIndicesand adjusts the current column number as it goes.
-
-
-
Field Detail
-
LINE_BREAK
private static final char LINE_BREAK
The line break character.- See Also:
- Constant Field Values
-
source
private final java.lang.CharSequence source
-
lineBreakIndices
final IntList lineBreakIndices
The 0-based indices of the line break characters scanned so far.
-
startLineNumber
private final int startLineNumber
The first line number.
-
startColumnNumber
private final int startColumnNumber
The first column number.
-
nextIndex
int nextIndex
The 0-based index of the next character to be scanned.
-
nextColumnIndex
int nextColumnIndex
The 0-based index of the column of the next character to be scanned.
-
-
Constructor Detail
-
SourceLocator
SourceLocator(java.lang.CharSequence source)
Creates aSourceLocatorobject.- Parameters:
source- the source.
-
SourceLocator
SourceLocator(java.lang.CharSequence source, int lineNumber, int columnNumber)Creates aSourceLocatorobject.- Parameters:
source- the source.lineNumber- the starting line number.columnNumber- the starting column number.
-
-
Method Detail
-
locate
Location locate(int index)
-
lookup
Location lookup(int index)
Looks up the location identified byindusing the cached indices of line break characters. This assumes that all line-break characters beforeindare already scanned.
-
scanTo
Location scanTo(int index)
Scans fromnextIndextoindand saves all indices of line break characters intolineBreakIndicesand adjusts the current column number as it goes. The location of the character onindis returned.After this method returns,
nextIndexandnextColumnIndexwill point to the next character to be scanned or the EOF if the end of input is encountered.
-
getLineBreakColumnIndex
private int getLineBreakColumnIndex(int lineIndex)
Gets the 0-based column number of the line break character for line identified bylineIndex.
-
getLineBreakLocation
private Location getLineBreakLocation(int lineIndex)
-
location
private Location location(int l, int c)
-
binarySearch
static int binarySearch(IntList ascendingInts, int value)
Uses binary search to look up the index of the first element inascendingIntsthat's greater than or equal tovalue. If all elements are smaller thanvalue,ascendingInts.size()is returned.
-
-