LIEF: Library to Instrument Executable Formats Version 0.17.0
|
Class that is used to a read stream of data from different sources. More...
#include <BinaryStream.hpp>
Public Types | |
enum class | STREAM_TYPE { UNKNOWN = 0 , VECTOR , MEMORY , SPAN , FILE , ELF_DATA_HANDLER } |
Public Member Functions | |
BinaryStream (STREAM_TYPE type) | |
virtual | ~BinaryStream ()=default |
virtual uint64_t | size () const =0 |
STREAM_TYPE | type () const |
result< uint64_t > | read_uleb128 () const |
result< uint64_t > | read_sleb128 () const |
result< int64_t > | read_dwarf_encoded (uint8_t encoding) const |
result< std::string > | read_string (size_t maxsize=~static_cast< size_t >(0)) const |
result< std::string > | peek_string (size_t maxsize=~static_cast< size_t >(0)) const |
result< std::string > | peek_string_at (size_t offset, size_t maxsize=~static_cast< size_t >(0)) const |
result< std::u16string > | read_u16string () const |
result< std::u16string > | peek_u16string () const |
result< std::string > | read_mutf8 (size_t maxsize=~static_cast< size_t >(0)) const |
result< std::u16string > | read_u16string (size_t length) const |
result< std::u16string > | peek_u16string (size_t length) const |
result< std::u16string > | peek_u16string_at (size_t offset, size_t length) const |
virtual ok_error_t | peek_data (std::vector< uint8_t > &container, uint64_t offset, uint64_t size, uint64_t virtual_address=0) |
virtual ok_error_t | read_data (std::vector< uint8_t > &container, uint64_t size) |
ok_error_t | read_data (std::vector< uint8_t > &container) |
template<class T> | |
ok_error_t | read_objects (std::vector< T > &container, uint64_t count) |
template<class T> | |
ok_error_t | peek_objects (std::vector< T > &container, uint64_t count) |
template<class T> | |
ok_error_t | peek_objects_at (uint64_t offset, std::vector< T > &container, uint64_t count) |
void | setpos (size_t pos) const |
const BinaryStream & | increment_pos (size_t value) const |
void | decrement_pos (size_t value) const |
size_t | pos () const |
operator bool () const | |
template<class T> | |
const T * | read_array (size_t size) const |
template<class T, size_t N> | |
ok_error_t | peek_array (std::array< T, N > &dst) const |
template<class T, size_t N> | |
ok_error_t | read_array (std::array< T, N > &dst) const |
template<class T> | |
result< T > | peek () const |
template<class T> | |
result< T > | peek (size_t offset) const |
template<class T> | |
const T * | peek_array (size_t size) const |
template<class T> | |
const T * | peek_array (size_t offset, size_t size) const |
template<class T> | |
result< T > | read () const |
template<typename T> | |
bool | can_read () const |
template<typename T> | |
bool | can_read (size_t offset) const |
bool | can_read (int64_t offset, int64_t size) const |
size_t | align (size_t align_on) const |
void | set_endian_swap (bool swap) |
bool | should_swap () const |
virtual const uint8_t * | p () const |
virtual uint8_t * | start () |
virtual uint8_t * | p () |
virtual uint8_t * | end () |
virtual const uint8_t * | start () const |
virtual const uint8_t * | end () const |
virtual result< const void * > | read_at (uint64_t offset, uint64_t size, uint64_t virtual_address=0) const =0 |
virtual ok_error_t | peek_in (void *dst, uint64_t offset, uint64_t size, uint64_t virtual_address=0) const |
Static Public Member Functions | |
template<class T> | |
static bool | is_all_zero (const T &buffer) |
Class that is used to a read stream of data from different sources.
|
strong |
|
inline |
References type().
Referenced by LIEF::FileStream::classof(), LIEF::MemoryStream::classof(), LIEF::SpanStream::classof(), LIEF::VectorStream::classof(), end(), LIEF::FileStream::FileStream(), increment_pos(), LIEF::MemoryStream::MemoryStream(), p(), LIEF::SpanStream::SpanStream(), start(), and LIEF::VectorStream::VectorStream().
|
virtualdefault |
size_t LIEF::BinaryStream::align | ( | size_t | align_on | ) | const |
bool LIEF::BinaryStream::can_read | ( | ) | const |
References size().
Referenced by peek_objects_at().
|
inline |
References size().
bool LIEF::BinaryStream::can_read | ( | size_t | offset | ) | const |
References size().
|
inline |
|
inlinevirtual |
Reimplemented in LIEF::MemoryStream, LIEF::SpanStream, and LIEF::VectorStream.
References BinaryStream().
|
inlinevirtual |
Reimplemented in LIEF::MemoryStream, LIEF::SpanStream, and LIEF::VectorStream.
|
inline |
References BinaryStream().
Referenced by read(), read_array(), read_array(), read_data(), and read_objects().
|
inlinestatic |
|
inline |
References size().
|
inlinevirtual |
Reimplemented in LIEF::MemoryStream, LIEF::SpanStream, and LIEF::VectorStream.
References BinaryStream().
|
inlinevirtual |
Reimplemented in LIEF::MemoryStream, LIEF::SpanStream, and LIEF::VectorStream.
result< T > LIEF::BinaryStream::peek | ( | ) | const |
References make_error_code(), peek_in(), pos(), read_error, setpos(), and LIEF::swap_endian().
result< T > LIEF::BinaryStream::peek | ( | size_t | offset | ) | const |
const T * LIEF::BinaryStream::peek_array | ( | size_t | offset, |
size_t | size ) const |
References peek_array(), pos(), setpos(), and size().
const T * LIEF::BinaryStream::peek_array | ( | size_t | size | ) | const |
|
inline |
References make_error_code(), LIEF::ok(), peek_in(), read_error, and size().
Referenced by peek_array(), read_array(), and read_array().
|
inlinevirtual |
References make_error_code(), LIEF::ok(), peek_in(), read_error, and size().
Referenced by read_data().
|
inlinevirtual |
Reimplemented in LIEF::FileStream.
References make_error_code(), LIEF::ok(), read_at(), read_error, and size().
Referenced by peek(), peek_array(), peek_data(), and peek_objects_at().
|
inline |
References peek_objects_at(), and pos().
Referenced by read_objects().
|
inline |
References can_read(), make_error_code(), LIEF::ok(), peek_in(), pos(), read_error, setpos(), and size().
Referenced by peek_objects().
result< std::string > LIEF::BinaryStream::peek_string | ( | size_t | maxsize = ~static_cast< size_t >(0) | ) | const |
result< std::string > LIEF::BinaryStream::peek_string_at | ( | size_t | offset, |
size_t | maxsize = ~static_cast< size_t >(0) ) const |
result< std::u16string > LIEF::BinaryStream::peek_u16string | ( | ) | const |
result< std::u16string > LIEF::BinaryStream::peek_u16string | ( | size_t | length | ) | const |
result< std::u16string > LIEF::BinaryStream::peek_u16string_at | ( | size_t | offset, |
size_t | length ) const |
|
inline |
result< T > LIEF::BinaryStream::read | ( | ) | const |
References increment_pos(), and peek().
const T * LIEF::BinaryStream::read_array | ( | size_t | size | ) | const |
References increment_pos(), peek_array(), and size().
|
inline |
References increment_pos(), make_error_code(), LIEF::ok(), peek_array(), and read_error.
|
pure virtual |
|
inline |
References pos(), read_data(), and size().
|
inlinevirtual |
References increment_pos(), make_error_code(), LIEF::ok(), peek_data(), pos(), read_error, and size().
Referenced by read_data().
result< int64_t > LIEF::BinaryStream::read_dwarf_encoded | ( | uint8_t | encoding | ) | const |
result< std::string > LIEF::BinaryStream::read_mutf8 | ( | size_t | maxsize = ~static_cast< size_t >(0) | ) | const |
|
inline |
References increment_pos(), make_error_code(), LIEF::ok(), peek_objects(), read_error, and size().
result< uint64_t > LIEF::BinaryStream::read_sleb128 | ( | ) | const |
result< std::string > LIEF::BinaryStream::read_string | ( | size_t | maxsize = ~static_cast< size_t >(0) | ) | const |
result< std::u16string > LIEF::BinaryStream::read_u16string | ( | ) | const |
result< std::u16string > LIEF::BinaryStream::read_u16string | ( | size_t | length | ) | const |
result< uint64_t > LIEF::BinaryStream::read_uleb128 | ( | ) | const |
|
inline |
Referenced by LIEF::ToggleEndianness::ToggleEndianness(), and LIEF::ToggleEndianness::ToggleEndianness().
|
inline |
References pos().
Referenced by peek(), peek(), peek_array(), peek_objects_at(), and LIEF::ScopedStream::ScopedStream().
|
inline |
|
pure virtual |
Implemented in LIEF::FileStream, LIEF::MemoryStream, LIEF::SpanStream, and LIEF::VectorStream.
Referenced by can_read(), can_read(), can_read(), operator bool(), peek_array(), peek_array(), peek_array(), peek_data(), peek_in(), peek_objects_at(), read_array(), read_at(), read_data(), read_data(), and read_objects().
|
inlinevirtual |
Reimplemented in LIEF::MemoryStream, LIEF::SpanStream, and LIEF::VectorStream.
References BinaryStream().
|
inlinevirtual |
Reimplemented in LIEF::MemoryStream, LIEF::SpanStream, and LIEF::VectorStream.
|
inline |