37 endian_swap_(endian_swap)
46 return write(sp.data(), sp.size());
50 return write(s.data(), s.size());
54 return write(
reinterpret_cast<const uint8_t*
>(s.c_str()), s.size() + 1);
58 raw_.insert(std::end(raw_), count, value);
59 current_pos_ += count;
63 const uint64_t stack_val = value;
64 return write(
reinterpret_cast<const uint8_t*
>(&stack_val),
size);
70 template<class T, typename = typename std::enable_if<std::is_standard_layout<T>::value && std::is_trivial<T>::value>::type>
72 const auto pos =
static_cast<size_t>(
tellp());
73 if (raw_.size() < (pos +
sizeof(T))) {
74 raw_.resize(pos +
sizeof(T));
79 memcpy(raw_.data() + pos, &tmp,
sizeof(T));
81 memcpy(raw_.data() + pos, &t,
sizeof(T));
83 current_pos_ +=
sizeof(T);
89 template<
typename T,
size_t size>
91 static_assert(std::numeric_limits<T>::is_integer,
"Requires integer type");
101 for (
const T& e : elements) {
139 const std::vector<uint8_t>&
raw()
const {
143 std::vector<uint8_t>&
raw() {
153 std::vector<uint8_t> raw_;
154 bool endian_swap_ =
false;
Definition iostream.hpp:29
std::vector< uint8_t > & raw()
Definition iostream.hpp:143
static size_t sleb128_size(int64_t value)
vector_iostream & flush()
Definition iostream.hpp:119
vector_iostream & seekp(vector_iostream::off_type p, std::ios_base::seekdir dir)
const std::vector< uint8_t > & raw() const
Definition iostream.hpp:139
vector_iostream & write(const std::array< T, size > &t)
Definition iostream.hpp:90
size_t size() const
Definition iostream.hpp:123
vector_iostream & put(uint8_t c)
vector_iostream & write_uleb128(uint64_t value)
vector_iostream & write(const uint8_t *s, std::streamsize n)
vector_iostream & seekp(pos_type p)
Definition iostream.hpp:132
void reserve(size_t size)
Definition iostream.hpp:39
vector_iostream & move(std::vector< uint8_t > &c)
Definition iostream.hpp:114
vector_iostream & write_sized_int(uint64_t value, size_t size)
Definition iostream.hpp:62
vector_iostream & write(const std::string &s)
Definition iostream.hpp:53
std::streampos pos_type
Definition iostream.hpp:33
vector_iostream()=default
pos_type tellp() const
Definition iostream.hpp:128
vector_iostream & write(const vector_iostream &other)
Definition iostream.hpp:66
vector_iostream & write(span< const uint8_t > sp)
Definition iostream.hpp:45
vector_iostream & align(size_t alignment, uint8_t fill=0)
void set_endian_swap(bool swap)
Definition iostream.hpp:147
vector_iostream & write(std::vector< uint8_t > s)
Definition iostream.hpp:49
vector_iostream & write(const T &t)
Definition iostream.hpp:71
static size_t uleb128_size(uint64_t value)
std::streamoff off_type
Definition iostream.hpp:34
vector_iostream & write(const std::vector< T > &elements)
Definition iostream.hpp:100
vector_iostream & write_sleb128(int64_t value)
vector_iostream & write(size_t count, uint8_t value)
Definition iostream.hpp:57
vector_iostream(bool endian_swap)
Definition iostream.hpp:36
vector_iostream & get(std::vector< uint8_t > &c)
Definition iostream.hpp:110
LIEF namespace.
Definition Abstract/Binary.hpp:36
tcb::span< ElementType, Extent > span
Definition span.hpp:22
void swap_endian(T *)
Definition endianness_support.hpp:116