ICU 4.8.1.1  4.8.1.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
ByteSink Class Referenceabstract

A ByteSink can be filled with bytes. More...

#include <bytestream.h>

Inheritance diagram for ByteSink:
UMemory CheckedArrayByteSink

Public Member Functions

 ByteSink ()
 Default constructor. More...
 
virtual ~ByteSink ()
 Virtual destructor. More...
 
virtual void Append (const char *bytes, int32_t n)=0
 Append "bytes[0,n-1]" to this. More...
 
virtual char * GetAppendBuffer (int32_t min_capacity, int32_t desired_capacity_hint, char *scratch, int32_t scratch_capacity, int32_t *result_capacity)
 Returns a writable buffer for appending and writes the buffer's capacity to *result_capacity. More...
 
virtual void Flush ()
 Flush internal buffers. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from UMemory
static void * operator new (size_t size)
 Override for ICU4C C++ memory management. More...
 
static void * operator new[] (size_t size)
 Override for ICU4C C++ memory management. More...
 
static void operator delete (void *p)
 Override for ICU4C C++ memory management. More...
 
static void operator delete[] (void *p)
 Override for ICU4C C++ memory management. More...
 
static void * operator new (size_t, void *ptr)
 Override for ICU4C C++ memory management for STL. More...
 
static void operator delete (void *, void *)
 Override for ICU4C C++ memory management for STL. More...
 

Detailed Description

A ByteSink can be filled with bytes.

Stable:
ICU 4.2

Definition at line 48 of file bytestream.h.

Constructor & Destructor Documentation

ByteSink::ByteSink ( )
inline

Default constructor.

Stable:
ICU 4.2

Definition at line 54 of file bytestream.h.

virtual ByteSink::~ByteSink ( )
inlinevirtual

Virtual destructor.

Stable:
ICU 4.2

Definition at line 59 of file bytestream.h.

Member Function Documentation

virtual void ByteSink::Append ( const char *  bytes,
int32_t  n 
)
pure virtual

Append "bytes[0,n-1]" to this.

Parameters
bytesthe pointer to the bytes
nthe number of bytes; must be non-negative
Stable:
ICU 4.2

Implemented in CheckedArrayByteSink.

virtual void ByteSink::Flush ( )
virtual

Flush internal buffers.

Some byte sinks use internal buffers or provide buffering and require calling Flush() at the end of the stream. The ByteSink should be ready for further Append() calls after Flush(). The default implementation of Flush() does nothing.

Stable:
ICU 4.2
virtual char* ByteSink::GetAppendBuffer ( int32_t  min_capacity,
int32_t  desired_capacity_hint,
char *  scratch,
int32_t  scratch_capacity,
int32_t result_capacity 
)
virtual

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

Guarantees *result_capacity>=min_capacity. May return a pointer to the caller-owned scratch buffer which must have scratch_capacity>=min_capacity. The returned buffer is only valid until the next operation on this ByteSink.

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

Partial usage example: int32_t capacity; char* buffer = sink->GetAppendBuffer(..., &capacity); ... Write n bytes into buffer, with n <= capacity. sink->Append(buffer, n); In many implementations, that call to Append will avoid copying bytes.

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

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

The default implementation always returns the scratch buffer.

Parameters
min_capacityrequired minimum capacity of the returned buffer; must be non-negative
desired_capacity_hintdesired capacity of the returned buffer; must be non-negative
scratchdefault caller-owned buffer
scratch_capacitycapacity of the scratch buffer
result_capacitypointer to an integer which will be set to the capacity of the returned buffer
Returns
a buffer with *result_capacity>=min_capacity
Stable:
ICU 4.2

Reimplemented in CheckedArrayByteSink.


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