public final class HistoryReadTextBuffer extends java.lang.Object implements ReadTextBuffer
HistoryReadTextBuffer
is a decorator around a
ReadTextBuffer to aid in damage calculations by allowing a client
to examine a single prior version of the ReadTextBuffer if the
document event representating the change is available. Note that certain methods have not been implemented, since they are not needed to work with a Lexer implementation.
LOCK_STATUS_NONE, LOCK_STATUS_READ, LOCK_STATUS_UNSUPPORTED, LOCK_STATUS_WRITE
Modifier and Type | Method and Description |
---|---|
static HistoryReadTextBuffer |
acquireReadTextBuffer(ReadTextBuffer buffer,
BasicDocumentEvent event)
Acquire a shared (reused) wrapper text buffer for use.
|
char |
getChar(int offset)
Fetches the character from the given offset.
|
char[] |
getChars(int offset,
int length)
Fetches a number of characters from the indicated offset in the
buffer.
|
int |
getLength()
Fetches the number of characters in this buffer.
|
int |
getLockStatus()
Fetch the lock status for the current thread only.
|
java.lang.String |
getString(int offset,
int length)
Fetches a number of characters from the indicated offset in the
buffer and returns it as a String.
|
void |
getText(int offset,
int length,
javax.swing.text.Segment segment)
Fetches the text contained within the given section of the
TextBuffer The Segment object is
provided by the caller. |
void |
readLock()
Attempts to acquire a read lock on this text buffer for the
purposes of reading the buffer - this is a blocking call.
|
void |
readLockInterruptibly()
Attempts to acquire a read lock on this text buffer for the
purposes of reading the buffer - this is a blocking call.
|
void |
readUnlock()
Releases a held read lock on this text buffer.
|
static void |
releaseReadTextBuffer(HistoryReadTextBuffer buffer)
Release the wrapper text buffer so that it can be re-used.
|
boolean |
tryReadLock()
Attempts to acquire a read lock on this buffer in a non-blocking
manner.
|
public static HistoryReadTextBuffer acquireReadTextBuffer(ReadTextBuffer buffer, BasicDocumentEvent event)
buffer
- the buffer we want to readevent
- the change that was applied to that bufferpublic static void releaseReadTextBuffer(HistoryReadTextBuffer buffer)
buffer
- the wrapper to releasepublic int getLength()
getLength
in interface ReadTextBuffer
public char getChar(int offset) throws java.lang.IndexOutOfBoundsException
getChar
in interface ReadTextBuffer
offset
- the offset in the buffer to get the character fromjava.lang.IndexOutOfBoundsException
- if offset is invalidpublic char[] getChars(int offset, int length) throws java.lang.IndexOutOfBoundsException
getChars
in interface ReadTextBuffer
offset
- the offset in the buffer to start fromlength
- number of characters to fetchjava.lang.IndexOutOfBoundsException
- if offset or length are invalidpublic java.lang.String getString(int offset, int length) throws java.lang.IndexOutOfBoundsException
getString
in interface ReadTextBuffer
offset
- the offset in the buffer to start fromlength
- number of characters to fetchjava.lang.IndexOutOfBoundsException
- if offset or length are invalidpublic void getText(int offset, int length, javax.swing.text.Segment segment) throws java.lang.IndexOutOfBoundsException
TextBuffer
The Segment
object is
provided by the caller. This is not currently implemented.getText
in interface ReadTextBuffer
offset
- the offset into the buffer representing the desired
start of the data >= 0length
- the length of the desired data >= 0segment
- the caller's Segment object to return the data injava.lang.IndexOutOfBoundsException
Document.getText(int, int)
public void readLock()
readLock
in interface ReadTextBuffer
TextBuffer.getLineMap()
,
TextBuffer.writeLock()
public void readLockInterruptibly() throws java.lang.InterruptedException
readLockInterruptibly
in interface ReadTextBuffer
java.lang.InterruptedException
- if the current thread is in or gets put in
the interrupted state. The interrupted state
is cleared when this exception is thrown.TextBuffer.getLineMap()
,
TextBuffer.writeLock()
public boolean tryReadLock()
tryReadLock
in interface ReadTextBuffer
ReadTextBuffer.readLock()
public void readUnlock()
readUnlock
in interface ReadTextBuffer
public int getLockStatus()
getLockStatus
in interface ReadTextBuffer