public class GapTextStore extends java.lang.Object implements ITextStore
Performance: Typing-style changes perform in constant time
unless re-allocation becomes necessary. Generally, a change that does not
cause re-allocation will cause at most one
arraycopy
operation of a length of about d, where d is the
distance from the previous change. Let a(x) be the algorithmic
performance of an arraycopy operation of the length
x, then such a change then performs in O(a(x)),
get(int, length) performs in
O(a(length)), get(int) in O(1).
How frequently the array needs re-allocation is controlled by the constructor parameters.
This class is not intended to be subclassed.
| Constructor and Description |
|---|
GapTextStore()
Equivalent to new
GapTextStore(256, 4096, 0.1f).
|
GapTextStore(int lowWatermark,
int highWatermark)
Deprecated.
use
GapTextStore(int, int, float)
instead |
GapTextStore(int minSize,
int maxSize,
float maxGapFactor)
Creates an empty text store that uses re-allocation thresholds relative
to the content length.
|
| Modifier and Type | Method and Description |
|---|---|
char |
get(int offset)
Returns the character at the specified offset.
|
java.lang.String |
get(int offset,
int length)
Returns the text of the specified character range.
|
protected java.lang.String |
getContentAsString()
Returns a copy of the content of this text store.
|
protected int |
getGapEndIndex()
Returns the end index of the gap managed by this text store.
|
protected int |
getGapStartIndex()
Returns the start index of the gap managed by this text store.
|
int |
getLength()
Returns number of characters stored in this text store.
|
void |
replace(int offset,
int length,
java.lang.String text)
Replaces the specified character range with the given text.
|
void |
set(java.lang.String text)
Replace the content of the text store with the given text.
|
public GapTextStore(int lowWatermark,
int highWatermark)
GapTextStore(int, int, float)
insteadlowWatermark - unused - at the lower bound, the array is only resized when
the content does not fithighWatermark - if the gap is ever larger than this, it will automatically be
shrunken (>= 0)public GapTextStore()
public GapTextStore(int minSize,
int maxSize,
float maxGapFactor)
[0, maxGapFactor]. When re-allocation occurs,
the array is sized such that the gap factor is
0.5 * maxGapFactor. The gap size computed in this manner is
bounded by the minSize and maxSize parameters.
A maxGapFactor of 0 creates a text store that
never has a gap at all (if minSize is 0); a
maxGapFactor of 1 creates a text store that
doubles its size with every re-allocation and that never shrinks.
The minSize and maxSize parameters are absolute
bounds to the allocated gap size. Use minSize to avoid
frequent re-allocation for small documents. Use maxSize to
avoid a huge gap being allocated for large documents.
minSize - the minimum gap size to allocate (>= 0; use 0 for no
minimum)maxSize - the maximum gap size to allocate (>= minSize; use
Integer.MAX_VALUE for no maximum)maxGapFactor - is the maximum fraction of the array that is occupied by the
gap (
0 <= maxGapFactor <= 1)public final char get(int offset)
ITextStoreget in interface ITextStoreoffset - the offset in this text storepublic final java.lang.String get(int offset,
int length)
ITextStoreget in interface ITextStoreoffset - the offset of the rangelength - the length of the rangepublic final int getLength()
ITextStoregetLength in interface ITextStorepublic final void set(java.lang.String text)
ITextStorereplace(0, getLength(), text.set in interface ITextStoretext - the new content of the text storepublic final void replace(int offset,
int length,
java.lang.String text)
ITextStorereplace(getLength(), 0, "some text") is a valid call and
appends text to the end of the text store.replace in interface ITextStoreoffset - the offset of the range to be replacedlength - the number of characters to be replacedtext - the substitution textprotected java.lang.String getContentAsString()
protected int getGapStartIndex()
protected int getGapEndIndex()