11#include "../IBlobOutput.h"
22 std::uint8_t* buffer_{
nullptr };
23 size_t buffer_size_{ 0 };
24 bool is_reserved_{
false };
33 [[nodiscard]]
bool Reserve(
size_t s)
override
35 if (this->is_reserved_)
37 throw std::logic_error(
"This instance has already been initialized.");
40 this->buffer_ =
static_cast<uint8_t*
>(malloc(s));
41 this->buffer_size_ = s;
42 this->is_reserved_ =
true;
47 [[nodiscard]]
bool SetData(
size_t offset,
size_t size,
const void* data)
override
49 if (!this->is_reserved_)
51 throw std::logic_error(
"'Reserve' was not called before.");
54 if (offset + size > this->buffer_size_)
56 throw std::invalid_argument(
"out-of-bounds");
59 memcpy(this->buffer_ + offset, data, size);
66 [[nodiscard]]
bool GetHasData()
const {
return this->is_reserved_; }
71 [[nodiscard]]
const std::uint8_t*
GetDataC()
const {
return this->buffer_; }
76 [[nodiscard]] std::uint8_t*
GetData() {
return this->buffer_; }
80 [[nodiscard]]
size_t GetSizeOfData()
const {
return this->buffer_size_; }
implementation of the IBlobOutput interface
Definition: BlobOutputImplementations.h:20
const std::uint8_t * GetDataC() const
Definition: BlobOutputImplementations.h:71
bool SetData(size_t offset, size_t size, const void *data) override
Definition: BlobOutputImplementations.h:47
size_t GetSizeOfData() const
Definition: BlobOutputImplementations.h:80
std::uint8_t * GetData()
Definition: BlobOutputImplementations.h:76
~BlobOutputOnHeap() override
Destructor which releases the allocated memory.
Definition: BlobOutputImplementations.h:27
bool GetHasData() const
Definition: BlobOutputImplementations.h:66
bool Reserve(size_t s) override
Definition: BlobOutputImplementations.h:33
interface for outputting binary data
Definition: IBlobOutput.h:16