src/base/buffer_back_insert_iterator.hpp¶
Namespaces¶
| Name |
|---|
| std STL namespace. |
Classes¶
| Name | |
|---|---|
| class | std::back_insert_iterator< Buffer > |
| class | Buffer Class represents arbitrary (including empty) byte buffer. |
Source code¶
#include "base/buffer.hpp"
using sgns::base::Buffer;
namespace std {
/*
* std::back_insert_iterator is an output iterator
* that appends to a container for which it was constructed.
*/
template <>
class back_insert_iterator<Buffer> {
public:
using value_type = Buffer::value_type;
using difference_type = typename std::vector<uint8_t>::difference_type;
using pointer = Buffer::pointer;
using reference = typename std::vector<uint8_t>::reference;
using iterator_category = std::random_access_iterator_tag;
constexpr explicit back_insert_iterator(Buffer &c):
buf_ {c} {
}
back_insert_iterator<Buffer>(const back_insert_iterator<Buffer>& a):buf_{a.buf_} {
}
back_insert_iterator<Buffer>& operator=(const back_insert_iterator<Buffer>& a) {
buf_ = a.buf_ ;
return *this;
}
back_insert_iterator<Buffer>&
operator=(uint8_t value) {
buf_.putUint8(value);
return *this;
}
back_insert_iterator<Buffer>&
operator=(uint32_t value) {
buf_.putUint32(value);
return *this;
}
back_insert_iterator<Buffer>&
operator=(std::string_view value) {
buf_.put(value);
return *this;
}
back_insert_iterator<Buffer>&
operator=(gsl::span<const uint8_t> s) {
buf_.put(s);
return *this;
}
back_insert_iterator<Buffer>&
operator=(const std::vector<uint8_t>& v) {
buf_.put(v);
return *this;
}
constexpr back_insert_iterator& operator*() {
return *this;
}
constexpr back_insert_iterator& operator++() {
return *this;
}
constexpr back_insert_iterator& operator++(int) {
return *this;
}
private:
Buffer& buf_;
};
}
Updated on 2026-03-04 at 13:10:44 -0800