1 #ifndef LIBFILEZILLA_BUFFER_HEADER
2 #define LIBFILEZILLA_BUFFER_HEADER
29 typedef unsigned char value_type;
31 buffer() noexcept =
default;
34 explicit buffer(
size_t capacity);
39 ~
buffer() {
delete[] data_; }
45 unsigned char const*
get()
const {
return pos_; }
46 unsigned char*
get() {
return pos_; }
49 unsigned char*
data() {
return pos_; }
50 unsigned char const* data()
const {
return pos_; }
70 unsigned char*
get(
size_t write_size);
73 void add(
size_t added);
81 template<
typename T, std::enable_if_t<std::is_
signed_v<T>,
int> = 0>
84 add(static_cast<size_t>(added));
92 void consume(
size_t consumed);
94 size_t size()
const {
return size_; }
105 void append(
unsigned char const* data,
size_t len);
106 void append(std::string_view
const& str);
107 void append(std::vector<uint8_t>
const& data);
109 void append(
unsigned char v);
110 void append(
size_t len,
unsigned char c);
112 buffer& operator+=(
unsigned char v) {
116 buffer& operator+=(std::string_view
const& str) {
120 buffer& operator+=(std::vector<uint8_t>
const& data) {
129 bool empty()
const {
return size_ == 0; }
130 explicit operator bool()
const {
134 size_t capacity()
const {
return capacity_; }
135 void reserve(
size_t capacity);
137 void resize(
size_t size);
141 unsigned char & operator[](
size_t i) {
return pos_[i]; }
145 bool operator!=(buffer
const& rhs)
const {
146 return !(*
this == rhs);
149 std::string_view to_view()
const;
157 unsigned char* data_{};
158 unsigned char* pos_{};
bool operator==(symmetric_key const &lhs, symmetric_key const &rhs)
Side-channel safe comparison.
void add(T added)
Overload of add for signed types, only adds if value is positive.
Definition: buffer.hpp:82
The namespace used by libfilezilla.
Definition: apply.hpp:17
Sets some global macros and further includes string.hpp.
The buffer class is a simple buffer where data can be appended at the end and consumed at the front...
Definition: buffer.hpp:26
unsigned char * data()
Same as get()
Definition: buffer.hpp:49
unsigned char operator[](size_t i) const
Gets element at offset i. Does not do bounds checking.
Definition: buffer.hpp:140