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);
148 virtual char* GetAppendBuffer(int32_t min_capacity,
149 int32_t desired_capacity_hint,
150 char* scratch, int32_t scratch_capacity,
151 int32_t* result_capacity);
161 virtual void Flush();
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_;
266 template<
typename StringClass>
283 if (initialAppendCapacity > 0 &&
284 (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); }
307 #endif // __BYTESTREAM_H__
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.
StringByteSink(StringClass *dest)
Constructs a ByteSink that will append bytes to the dest string.
int32_t NumberOfBytesWritten() const
Returns the number of bytes actually written 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'...
ByteSink()
Default constructor.
A ByteSink can be filled with bytes.
virtual void Append(const char *bytes, int32_t n)=0
Append "bytes[0,n-1]" to this.
Implementation of ByteSink that writes to a flat byte array, with bounds-checking: This sink will not...
StringByteSink(StringClass *dest, int32_t initialAppendCapacity)
Constructs a ByteSink that reserves append capacity and will append bytes to the dest string...
C++ API: Central ICU header for including the C++ standard <string> header and for related definition...
C++ API: Common ICU base class UObject.
int32_t NumberOfBytesAppended() const
Returns the number of bytes appended to the sink.
Basic definitions for ICU, for both C and C++ APIs.
Implementation of ByteSink that writes to a "string".
#define U_COMMON_API
Set to export library symbols from inside the common library, and to import them from outside...
void AppendU8(const char8_t *bytes, int32_t n)
Appends n bytes to this.
UMemory is the common ICU base class.
virtual void Append(const char *data, int32_t n) override
Append "bytes[0,n-1]" to this.
int8_t UBool
The ICU boolean type, a signed-byte integer.
void AppendU8(const char *bytes, int32_t n)
Appends n bytes to this.