Package org.eclipse.jface.text

## Class CopyOnWriteTextStore

- java.lang.Object
- - org.eclipse.jface.text.CopyOnWriteTextStore

All Implemented Interfaces:
  `ITextStore`

    public class CopyOnWriteTextStore
    extends Object
    implements ITextStore

Copy-on-write `ITextStore` wrapper.

This implementation uses an unmodifiable text store for the initial content. Upon first modification attempt, the unmodifiable store is replaced with a modifiable instance which must be supplied in the constructor.

This class is not intended to be subclassed.

Since:
  3.2
Restriction:
  This class is not intended to be subclassed by clients.

### Field Summary

Fields
`protected ITextStore` `fTextStore` The underlying "real" text store

### Constructor Summary

Constructors
`CopyOnWriteTextStore​(ITextStore modifiableTextStore)` Creates an empty text store.

### Method Summary

All Methods Instance Methods Concrete Methods
`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.
`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`

### Field Detail

#### fTextStore

    protected ITextStore fTextStore

The underlying "real" text store

### Constructor Detail

#### CopyOnWriteTextStore

    public CopyOnWriteTextStore​(ITextStore modifiableTextStore)

Creates an empty text store. The given text store will be used upon first modification attempt.

Parameters:
  `modifiableTextStore` - a modifiable `ITextStore` instance, may not be `null`

### Method Detail

#### get

    public 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 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 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

#### replace

    public 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

#### set

    public 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