Line data Source code
1 : // 2 : // Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com) 3 : // 4 : // Distributed under the Boost Software License, Version 1.0. (See accompanying 5 : // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 : // 7 : // Official repository: https://github.com/CPPAlliance/http_proto 8 : // 9 : 10 : #ifndef BOOST_HTTP_PROTO_DETAIL_FLAT_BUFFER_HPP 11 : #define BOOST_HTTP_PROTO_DETAIL_FLAT_BUFFER_HPP 12 : 13 : #include <boost/http_proto/buffer.hpp> 14 : 15 : namespace boost { 16 : namespace http_proto { 17 : namespace detail { 18 : 19 : class flat_buffer 20 : { 21 : unsigned char* data_ = nullptr; 22 : std::size_t cap_ = 0; 23 : std::size_t in_pos_ = 0; 24 : std::size_t in_size_ = 0; 25 : std::size_t out_size_ = 0; 26 : 27 : public: 28 744 : flat_buffer() = default; 29 : flat_buffer( 30 : flat_buffer const&) = default; 31 : flat_buffer& operator=( 32 : flat_buffer const&) = default; 33 : 34 : flat_buffer( 35 : void* data, 36 : std::size_t capacity, 37 : std::size_t initial_size = 0) noexcept; 38 : 39 : bool empty() const noexcept; 40 : std::size_t size() const noexcept; 41 : std::size_t capacity() const noexcept; 42 : const_buffer data() const noexcept; 43 : mutable_buffer prepare(std::size_t n); 44 : void commit(std::size_t n); 45 : void consume(std::size_t n) noexcept; 46 : }; 47 : 48 : } // detail 49 : } // http_proto 50 : } // boost 51 : 52 : #endif