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 ReadTextBufferpublic char getChar(int offset)
throws java.lang.IndexOutOfBoundsException
getChar in interface ReadTextBufferoffset - 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 ReadTextBufferoffset - 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 ReadTextBufferoffset - 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 ReadTextBufferoffset - 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.IndexOutOfBoundsExceptionDocument.getText(int, int)public void readLock()
readLock in interface ReadTextBufferTextBuffer.getLineMap(),
TextBuffer.writeLock()public void readLockInterruptibly()
throws java.lang.InterruptedException
readLockInterruptibly in interface ReadTextBufferjava.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 ReadTextBufferReadTextBuffer.readLock()public void readUnlock()
readUnlock in interface ReadTextBufferpublic int getLockStatus()
getLockStatus in interface ReadTextBuffer