ICU 54.1 54.1

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- Data Structures
- Data Structure Index
- Class Hierarchy
- Data Fields

All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
icu::Appendable Class Reference

Base class for objects to which Unicode characters and strings can be appended. More...

`#include <appendable.h>`

Inheritance diagram for icu::Appendable:

## Public Member Functions
| ~Appendable ()
| Destructor.
virtual UBool | appendCodeUnit (UChar c)=0
| Appends a 16-bit code unit.
virtual UBool | appendCodePoint (UChar32 c)
| Appends a code point.
virtual UBool | appendString (const UChar *s, int32_t length)
| Appends a string.
virtual UBool | reserveAppendCapacity (int32_t appendCapacity)
| Tells the object that the caller is going to append roughly appendCapacity UChars.
virtual UChar * | getAppendBuffer (int32_t minCapacity, int32_t desiredCapacityHint, UChar *scratch, int32_t scratchCapacity, int32_t *resultCapacity)
| Returns a writable buffer for appending and writes the buffer's capacity to *resultCapacity.
Public Member Functions inherited from icu::UObject
virtual | ~UObject ()
| Destructor.
virtual UClassID | getDynamicClassID () const
| ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.

## Detailed Description

Base class for objects to which Unicode characters and strings can be appended.

Combines elements of Java Appendable and ICU4C ByteSink.

This class can be used in APIs where it does not matter whether the actual destination is a UnicodeString, a UChar[] array, a UnicodeSet, or any other object that receives and processes characters and/or strings.

Implementation classes must implement at least appendCodeUnit(UChar). The base class provides default implementations for the other methods.

The methods do not take UErrorCode parameters. If an error occurs (e.g., out-of-memory), in addition to returning FALSE from failing operations, the implementation must prevent unexpected behavior (e.g., crashes) from further calls and should make the error condition available separately (e.g., store a UErrorCode, make/keep a UnicodeString bogus).

Stable:
  ICU 4.8

Definition at line 49 of file appendable.h.

## Constructor & Destructor Documentation

icu::Appendable::~Appendable | ( |  | ) |

Destructor.

Stable:
  ICU 4.8

## Member Function Documentation

virtual UBool icu::Appendable::appendCodePoint | ( | UChar32 | c | ) |
| virtual

Appends a code point.

The default implementation calls appendCodeUnit(UChar) once or twice.

Parameters

  c | code point 0..0x10ffff

Returns
  TRUE if the operation succeeded

Stable:
  ICU 4.8

Reimplemented in icu::UnicodeStringAppendable.

virtual UBool icu::Appendable::appendCodeUnit | ( | UChar | c | ) |
| pure virtual

Appends a 16-bit code unit.

Parameters

  c | code unit

Returns
  TRUE if the operation succeeded

Stable:
  ICU 4.8

Implemented in icu::UnicodeStringAppendable.

virtual UBool icu::Appendable::appendString | ( | const UChar * | s,
|  | int32_t | length
| ) |  |
| virtual

Appends a string.

The default implementation calls appendCodeUnit(UChar) for each code unit.

Parameters

  s | string, must not be NULL if length!=0
  length | string length, or -1 if NUL-terminated

Returns
  TRUE if the operation succeeded

Stable:
  ICU 4.8

Reimplemented in icu::UnicodeStringAppendable.

virtual UChar* icu::Appendable::getAppendBuffer | ( | int32_t | minCapacity,
|  | int32_t | desiredCapacityHint,
|  | UChar * | scratch,
|  | int32_t | scratchCapacity,
|  | int32_t * | resultCapacity
| ) |  |
| virtual

Returns a writable buffer for appending and writes the buffer's capacity to *resultCapacity.

Guarantees *resultCapacity>=minCapacity. May return a pointer to the caller-owned scratch buffer which must have scratchCapacity>=minCapacity. The returned buffer is only valid until the next operation on this Appendable.

After writing at most *resultCapacity UChars, call appendString() with the pointer returned from this function and the number of UChars written. Many appendString() implementations will avoid copying UChars if this function returned an internal buffer.

Partial usage example:

int32_t capacity;
UChar* buffer = app.getAppendBuffer(..., &capacity);
... Write n UChars into buffer, with n <= capacity.
app.appendString(buffer, n);

In many implementations, that call to append will avoid copying UChars.

If the Appendable allocates or reallocates an internal buffer, it should use the desiredCapacityHint if appropriate. If a caller cannot provide a reasonable guess at the desired capacity, it should pass desiredCapacityHint=0.

If a non-scratch buffer is returned, the caller may only pass a prefix to it to appendString(). That is, it is not correct to pass an interior pointer to appendString().

The default implementation always returns the scratch buffer.

Parameters

  minCapacity | required minimum capacity of the returned buffer; must be non-negative
  desiredCapacityHint | desired capacity of the returned buffer; must be non-negative
  scratch | default caller-owned buffer
  scratchCapacity | capacity of the scratch buffer
  resultCapacity | pointer to an integer which will be set to the capacity of the returned buffer

Returns
  a buffer with *resultCapacity>=minCapacity

Stable:
  ICU 4.8

Reimplemented in icu::UnicodeStringAppendable.

virtual UBool icu::Appendable::reserveAppendCapacity | ( | int32_t | appendCapacity | ) |
| virtual

Tells the object that the caller is going to append roughly appendCapacity UChars.

A subclass might use this to pre-allocate a larger buffer if necessary. The default implementation does nothing. (It always returns TRUE.)

Parameters

  appendCapacity | estimated number of UChars that will be appended

Returns
  TRUE if the operation succeeded

Stable:
  ICU 4.8

Reimplemented in icu::UnicodeStringAppendable.

The documentation for this class was generated from the following file:

- appendable.h