22 namespace protocol_buffers
40 using off_type =
typename std::make_signed <pos_type>::type;
60 bool read (
char* s, std::size_t n)
62 if (FRAMEWORK_EXPECT_FALSE(p_pEnd - p_pIt < static_cast <long> (n)))
73 template <std::
size_t N>
77 if (FRAMEWORK_EXPECT_FALSE(p_pEnd - p_pIt < static_cast <long> (N)))
87 *s = (char)*(p_pIt++);
99 return p_pIt - p_pBegin;
114 if (FRAMEWORK_EXPECT_FALSE(p_pEnd - p_pBegin <= static_cast <long> (pos)))
117 p_pIt = p_pBegin + pos;
138 if (FRAMEWORK_EXPECT_FALSE(off < 0 || p_pEnd - p_pBegin < off))
141 p_pIt = p_pBegin + off;
145 if (FRAMEWORK_EXPECT_FALSE(off > 0 || p_pEnd - p_pBegin < off))
148 p_pIt = p_pEnd - off;
154 if (FRAMEWORK_EXPECT_FALSE(p_pEnd - p_pIt < off))
162 if (FRAMEWORK_EXPECT_FALSE(p_pIt - p_pBegin < -off))
177 char const*
const p_pBegin;
178 char const*
const p_pEnd;
188 template <
bool Safe = true>
200 using off_type =
typename std::make_signed <pos_type>::type;
217 assert(p_pBegin <= p_pEnd);
223 bool write (
char const* s, std::streamsize n)
227 if (FRAMEWORK_EXPECT_FALSE(p_pEnd - p_pIt < n))
232 assert(p_pEnd - p_pIt >= n);
243 template <std::
size_t N>
248 if (FRAMEWORK_EXPECT_FALSE(static_cast <std::size_t> (p_pEnd - p_pIt) < N))
253 assert(static_cast <std::size_t> (p_pEnd - p_pIt) >= N);
263 *(p_pIt++) = static_cast <char> (*s);
282 if (FRAMEWORK_EXPECT_FALSE(static_cast <std::size_t> (p_pEnd - p_pBegin) < pos))
287 assert(static_cast <std::size_t> (p_pEnd - p_pBegin) >= pos);
290 p_pIt = p_pBegin + pos;
299 assert((p_pBegin <= p_pIt) && (p_pIt <= p_pEnd));
300 return p_pIt - p_pBegin;
305 char*
const p_pBegin;
314 template <
typename Stream>
325 : std::reference_wrapper <Stream> (stream),
334 bool read (
char* s, std::size_t n)
336 if (FRAMEWORK_EXPECT_FALSE(p_iSize < n))
348 template <std::
size_t N>
352 if (FRAMEWORK_EXPECT_FALSE(p_iSize < N))
354 if (FRAMEWORK_EXPECT_FALSE(!serializable::stream_read <N> (this->
get(), s)))
393 bool write (
char const*, std::size_t n)
402 template <std::
size_t N>
451 explicit operator std::size_t()
const
457 std::size_t p_iSize {};
477 using size_frame::operator std::size_t;