50 #ifndef GOOGLE_PROTOBUF_STUBS_BYTESTREAM_H_
51 #define GOOGLE_PROTOBUF_STUBS_BYTESTREAM_H_
56 #include <google/protobuf/stubs/common.h>
57 #include <google/protobuf/stubs/stringpiece.h>
59 #include <google/protobuf/port_def.inc>
78 class PROTOBUF_EXPORT ByteSink {
84 virtual void Append(
const char*
bytes,
size_t n) = 0;
107 class PROTOBUF_EXPORT ByteSource {
119 virtual size_t Available()
const = 0;
134 virtual void Skip(
size_t n) = 0;
163 class PROTOBUF_EXPORT UncheckedArrayByteSink :
public ByteSink {
166 virtual void Append(
const char*
data,
size_t n)
override;
191 class PROTOBUF_EXPORT CheckedArrayByteSink :
public ByteSink {
194 virtual void Append(
const char*
bytes,
size_t n)
override;
229 explicit GrowingArrayByteSink(
size_t estimated_size);
230 virtual ~GrowingArrayByteSink();
231 virtual void Append(
const char*
bytes,
size_t n)
override;
235 char* GetBuffer(
size_t* nbytes);
238 void Expand(
size_t amount);
257 class PROTOBUF_EXPORT StringByteSink :
public ByteSink {
260 virtual void Append(
const char*
data,
size_t n)
override;
277 void Append(
const char* ,
size_t )
override {}
296 class PROTOBUF_EXPORT ArrayByteSource :
public ByteSource {
300 virtual size_t Available()
const override;
302 virtual void Skip(
size_t n)
override;
327 class PROTOBUF_EXPORT LimitByteSource :
public ByteSource {
330 LimitByteSource(ByteSource* source,
size_t limit);
332 virtual size_t Available()
const override;
334 virtual void Skip(
size_t n)
override;
338 virtual void CopyTo(ByteSink*
sink,
size_t n)
override;
349 #include <google/protobuf/port_undef.inc>
351 #endif // GOOGLE_PROTOBUF_STUBS_BYTESTREAM_H_