org.eclipse.jface.text
Class GapTextStore
java.lang.Object
org.eclipse.jface.text.GapTextStore
-
All Implemented Interfaces:
-
ITextStore
-
public class GapTextStore
- extends
Object
- implements
ITextStore
Implements a gap managing text store. The gap text store relies on the assumption that
consecutive changes to a document are co-located. The start of the gap is always moved to the
location of the last change.
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.
-
See Also:
-
for a copy-on-write text store wrapper
-
Restriction:
- This class is not intended to be subclassed by clients.
Method Summary
|
char
|
get
(int offset)
Returns the character at the specified offset. |
String
|
get
(int offset,
int length)
Returns the text of the specified character range. |
protected
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,
String text)
Replaces the specified character range with the given text. |
void
|
set
(
String text)
Replace the content of the text store with the given text. |
Methods inherited from class java.lang.
Object
|
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait
|
GapTextStore
public GapTextStore(int lowWatermark,
int highWatermark)
-
Deprecated. use
GapTextStore(int, int, float)
instead
- Creates a new empty text store using the specified low and high watermarks.
-
Parameters:
-
lowWatermark
- unused - at the lower bound, the array is only resized when the content
does not fit -
highWatermark
- if the gap is ever larger than this, it will automatically be shrunken
(>= 0)
GapTextStore
public GapTextStore()
- Equivalent to
new GapTextStore(256, 4096, 0.1f).
-
Since:
- 3.3
GapTextStore
public GapTextStore(int minSize,
int maxSize,
float maxGapFactor)
- Creates an empty text store that uses re-allocation thresholds relative to the content
length. Re-allocation is controlled by the gap factor, which is the quotient of
the gap size and the array size. Re-allocation occurs if a change causes the gap factor to go
outside
[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.
-
Parameters:
-
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
) -
Since:
- 3.3
get
public final char get(int offset)
-
Description copied from interface:
ITextStore
- Returns the character at the specified offset.
-
-
Specified by:
-
get
in interface
ITextStore
-
-
Parameters:
-
offset
- the offset in this text store
-
Returns:
- the character at this offset
get
public final
String get(int offset,
int length)
-
Description copied from interface:
ITextStore
- Returns the text of the specified character range.
-
-
Specified by:
-
get
in interface
ITextStore
-
-
Parameters:
-
offset
- the offset of the range -
length
- the length of the range
-
Returns:
- the text of the range
getLength
public final int getLength()
-
Description copied from interface:
ITextStore
- Returns number of characters stored in this text store.
-
-
Specified by:
-
getLength
in interface
ITextStore
-
-
Returns:
- the number of characters stored in this text store
set
public final void set(
String text)
-
Description copied from interface:
ITextStore
- Replace the content of the text store with the given text.
Convenience method for
replace(0, getLength(), text
.
-
-
Specified by:
-
set
in interface
ITextStore
-
-
Parameters:
-
text
- the new content of the text store
replace
public final void replace(int offset,
int length,
String text)
-
Description copied from interface:
ITextStore
- Replaces the specified character range with the given text.
replace(getLength(), 0, "some text")
is a valid
call and appends text to the end of the text store.
-
-
Specified by:
-
replace
in interface
ITextStore
-
-
Parameters:
-
offset
- the offset of the range to be replaced -
length
- the number of characters to be replaced -
text
- the substitution text
getContentAsString
protected
String getContentAsString()
- Returns a copy of the content of this text store.
For internal use only.
-
-
-
Returns:
- a copy of the content of this text store
getGapStartIndex
protected int getGapStartIndex()
- Returns the start index of the gap managed by this text store.
For internal use only.
-
-
-
Returns:
- the start index of the gap managed by this text store
getGapEndIndex
protected int getGapEndIndex()
- Returns the end index of the gap managed by this text store.
For internal use only.
-
-
-
Returns:
- the end index of the gap managed by this text store
Guidelines for using Eclipse APIs.
Copyright (c) Eclipse contributors and others 2000, 2008. All rights reserved.