LIEF: Library to Instrument Executable Formats Version 0.17.0
Loading...
Searching...
No Matches
LIEF::vector_iostream Class Reference

#include <iostream.hpp>

Public Types

enum class  RELOC_OP { ADD , SUB }
 
using pos_type = std::streampos
 
using off_type = std::streamoff
 

Public Member Functions

 vector_iostream ()=default
 
 vector_iostream (std::vector< uint8_t > &ref)
 
 vector_iostream (bool endian_swap)
 
vector_iostreamreserve (size_t size)
 
vector_iostreamincrease_capacity (size_t size)
 
vector_iostreamput (uint8_t c)
 
vector_iostreamwrite (const uint8_t *s, std::streamsize n)
 
vector_iostreamwrite (span< const uint8_t > sp)
 
vector_iostreamwrite (std::vector< uint8_t > s)
 
vector_iostreamwrite (const std::string &s)
 
bool empty () const
 
vector_iostreamwrite (const std::u16string &s, bool with_null_char)
 
vector_iostreamwrite (size_t count, uint8_t value)
 
vector_iostreamwrite_sized_int (uint64_t value, size_t size)
 
vector_iostreamwrite (const vector_iostream &other)
 
template<class T , typename = typename std::enable_if<std::is_standard_layout<T>::value && std::is_trivial<T>::value>::type>
vector_iostreamwrite (const T &t)
 
vector_iostreamalign (size_t alignment, uint8_t fill=0)
 
template<typename T >
vector_iostreamwrite (const std::pair< T, T > &p)
 
template<typename T , size_t size>
vector_iostreamwrite (const std::array< T, size > &t)
 
template<typename T >
vector_iostreamwrite (const std::vector< T > &elements)
 
template<typename T , class U >
vector_iostreamwrite (const optional< U > &opt)
 
vector_iostreamwrite_uleb128 (uint64_t value)
 
vector_iostreamwrite_sleb128 (int64_t value)
 
vector_iostreamget (std::vector< uint8_t > &c)
 
vector_iostreammove (std::vector< uint8_t > &c)
 
vector_iostreamflush ()
 
size_t size () const
 
pos_type tellp () const
 
vector_iostreamseekp (pos_type p)
 
vector_iostreamseek_end ()
 
vector_iostreampad (size_t size, uint8_t value=0)
 
vector_iostreamseekp (vector_iostream::off_type p, std::ios_base::seekdir dir)
 
const std::vector< uint8_t > & raw () const
 
std::vector< uint8_t > & raw ()
 
void set_endian_swap (bool swap)
 
template<class T >
vector_iostreamreloc (uint64_t offset, T shift, RELOC_OP op=RELOC_OP::ADD)
 
vector_iostreaminit_fixups (size_t count)
 
vector_iostreamrecord_fixup (size_t id, bool cond)
 
vector_iostreamrecord_fixup (size_t id)
 
template<class T >
vector_iostreamapply_fixup (size_t id, T value)
 
const std::vector< uint64_t > & get_fixups (size_t id) const
 
template<class T >
T * edit_as ()
 
template<class T >
T * edit_as (size_t pos)
 
const vector_iostreamcopy_into (const span< uint8_t > &sp, size_t sz) const
 
const vector_iostreamcopy_into (const span< uint8_t > &sp) const
 
span< const uint8_t > data () const
 
vector_iostreamclear ()
 
std::vector< uint8_t >::iterator begin ()
 
std::vector< uint8_t >::iterator end ()
 
std::vector< uint8_t >::const_iterator begin () const
 
std::vector< uint8_t >::const_iterator end () const
 

Static Public Member Functions

static size_t uleb128_size (uint64_t value)
 
static size_t sleb128_size (int64_t value)
 

Member Typedef Documentation

◆ off_type

using LIEF::vector_iostream::off_type = std::streamoff

◆ pos_type

using LIEF::vector_iostream::pos_type = std::streampos

Member Enumeration Documentation

◆ RELOC_OP

Enumerator
ADD 
SUB 

Constructor & Destructor Documentation

◆ vector_iostream() [1/3]

◆ vector_iostream() [2/3]

LIEF::vector_iostream::vector_iostream ( std::vector< uint8_t > & ref)
inline

◆ vector_iostream() [3/3]

LIEF::vector_iostream::vector_iostream ( bool endian_swap)
inline

Member Function Documentation

◆ align()

vector_iostream & LIEF::vector_iostream::align ( size_t alignment,
uint8_t fill = 0 )

References vector_iostream().

◆ apply_fixup()

template<class T >
vector_iostream & LIEF::vector_iostream::apply_fixup ( size_t id,
T value )
inline

◆ begin() [1/2]

std::vector< uint8_t >::iterator LIEF::vector_iostream::begin ( )
inline

◆ begin() [2/2]

std::vector< uint8_t >::const_iterator LIEF::vector_iostream::begin ( ) const
inline

◆ clear()

vector_iostream & LIEF::vector_iostream::clear ( )
inline

References clear(), and vector_iostream().

Referenced by clear().

◆ copy_into() [1/2]

const vector_iostream & LIEF::vector_iostream::copy_into ( const span< uint8_t > & sp) const
inline

References vector_iostream().

◆ copy_into() [2/2]

const vector_iostream & LIEF::vector_iostream::copy_into ( const span< uint8_t > & sp,
size_t sz ) const
inline

References size(), and vector_iostream().

◆ data()

span< const uint8_t > LIEF::vector_iostream::data ( ) const
inline

Referenced by write().

◆ edit_as() [1/2]

template<class T >
T * LIEF::vector_iostream::edit_as ( )
inline

◆ edit_as() [2/2]

template<class T >
T * LIEF::vector_iostream::edit_as ( size_t pos)
inline

References seekp().

◆ empty()

bool LIEF::vector_iostream::empty ( ) const
inline

◆ end() [1/2]

std::vector< uint8_t >::iterator LIEF::vector_iostream::end ( )
inline

◆ end() [2/2]

std::vector< uint8_t >::const_iterator LIEF::vector_iostream::end ( ) const
inline

◆ flush()

vector_iostream & LIEF::vector_iostream::flush ( )
inline

References vector_iostream().

◆ get()

vector_iostream & LIEF::vector_iostream::get ( std::vector< uint8_t > & c)
inline

References vector_iostream().

◆ get_fixups()

const std::vector< uint64_t > & LIEF::vector_iostream::get_fixups ( size_t id) const
inline

Referenced by apply_fixup().

◆ increase_capacity()

vector_iostream & LIEF::vector_iostream::increase_capacity ( size_t size)
inline

References reserve(), size(), and vector_iostream().

◆ init_fixups()

vector_iostream & LIEF::vector_iostream::init_fixups ( size_t count)
inline

References vector_iostream().

◆ move()

vector_iostream & LIEF::vector_iostream::move ( std::vector< uint8_t > & c)
inline

References vector_iostream().

◆ pad()

vector_iostream & LIEF::vector_iostream::pad ( size_t size,
uint8_t value = 0 )
inline

References size(), and vector_iostream().

◆ put()

vector_iostream & LIEF::vector_iostream::put ( uint8_t c)

References vector_iostream().

◆ raw() [1/2]

std::vector< uint8_t > & LIEF::vector_iostream::raw ( )
inline

◆ raw() [2/2]

const std::vector< uint8_t > & LIEF::vector_iostream::raw ( ) const
inline

◆ record_fixup() [1/2]

vector_iostream & LIEF::vector_iostream::record_fixup ( size_t id)
inline

◆ record_fixup() [2/2]

vector_iostream & LIEF::vector_iostream::record_fixup ( size_t id,
bool cond )
inline

References tellp(), and vector_iostream().

Referenced by record_fixup().

◆ reloc()

template<class T >
vector_iostream & LIEF::vector_iostream::reloc ( uint64_t offset,
T shift,
RELOC_OP op = RELOC_OP::ADD )
inline

References ADD, SUB, and vector_iostream().

Referenced by apply_fixup().

◆ reserve()

vector_iostream & LIEF::vector_iostream::reserve ( size_t size)
inline

References reserve(), size(), and vector_iostream().

Referenced by increase_capacity(), and reserve().

◆ seek_end()

vector_iostream & LIEF::vector_iostream::seek_end ( )
inline

References seekp(), and vector_iostream().

◆ seekp() [1/2]

vector_iostream & LIEF::vector_iostream::seekp ( pos_type p)
inline

◆ seekp() [2/2]

vector_iostream & LIEF::vector_iostream::seekp ( vector_iostream::off_type p,
std::ios_base::seekdir dir )

References vector_iostream().

◆ set_endian_swap()

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

◆ size()

size_t LIEF::vector_iostream::size ( ) const
inline

◆ sleb128_size()

static size_t LIEF::vector_iostream::sleb128_size ( int64_t value)
static

◆ tellp()

pos_type LIEF::vector_iostream::tellp ( ) const
inline

Referenced by record_fixup(), and write().

◆ uleb128_size()

static size_t LIEF::vector_iostream::uleb128_size ( uint64_t value)
static

◆ write() [1/12]

template<typename T , class U >
vector_iostream & LIEF::vector_iostream::write ( const optional< U > & opt)
inline

References vector_iostream(), and write().

◆ write() [2/12]

template<typename T , size_t size>
vector_iostream & LIEF::vector_iostream::write ( const std::array< T, size > & t)
inline

References vector_iostream(), and write().

◆ write() [3/12]

template<typename T >
vector_iostream & LIEF::vector_iostream::write ( const std::pair< T, T > & p)
inline

References vector_iostream(), and write().

◆ write() [4/12]

vector_iostream & LIEF::vector_iostream::write ( const std::string & s)
inline

References vector_iostream(), and write().

◆ write() [5/12]

vector_iostream & LIEF::vector_iostream::write ( const std::u16string & s,
bool with_null_char )

References vector_iostream().

◆ write() [6/12]

template<typename T >
vector_iostream & LIEF::vector_iostream::write ( const std::vector< T > & elements)
inline

References vector_iostream(), and write().

◆ write() [7/12]

template<class T , typename = typename std::enable_if<std::is_standard_layout<T>::value && std::is_trivial<T>::value>::type>
vector_iostream & LIEF::vector_iostream::write ( const T & t)
inline

◆ write() [8/12]

vector_iostream & LIEF::vector_iostream::write ( const uint8_t * s,
std::streamsize n )

◆ write() [9/12]

vector_iostream & LIEF::vector_iostream::write ( const vector_iostream & other)
inline

References data(), vector_iostream(), and write().

◆ write() [10/12]

vector_iostream & LIEF::vector_iostream::write ( size_t count,
uint8_t value )
inline

References vector_iostream().

◆ write() [11/12]

vector_iostream & LIEF::vector_iostream::write ( span< const uint8_t > sp)
inline

References vector_iostream(), and write().

◆ write() [12/12]

vector_iostream & LIEF::vector_iostream::write ( std::vector< uint8_t > s)
inline

References vector_iostream(), and write().

◆ write_sized_int()

vector_iostream & LIEF::vector_iostream::write_sized_int ( uint64_t value,
size_t size )
inline

References size(), vector_iostream(), and write().

◆ write_sleb128()

vector_iostream & LIEF::vector_iostream::write_sleb128 ( int64_t value)

References vector_iostream().

◆ write_uleb128()

vector_iostream & LIEF::vector_iostream::write_uleb128 ( uint64_t value)

References vector_iostream().


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