LIEF: Library to Instrument Executable Formats Version 0.17.0
Loading...
Searching...
No Matches
LIEF::BinaryStream Class Referenceabstract

Class that is used to a read stream of data from different sources. More...

#include <BinaryStream.hpp>

Inheritance diagram for LIEF::BinaryStream:

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)
 
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
 
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
 
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
 

Static Public Member Functions

template<class T >
static bool is_all_zero (const T &buffer)
 

Detailed Description

Class that is used to a read stream of data from different sources.

Member Enumeration Documentation

◆ STREAM_TYPE

Enumerator
UNKNOWN 
VECTOR 
MEMORY 
SPAN 
FILE 
ELF_DATA_HANDLER 

Constructor & Destructor Documentation

◆ BinaryStream()

LIEF::BinaryStream::BinaryStream ( STREAM_TYPE type)
inline

◆ ~BinaryStream()

virtual LIEF::BinaryStream::~BinaryStream ( )
virtualdefault

Member Function Documentation

◆ align()

size_t LIEF::BinaryStream::align ( size_t align_on) const

◆ can_read() [1/3]

template<typename T >
bool LIEF::BinaryStream::can_read ( ) const

References size().

◆ can_read() [2/3]

bool LIEF::BinaryStream::can_read ( int64_t offset,
int64_t size ) const
inline

◆ can_read() [3/3]

template<typename T >
bool LIEF::BinaryStream::can_read ( size_t offset) const

References size().

◆ decrement_pos()

void LIEF::BinaryStream::decrement_pos ( size_t value) const
inline

◆ end() [1/2]

virtual uint8_t * LIEF::BinaryStream::end ( )
inlinevirtual

◆ end() [2/2]

virtual const uint8_t * LIEF::BinaryStream::end ( ) const
inlinevirtual

◆ increment_pos()

void LIEF::BinaryStream::increment_pos ( size_t value) const
inline

Referenced by read(), and read_array().

◆ is_all_zero()

template<class T >
static bool LIEF::BinaryStream::is_all_zero ( const T & buffer)
inlinestatic

◆ operator bool()

LIEF::BinaryStream::operator bool ( ) const
inline

◆ p() [1/2]

virtual uint8_t * LIEF::BinaryStream::p ( )
inlinevirtual

◆ p() [2/2]

virtual const uint8_t * LIEF::BinaryStream::p ( ) const
inlinevirtual

◆ peek() [1/2]

template<class T >
result< T > LIEF::BinaryStream::peek ( ) const

References make_error_code(), pos(), read_error, setpos(), and LIEF::swap_endian().

Referenced by peek(), and read().

◆ peek() [2/2]

template<class T >
result< T > LIEF::BinaryStream::peek ( size_t offset) const

References peek(), pos(), and setpos().

◆ peek_array() [1/2]

template<class T >
const T * LIEF::BinaryStream::peek_array ( size_t offset,
size_t size ) const

References peek_array(), pos(), setpos(), and size().

◆ peek_array() [2/2]

template<class T >
const T * LIEF::BinaryStream::peek_array ( size_t size) const

References pos(), and size().

Referenced by peek_array(), and read_array().

◆ peek_data()

virtual ok_error_t LIEF::BinaryStream::peek_data ( std::vector< uint8_t > & container,
uint64_t offset,
uint64_t size,
uint64_t virtual_address = 0 )
inlinevirtual

◆ peek_objects()

template<class T >
ok_error_t LIEF::BinaryStream::peek_objects ( std::vector< T > & container,
uint64_t count )
inline

◆ peek_objects_at()

template<class T >
ok_error_t LIEF::BinaryStream::peek_objects_at ( uint64_t offset,
std::vector< T > & container,
uint64_t count )
inline

◆ peek_string()

result< std::string > LIEF::BinaryStream::peek_string ( size_t maxsize = ~static_cast< size_t >(0)) const

◆ peek_string_at()

result< std::string > LIEF::BinaryStream::peek_string_at ( size_t offset,
size_t maxsize = ~static_cast< size_t >(0) ) const

◆ peek_u16string() [1/2]

result< std::u16string > LIEF::BinaryStream::peek_u16string ( ) const

◆ peek_u16string() [2/2]

result< std::u16string > LIEF::BinaryStream::peek_u16string ( size_t length) const

◆ peek_u16string_at()

result< std::u16string > LIEF::BinaryStream::peek_u16string_at ( size_t offset,
size_t length ) const

◆ pos()

size_t LIEF::BinaryStream::pos ( ) const
inline

Referenced by peek(), peek(), peek_array(), and peek_array().

◆ read()

template<class T >
result< T > LIEF::BinaryStream::read ( ) const

References increment_pos(), and peek().

◆ read_array()

template<class T >
const T * LIEF::BinaryStream::read_array ( size_t size) const

References increment_pos(), peek_array(), and size().

◆ read_data()

virtual ok_error_t LIEF::BinaryStream::read_data ( std::vector< uint8_t > & container,
uint64_t size )
inlinevirtual

◆ read_dwarf_encoded()

result< int64_t > LIEF::BinaryStream::read_dwarf_encoded ( uint8_t encoding) const

◆ read_mutf8()

result< std::string > LIEF::BinaryStream::read_mutf8 ( size_t maxsize = ~static_cast< size_t >(0)) const

◆ read_objects()

template<class T >
ok_error_t LIEF::BinaryStream::read_objects ( std::vector< T > & container,
uint64_t count )
inline

◆ read_sleb128()

result< uint64_t > LIEF::BinaryStream::read_sleb128 ( ) const

◆ read_string()

result< std::string > LIEF::BinaryStream::read_string ( size_t maxsize = ~static_cast< size_t >(0)) const

◆ read_u16string() [1/2]

result< std::u16string > LIEF::BinaryStream::read_u16string ( ) const

◆ read_u16string() [2/2]

result< std::u16string > LIEF::BinaryStream::read_u16string ( size_t length) const

◆ read_uleb128()

result< uint64_t > LIEF::BinaryStream::read_uleb128 ( ) const

◆ set_endian_swap()

void LIEF::BinaryStream::set_endian_swap ( bool swap)
inline

◆ setpos()

void LIEF::BinaryStream::setpos ( size_t pos) const
inline

◆ should_swap()

bool LIEF::BinaryStream::should_swap ( ) const
inline

◆ size()

virtual uint64_t LIEF::BinaryStream::size ( ) const
pure virtual

◆ start() [1/2]

virtual uint8_t * LIEF::BinaryStream::start ( )
inlinevirtual

◆ start() [2/2]

virtual const uint8_t * LIEF::BinaryStream::start ( ) const
inlinevirtual

◆ type()


The documentation for this class was generated from the following file: