6 #include <boost/beast/core/multi_buffer.hpp> 16 using multi_buffer = ::boost::beast::multi_buffer;
19 src_.it = mdata.begin();
24 Ch Peek()
const {
return *src_.current; }
27 Ch res = *src_.current++;
29 src_consumed_ += src_.Inc(end_);
35 size_t res = src_consumed_;
37 res += src_.current - reinterpret_cast<const char*>((*src_.it).data());
42 Ch* PutBegin() { assert(0);
return nullptr; }
43 size_t PutEnd(Ch* begin) { assert(0);
return 0; }
44 void Put(Ch c) { assert(0); }
70 using const_iterator = multi_buffer::const_buffers_type::const_iterator;
74 const char *current, *end;
76 Item() : current(
nullptr), end(
nullptr) {}
78 size_t Inc(const_iterator end_it) {
79 size_t res = (*it).size();
85 void Setup(const_iterator end_it) {
88 current = reinterpret_cast<char*>(&end);
92 current = reinterpret_cast<const char*>(mb.data());
93 end = current + mb.size();
96 bool finish()
const {
return end == current; }
101 size_t src_consumed_ = 0;
107 namespace rapidjson {
111 enum { copyOptimization = 1 };