/usr/include/boost/beast/core
Edit: /usr/include/boost/beast/core/buffers_cat.hpp (3383B)
//
// 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_CAT_HPP
#define BOOST_BEAST_BUFFERS_CAT_HPP
#include
#include
#include
#include
namespace boost {
namespace beast {
/** A buffer sequence representing a concatenation of buffer sequences.
@see buffers_cat
*/
template
class buffers_cat_view
{
detail::tuple bn_;
public:
/** The type of buffer returned when dereferencing an iterator.
If every buffer sequence in the view is a MutableBufferSequence,
then `value_type` will be `net::mutable_buffer`.
Otherwise, `value_type` will be `net::const_buffer`.
*/
#if BOOST_BEAST_DOXYGEN
using value_type = __see_below__;
#else
using value_type = buffers_type;
#endif
/// The type of iterator used by the concatenated sequence
class const_iterator;
/// Copy Constructor
buffers_cat_view(buffers_cat_view const&) = default;
/// Copy Assignment
buffers_cat_view& operator=(buffers_cat_view const&) = default;
/** Constructor
@param buffers The list of buffer sequences to concatenate.
Copies of the arguments will be maintained for the lifetime
of the concatenated sequence; however, the ownership of the
memory buffers themselves is not transferred.
*/
explicit
buffers_cat_view(Buffers const&... buffers);
/// 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;
};
/** Concatenate 1 or more buffer sequences.
This function returns a constant or mutable buffer sequence which,
when iterated, efficiently concatenates the input buffer sequences.
Copies of the arguments passed will be made; however, the returned
object does not take ownership of the underlying memory. The
application is still responsible for managing the lifetime of the
referenced memory.
@param buffers The list of buffer sequences to concatenate.
@return A new buffer sequence that represents the concatenation of
the input buffer sequences. This buffer sequence will be a
MutableBufferSequence if each of the passed buffer sequences is
also a MutableBufferSequence; otherwise the returned buffer
sequence will be a ConstBufferSequence.
@see buffers_cat_view
*/
#if BOOST_BEAST_DOXYGEN
template
buffers_cat_view
buffers_cat(BufferSequence const&... buffers)
#else
template
buffers_cat_view
buffers_cat(B1 const& b1, Bn const&... bn)
#endif
{
static_assert(
is_const_buffer_sequence::value,
"BufferSequence type requirements not met");
return buffers_cat_view{b1, bn...};
}
} // beast
} // boost
#include
#endif