17 #ifndef CPP_MATE_BINARY_DATA_HPP
18 #define CPP_MATE_BINARY_DATA_HPP
20 #include <CppMate/Checkers.hpp>
49 virtual const uint8_t*
getData()
const = 0;
93 Wrapper(
const uint8_t* data, uint64_t size,
bool validate =
true):
97 checkArg(!validate ||
hasData());
110 const uint8_t*
getData()
const override {
return _data; }
111 uint64_t
getSize()
const override {
return _size; }
114 const uint8_t* _data;
124 const uint8_t*
getData()
const override {
return nullptr; }
125 uint64_t
getSize()
const override {
return 0; }
153 checkArg(data && data->
hasData());
154 checkArg(offset < data->
getSize());
155 _size = size > 0 ? size : data->
getSize() - offset;
156 checkArg(offset + _size <= data->
getSize());
157 _data = data->
getData() + offset;
167 Window(std::unique_ptr<BinaryData> data, uint64_t offset, uint64_t size = 0):
168 Window(data.get(), offset, size)
170 _sourceData = std::move(data);
180 Window(std::shared_ptr<BinaryData> data, uint64_t offset, uint64_t size = 0):
181 Window(data.get(), offset, size)
183 _sourceData = std::move(data);
186 const uint8_t*
getData()
const override {
return _data; }
187 uint64_t
getSize()
const override {
return _size; }
190 std::shared_ptr<BinaryData> _sourceData;
191 const uint8_t* _data;
Represents implementation of BinaryData interface for empty data.
Definition: BinaryData.hpp:122
static const BinaryData & instance()
Returns singleton instance of the empty BinaryData.
const uint8_t * getData() const override
Returns address of data.
Definition: BinaryData.hpp:124
uint64_t getSize() const override
Returns size of data in bytes.
Definition: BinaryData.hpp:125
Represents window within provided BinaryData.
Definition: BinaryData.hpp:138
Window(const BinaryData *data, uint64_t offset, uint64_t size=0)
Constructor.
Definition: BinaryData.hpp:148
uint64_t getSize() const override
Returns size of data in bytes.
Definition: BinaryData.hpp:187
const uint8_t * getData() const override
Returns address of data.
Definition: BinaryData.hpp:186
Window(std::unique_ptr< BinaryData > data, uint64_t offset, uint64_t size=0)
Constructor.
Definition: BinaryData.hpp:167
Window(std::shared_ptr< BinaryData > data, uint64_t offset, uint64_t size=0)
Constructor.
Definition: BinaryData.hpp:180
Represents implementation of BinaryData interface for exisitng data.
Definition: BinaryData.hpp:83
uint64_t getSize() const override
Returns size of data in bytes.
Definition: BinaryData.hpp:111
Wrapper(const std::vector< uint8_t > &buffer)
Constructor.
Definition: BinaryData.hpp:104
Wrapper(const uint8_t *data, uint64_t size, bool validate=true)
Constructor.
Definition: BinaryData.hpp:93
const uint8_t * getData() const override
Returns address of data.
Definition: BinaryData.hpp:110
Represents interface of abstract binary data.
Definition: BinaryData.hpp:34
bool operator!=(const BinaryData &other) const
operator !=
Definition: BinaryData.hpp:75
virtual uint64_t getSize() const =0
Returns size of data in bytes.
bool hasData() const
Returns status of a data presence.
Definition: BinaryData.hpp:61
virtual const uint8_t * getData() const =0
Returns address of data.
bool operator==(const BinaryData &other) const
operator ==
Definition: BinaryData.hpp:68
virtual ~BinaryData()=default
Definition: BinaryData.hpp:28