11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
17PROMEKI_NAMESPACE_BEGIN
44class BufferIODevice :
public IODevice {
45 PROMEKI_OBJECT(BufferIODevice, IODevice)
53 explicit BufferIODevice(Buffer *buffer, ObjectBase *parent =
nullptr);
62 explicit BufferIODevice(ObjectBase *parent =
nullptr);
65 ~BufferIODevice()
override;
73 void setBuffer(Buffer *buffer);
79 Buffer *buffer()
const {
return _buffer; }
94 void setAutoGrow(
bool enabled) { _autoGrow = enabled; }
97 bool autoGrow()
const {
return _autoGrow; }
99 Error open(OpenMode mode)
override;
100 Error close()
override;
101 bool isOpen()
const override;
102 int64_t read(
void *data, int64_t maxSize)
override;
103 int64_t write(
const void *data, int64_t maxSize)
override;
104 int64_t bytesAvailable()
const override;
105 bool isSequential()
const override;
106 Error seek(int64_t pos)
override;
107 int64_t pos()
const override;
108 Result<int64_t> size()
const override;
109 bool atEnd()
const override;
112 Buffer *_buffer =
nullptr;
114 bool _autoGrow =
false;