37 endian_swap_(endian_swap)
46 return write(sp.data(), sp.size());
53 return write(s.data(), s.size());
57 return write(
reinterpret_cast<const uint8_t*
>(s.c_str()), s.size() + 1);
63 raw_.insert(std::end(raw_), count, value);
64 current_pos_ += count;
68 const uint64_t stack_val = value;
69 return write(
reinterpret_cast<const uint8_t*
>(&stack_val),
size);
75 template<class T, typename = typename std::enable_if<std::is_standard_layout<T>::value && std::is_trivial<T>::value>::type>
77 const auto pos =
static_cast<size_t>(
tellp());
78 if (raw_.size() < (pos +
sizeof(T))) {
79 raw_.resize(pos +
sizeof(T));
84 memcpy(raw_.data() + pos, &tmp,
sizeof(T));
86 memcpy(raw_.data() + pos, &t,
sizeof(T));
88 current_pos_ +=
sizeof(T);
94 template<
typename T,
size_t size>
96 static_assert(std::numeric_limits<T>::is_integer,
"Requires integer type");
105 for (
const T& e : elements) {
143 const std::vector<uint8_t>&
raw()
const {
147 std::vector<uint8_t>&
raw() {
157 std::vector<uint8_t> raw_;
158 bool endian_swap_ =
false;
Definition iostream.hpp:29
std::vector< uint8_t > & raw()
Definition iostream.hpp:147
static size_t sleb128_size(int64_t value)
vector_iostream & flush()
Definition iostream.hpp:123
vector_iostream & seekp(vector_iostream::off_type p, std::ios_base::seekdir dir)
const std::vector< uint8_t > & raw() const
Definition iostream.hpp:143
vector_iostream & write(const std::array< T, size > &t)
Definition iostream.hpp:95
size_t size() const
Definition iostream.hpp:127
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:136
vector_iostream & write(const std::u16string &s, bool with_null_char)
void reserve(size_t size)
Definition iostream.hpp:39
vector_iostream & move(std::vector< uint8_t > &c)
Definition iostream.hpp:118
vector_iostream & write_sized_int(uint64_t value, size_t size)
Definition iostream.hpp:67
vector_iostream & write(const std::string &s)
Definition iostream.hpp:56
std::streampos pos_type
Definition iostream.hpp:33
vector_iostream()=default
pos_type tellp() const
Definition iostream.hpp:132
vector_iostream & write(const vector_iostream &other)
Definition iostream.hpp:71
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:151
vector_iostream & write(std::vector< uint8_t > s)
Definition iostream.hpp:49
vector_iostream & write(const T &t)
Definition iostream.hpp:76
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:104
vector_iostream & write_sleb128(int64_t value)
vector_iostream & write(size_t count, uint8_t value)
Definition iostream.hpp:62
vector_iostream(bool endian_swap)
Definition iostream.hpp:36
vector_iostream & get(std::vector< uint8_t > &c)
Definition iostream.hpp:114
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