/
usr
/
include
/
boost
/
beast
/
core
/
/usr/include/boost/beast/core
mkdir
upload
Name
Size
Mode
Actions
detail/
-
0755
rm
impl/
-
0755
rm
async_base.hpp
26461
0644
edit
dl
rm
basic_stream.hpp
55342
0644
edit
dl
rm
bind_handler.hpp
4172
0644
edit
dl
rm
buffered_read_stream.hpp
11877
0644
edit
dl
rm
buffers_adaptor.hpp
6783
0644
edit
dl
rm
buffers_cat.hpp
3383
0644
edit
dl
rm
buffers_prefix.hpp
6152
0644
edit
dl
rm
buffers_range.hpp
4211
0644
edit
dl
rm
buffers_suffix.hpp
3971
0644
edit
dl
rm
buffers_to_string.hpp
1770
0644
edit
dl
rm
buffer_traits.hpp
5757
0644
edit
dl
rm
detect_ssl.hpp
22345
0644
edit
dl
rm
error.hpp
2257
0644
edit
dl
rm
file.hpp
1028
0644
edit
dl
rm
file_base.hpp
5015
0644
edit
dl
rm
file_posix.hpp
4222
0644
edit
dl
rm
file_stdio.hpp
3849
0644
edit
dl
rm
file_win32.hpp
4248
0644
edit
dl
rm
flat_buffer.hpp
15427
0644
edit
dl
rm
flat_static_buffer.hpp
8706
0644
edit
dl
rm
flat_stream.hpp
12603
0644
edit
dl
rm
make_printable.hpp
2803
0644
edit
dl
rm
multi_buffer.hpp
18153
0644
edit
dl
rm
ostream.hpp
2690
0644
edit
dl
rm
rate_policy.hpp
4592
0644
edit
dl
rm
read_size.hpp
1844
0644
edit
dl
rm
role.hpp
1322
0644
edit
dl
rm
saved_handler.hpp
3788
0644
edit
dl
rm
span.hpp
4787
0644
edit
dl
rm
static_buffer.hpp
8515
0644
edit
dl
rm
static_string.hpp
25720
0644
edit
dl
rm
stream_traits.hpp
16399
0644
edit
dl
rm
string.hpp
1941
0644
edit
dl
rm
string_param.hpp
3459
0644
edit
dl
rm
string_type.hpp
1092
0644
edit
dl
rm
tcp_stream.hpp
853
0644
edit
dl
rm
Edit:
/usr/include/boost/beast/core/buffers_prefix.hpp
(6152B)
// // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // // Official repository: https://github.com/boostorg/beast // #ifndef BOOST_BEAST_BUFFERS_PREFIX_HPP #define BOOST_BEAST_BUFFERS_PREFIX_HPP #include <boost/beast/core/detail/config.hpp> #include <boost/beast/core/buffer_traits.hpp> #include <boost/optional/optional.hpp> // for in_place_init_t #include <algorithm> #include <cstdint> #include <type_traits> #if BOOST_WORKAROUND(BOOST_MSVC, < 1910) #include <boost/type_traits/is_convertible.hpp> #endif namespace boost { namespace beast { /** A buffer sequence adaptor that shortens the sequence size. The class adapts a buffer sequence to efficiently represent a shorter subset of the original list of buffers starting with the first byte of the original sequence. @tparam BufferSequence The buffer sequence to adapt. */ template<class BufferSequence> class buffers_prefix_view { using iter_type = buffers_iterator_type<BufferSequence>; BufferSequence bs_; std::size_t size_ = 0; std::size_t remain_ = 0; iter_type end_{}; void setup(std::size_t size); buffers_prefix_view( buffers_prefix_view const& other, std::size_t dist); public: /** The type for each element in the list of buffers. If the type `BufferSequence` meets the requirements of <em>MutableBufferSequence</em>, then `value_type` is `net::mutable_buffer`. Otherwise, `value_type` is `net::const_buffer`. @see buffers_type */ #if BOOST_BEAST_DOXYGEN using value_type = __see_below__; #elif BOOST_WORKAROUND(BOOST_MSVC, < 1910) using value_type = typename std::conditional< boost::is_convertible<typename std::iterator_traits<iter_type>::value_type, net::mutable_buffer>::value, net::mutable_buffer, net::const_buffer>::type; #else using value_type = buffers_type<BufferSequence>; #endif #if BOOST_BEAST_DOXYGEN /// A bidirectional iterator type that may be used to read elements. using const_iterator = __implementation_defined__; #else class const_iterator; #endif /// Copy Constructor buffers_prefix_view(buffers_prefix_view const&); /// Copy Assignment buffers_prefix_view& operator=(buffers_prefix_view const&); /** Construct a buffer sequence prefix. @param size The maximum number of bytes in the prefix. If this is larger than the size of passed buffers, the resulting sequence will represent the entire input sequence. @param buffers The buffer sequence to adapt. A copy of the sequence will be made, but ownership of the underlying memory is not transferred. The copy is maintained for the lifetime of the view. */ buffers_prefix_view( std::size_t size, BufferSequence const& buffers); /** Construct a buffer sequence prefix in-place. @param size The maximum number of bytes in the prefix. If this is larger than the size of passed buffers, the resulting sequence will represent the entire input sequence. @param args Arguments forwarded to the contained buffer's constructor. */ template<class... Args> buffers_prefix_view( std::size_t size, boost::in_place_init_t, Args&&... args); /// Returns an iterator to the first buffer in the sequence const_iterator begin() const; /// Returns an iterator to one past the last buffer in the sequence const_iterator end() const; #if ! BOOST_BEAST_DOXYGEN std::size_t buffer_bytes_impl() const noexcept { return size_; } #endif }; //------------------------------------------------------------------------------ /** Returns a prefix of a constant or mutable buffer sequence. The returned buffer sequence points to the same memory as the passed buffer sequence, but with a size that is equal to or smaller. No memory allocations are performed; the resulting sequence is calculated as a lazy range. @param size The maximum size of the returned buffer sequence in bytes. If this is greater than or equal to the size of the passed buffer sequence, the result will have the same size as the original buffer sequence. @param buffers An object whose type meets the requirements of <em>BufferSequence</em>. The returned value will maintain a copy of the passed buffers for its lifetime; however, ownership of the underlying memory is not transferred. @return A constant buffer sequence that represents the prefix of the original buffer sequence. If the original buffer sequence also meets the requirements of <em>MutableBufferSequence</em>, then the returned value will also be a mutable buffer sequence. */ template<class BufferSequence> buffers_prefix_view<BufferSequence> buffers_prefix( std::size_t size, BufferSequence const& buffers) { static_assert( net::is_const_buffer_sequence<BufferSequence>::value, "BufferSequence type requirements not met"); return buffers_prefix_view<BufferSequence>(size, buffers); } /** Returns the first buffer in a buffer sequence This returns the first buffer in the buffer sequence. If the buffer sequence is an empty range, the returned buffer will have a zero buffer size. @param buffers The buffer sequence. If the sequence is mutable, the returned buffer sequence will also be mutable. Otherwise, the returned buffer sequence will be constant. */ template<class BufferSequence> buffers_type<BufferSequence> buffers_front(BufferSequence const& buffers) { auto const first = net::buffer_sequence_begin(buffers); if(first == net::buffer_sequence_end(buffers)) return {}; return *first; } } // beast } // boost #include <boost/beast/core/impl/buffers_prefix.hpp> #endif
Save
cmd:
run