LIEF: Library to Instrument Executable Formats Version 0.15.1
|
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) |
virtual ok_error_t | read_data (std::vector< uint8_t > &container, uint64_t size) |
void | setpos (size_t pos) const |
void | 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 > | |
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 |
size_t | align (size_t align_on) const |
template<class T > | |
std::enable_if< std::is_integral< T >::value, result< T > >::type | peek_conv () const |
template<class T > | |
std::enable_if<!std::is_integral< T >::value, result< T > >::type | peek_conv () const |
template<class T > | |
result< T > | peek_conv (size_t offset) const |
template<class T > | |
result< T > | read_conv () const |
template<typename T > | |
std::unique_ptr< T[]> | read_conv_array (size_t size) const |
template<typename T > | |
std::unique_ptr< T[]> | peek_conv_array (size_t offset, size_t size) 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 |
Static Public Member Functions | |
template<typename T > | |
static T | swap_endian (T u) |
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 |
|
virtualdefault |
size_t LIEF::BinaryStream::align | ( | size_t | align_on | ) | const |
bool LIEF::BinaryStream::can_read | ( | ) | const |
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 end().
Referenced by end().
|
inlinevirtual |
Reimplemented in LIEF::MemoryStream, LIEF::SpanStream, and LIEF::VectorStream.
|
inline |
Referenced by read(), read_array(), read_conv(), and read_data().
|
inlinestatic |
|
inline |
References size().
|
inlinevirtual |
Reimplemented in LIEF::MemoryStream, LIEF::SpanStream, and LIEF::VectorStream.
References p().
|
inlinevirtual |
Reimplemented in LIEF::MemoryStream, LIEF::SpanStream, and LIEF::VectorStream.
Referenced by p().
result< T > LIEF::BinaryStream::peek | ( | ) | const |
References make_error_code(), pos(), read_error, and setpos().
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(), and setpos().
const T * LIEF::BinaryStream::peek_array | ( | size_t | size | ) | const |
Referenced by peek_array(), peek_conv_array(), and read_array().
std::enable_if<!std::is_integral< T >::value, result< T > >::type LIEF::BinaryStream::peek_conv | ( | ) | const |
References make_error_code(), pos(), read_error, and swap_endian().
Referenced by peek_conv(), and read_conv().
std::enable_if<!std::is_integral< T >::value, result< T > >::type LIEF::BinaryStream::peek_conv | ( | ) | const |
result< T > LIEF::BinaryStream::peek_conv | ( | size_t | offset | ) | const |
References peek_conv(), pos(), and setpos().
std::unique_ptr< T[]> LIEF::BinaryStream::peek_conv_array | ( | size_t | offset, |
size_t | size ) const |
References peek_array(), size(), and LIEF::Convert::swap_endian().
|
inlinevirtual |
References make_error_code(), LIEF::ok(), read_error, and size().
Referenced by read_data().
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 |
Referenced by LIEF::MemoryStream::p(), LIEF::SpanStream::p(), LIEF::VectorStream::p(), peek(), peek(), peek_array(), peek_array(), peek_conv(), peek_conv(), read_data(), and setpos().
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().
Referenced by read_conv_array().
result< T > LIEF::BinaryStream::read_conv | ( | ) | const |
References increment_pos(), and peek_conv().
std::unique_ptr< T[]> LIEF::BinaryStream::read_conv_array | ( | size_t | size | ) | const |
References read_array(), size(), and LIEF::Convert::swap_endian().
|
inlinevirtual |
References increment_pos(), make_error_code(), LIEF::ok(), peek_data(), pos(), read_error, and size().
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 |
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 |
|
inline |
References pos().
Referenced by peek(), peek(), peek_array(), peek_conv(), LIEF::ScopedStream::ScopedStream(), and LIEF::ScopedStream::~ScopedStream().
|
inline |
|
pure virtual |
Implemented in LIEF::FileStream, LIEF::MemoryStream, LIEF::SpanStream, and LIEF::VectorStream.
Referenced by can_read(), can_read(), operator bool(), peek_array(), peek_conv_array(), peek_data(), read_array(), read_conv_array(), and read_data().
|
inlinevirtual |
Reimplemented in LIEF::MemoryStream, LIEF::SpanStream, and LIEF::VectorStream.
References start().
Referenced by start().
|
inlinevirtual |
Reimplemented in LIEF::MemoryStream, LIEF::SpanStream, and LIEF::VectorStream.
|
static |
Referenced by peek_conv().
|
inline |