org.codehaus.jackson.util

## Class TextBuffer

- java.lang.Object
- - org.codehaus.jackson.util.TextBuffer

-     public final class TextBuffer
      extends Object

  TextBuffer is a class similar to `StringBuffer`, with following differences:
  - TextBuffer uses segments character arrays, to avoid having to do additional array copies when array is not big enough. This means that only reallocating that is necessary is done only once: if and when caller wants to access contents in a linear array (char[], String).
  - TextBuffer can also be initialized in "shared mode", in which it will just act as a wrapper to a single char array managed by another object (like parser that owns it)
  - TextBuffer is not synchronized.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `TextBuffer(BufferRecycler allocator)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `append(char c)`
    `void` | `append(char[] c, int start, int len)`
    `void` | `append(String str, int offset, int len)`
    `char[]` | `contentsAsArray()`
    `BigDecimal` | `contentsAsDecimal()` Convenience method for converting contents of the buffer into a `BigDecimal`.
    `double` | `contentsAsDouble()` Convenience method for converting contents of the buffer into a Double value.
    `String` | `contentsAsString()`
    `char[]` | `emptyAndGetCurrentSegment()`
    `void` | `ensureNotShared()` Method called to make sure that buffer is not using shared input buffer; if it is, it will copy such contents to private buffer.
    `char[]` | `expandCurrentSegment()` Method called to expand size of the current segment, to accomodate for more contiguous content.
    `char[]` | `finishCurrentSegment()`
    `char[]` | `getCurrentSegment()`
    `int` | `getCurrentSegmentSize()`
    `char[]` | `getTextBuffer()`
    `int` | `getTextOffset()`
    `boolean` | `hasTextAsCharacters()` Method that can be used to check whether textual contents can be efficiently accessed using `getTextBuffer()`.
    `void` | `releaseBuffers()` Method called to indicate that the underlying buffers should now be recycled if they haven't yet been recycled.
    `void` | `resetWithCopy(char[] buf, int start, int len)`
    `void` | `resetWithEmpty()` Method called to clear out any content text buffer may have, and initializes buffer to use non-shared data.
    `void` | `resetWithShared(char[] buf, int start, int len)` Method called to initialize the buffer with a shared copy of data; this means that buffer will just have pointers to actual data.
    `void` | `resetWithString(String value)`
    `void` | `setCurrentLength(int len)`
    `int` | `size()`
    `String` | `toString()` Note: calling this method may not be as efficient as calling `contentsAsString()`, since it's not guaranteed that resulting String is cached.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### TextBuffer

          public TextBuffer(BufferRecycler allocator)

  - ### Method Detail

    - #### releaseBuffers

          public void releaseBuffers()

      Method called to indicate that the underlying buffers should now be recycled if they haven't yet been recycled. Although caller can still use this text buffer, it is not advisable to call this method if that is likely, since next time a buffer is needed, buffers need to reallocated. Note: calling this method automatically also clears contents of the buffer.

    - #### resetWithEmpty

          public void resetWithEmpty()

      Method called to clear out any content text buffer may have, and initializes buffer to use non-shared data.

    - #### resetWithShared

          public void resetWithShared(char[] buf,
                             int start,
                             int len)

      Method called to initialize the buffer with a shared copy of data; this means that buffer will just have pointers to actual data. It also means that if anything is to be appended to the buffer, it will first have to unshare it (make a local copy).

    - #### resetWithCopy

          public void resetWithCopy(char[] buf,
                           int start,
                           int len)

    - #### resetWithString

          public void resetWithString(String value)

    - #### size

          public int size()

      Returns:
        Number of characters currently stored by this collector

    - #### getTextOffset

          public int getTextOffset()

    - #### hasTextAsCharacters

          public boolean hasTextAsCharacters()

      Method that can be used to check whether textual contents can be efficiently accessed using `getTextBuffer()`.
      Since:
        1.9

    - #### getTextBuffer

          public char[] getTextBuffer()

    - #### contentsAsString

          public String contentsAsString()

    - #### contentsAsArray

          public char[] contentsAsArray()

    - #### contentsAsDecimal

          public BigDecimal contentsAsDecimal()
                                       throws NumberFormatException

      Convenience method for converting contents of the buffer into a `BigDecimal`.
      Throws:
        `NumberFormatException`

    - #### contentsAsDouble

          public double contentsAsDouble()
                                  throws NumberFormatException

      Convenience method for converting contents of the buffer into a Double value.
      Throws:
        `NumberFormatException`

    - #### ensureNotShared

          public void ensureNotShared()

      Method called to make sure that buffer is not using shared input buffer; if it is, it will copy such contents to private buffer.

    - #### append

          public void append(char c)

    - #### append

          public void append(char[] c,
                    int start,
                    int len)

    - #### append

          public void append(String str,
                    int offset,
                    int len)

    - #### getCurrentSegment

          public char[] getCurrentSegment()

    - #### emptyAndGetCurrentSegment

          public final char[] emptyAndGetCurrentSegment()

    - #### getCurrentSegmentSize

          public int getCurrentSegmentSize()

    - #### setCurrentLength

          public void setCurrentLength(int len)

    - #### finishCurrentSegment

          public char[] finishCurrentSegment()

    - #### expandCurrentSegment

          public char[] expandCurrentSegment()

      Method called to expand size of the current segment, to accomodate for more contiguous content. Usually only used when parsing tokens like names.

    - #### toString

          public String toString()

      Note: calling this method may not be as efficient as calling `contentsAsString()`, since it's not guaranteed that resulting String is cached.
      Overrides:
        `toString` in class `Object`