32#ifndef __BYTESTREAM_H__
33#define __BYTESTREAM_H__
42#if U_SHOW_CPLUSPLUS_API
72 virtual void Append(
const char* bytes, int32_t n) = 0;
85 inline void AppendU8(
const char* bytes, int32_t n) {
89#if defined(__cpp_char8_t) || defined(U_IN_DOXYGEN)
101 inline void AppendU8(
const char8_t* bytes, int32_t n) {
102 Append(
reinterpret_cast<const char*
>(bytes), n);
149 int32_t desired_capacity_hint,
150 char* scratch, int32_t scratch_capacity,
151 int32_t* result_capacity);
209 virtual void Append(
const char* bytes, int32_t n)
override;
225 int32_t desired_capacity_hint,
226 char* scratch, int32_t scratch_capacity,
227 int32_t* result_capacity)
override;
251 const int32_t capacity_;
266template<
typename StringClass>
283 if (initialAppendCapacity > 0 &&
284 static_cast<uint32_t
>(initialAppendCapacity) > dest->capacity() - dest->length()) {
285 dest->reserve(dest->length() + initialAppendCapacity);
294 virtual void Append(
const char* data, int32_t n)
override { dest_->append(data, n); }
A ByteSink can be filled with bytes.
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.
void AppendU8(const char *bytes, int32_t n)
Appends n bytes to this.
virtual void Append(const char *bytes, int32_t n)=0
Append "bytes[0,n-1]" to this.
ByteSink()
Default constructor.
void AppendU8(const char8_t *bytes, int32_t n)
Appends n bytes to this.
virtual void Flush()
Flush internal buffers.
virtual ~ByteSink()
Virtual destructor.
Implementation of ByteSink that writes to a flat byte array, with bounds-checking: This sink will not...
int32_t NumberOfBytesWritten() const
Returns the number of bytes actually written to the sink.
CheckedArrayByteSink(char *outbuf, int32_t capacity)
Constructs a ByteSink that will write to outbuf[0..capacity-1].
virtual ~CheckedArrayByteSink()
Destructor.
virtual CheckedArrayByteSink & Reset()
Returns the sink to its original state, without modifying the buffer.
int32_t NumberOfBytesAppended() const
Returns the number of bytes appended to the sink.
UBool Overflowed() const
Returns true if any bytes were discarded, i.e., if there was an attempt to write more than 'capacity'...
virtual void Append(const char *bytes, int32_t n) override
Append "bytes[0,n-1]" to this.
virtual char * GetAppendBuffer(int32_t min_capacity, int32_t desired_capacity_hint, char *scratch, int32_t scratch_capacity, int32_t *result_capacity) override
Returns a writable buffer for appending and writes the buffer's capacity to *result_capacity.
Implementation of ByteSink that writes to a "string".
StringByteSink(StringClass *dest, int32_t initialAppendCapacity)
Constructs a ByteSink that reserves append capacity and will append bytes to the dest string.
StringByteSink(StringClass *dest)
Constructs a ByteSink that will append bytes to the dest string.
virtual void Append(const char *data, int32_t n) override
Append "bytes[0,n-1]" to this.
UMemory is the common ICU base class.
C++ API: Central ICU header for including the C++ standard <string> header and for related definition...
int8_t UBool
The ICU boolean type, a signed-byte integer.
C++ API: Common ICU base class UObject.
Basic definitions for ICU, for both C and C++ APIs.
#define U_COMMON_API
Set to export library symbols from inside the common library, and to import them from outside.