31 using BinaryStream::p;
32 using BinaryStream::end;
33 using BinaryStream::start;
69 uint64_t size()
const override {
73 const uint8_t* p()
const override {
74 return data_.data() + this->pos();
77 const uint8_t* start()
const override {
81 const uint8_t* end()
const override {
82 return data_.data() + size();
85 std::vector<uint8_t> content()
const {
86 return {data_.begin(), data_.end()};
90 if (offset > data_.size() || (offset + size) > data_.size()) {
91 return make_error_code(lief_errors::read_out_of_bound);
93 return data_.subspan(offset, size);
96 if (offset > data_.size()) {
97 return make_error_code(lief_errors::read_out_of_bound);
99 return data_.subspan(offset, data_.size() - offset);
103 return stream.type() == BinaryStream::STREAM_TYPE::SPAN;
110 const uint64_t stream_size = this->size();
111 if (offset > stream_size || (offset + size) > stream_size) {
112 return make_error_code(lief_errors::read_error);
114 return data_.data() + offset;
116 span<const uint8_t> data_;