/usr/include/boost/beast/core
Edit: /usr/include/boost/beast/core/buffers_range.hpp (4211B)
//
// 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_RANGE_HPP
#define BOOST_BEAST_BUFFERS_RANGE_HPP
#include
#include
#include
namespace boost {
namespace beast {
/** Returns an iterable range representing a buffer sequence.
This function returns an iterable range representing the
passed buffer sequence. The values obtained when iterating
the range will be `net::const_buffer`, unless the underlying
buffer sequence is a MutableBufferSequence, in which case
the value obtained when iterating will be a `net::mutable_buffer`.
@par Example
The following function returns the total number of bytes in
the specified buffer sequence. A copy of the buffer sequence
is maintained for the lifetime of the range object:
@code
template
std::size_t buffer_sequence_size (BufferSequence const& buffers)
{
std::size_t size = 0;
for (auto const buffer : buffers_range (buffers))
size += buffer.size();
return size;
}
@endcode
@param buffers The buffer sequence to adapt into a range. The
range object returned from this function will contain a copy
of the passed buffer sequence.
@return An object of unspecified type which meets the requirements
of ConstBufferSequence. If `buffers` is a mutable buffer
sequence, the returned object will also meet the requirements of
MutableBufferSequence.
@see buffers_range_ref
*/
template
#if BOOST_BEAST_DOXYGEN
__implementation_defined__
#else
detail::buffers_range_adaptor
#endif
buffers_range(BufferSequence const& buffers)
{
static_assert(
is_const_buffer_sequence::value,
"BufferSequence type requirements not met");
return detail::buffers_range_adaptor<
BufferSequence>(buffers);
}
/** Returns an iterable range representing a buffer sequence.
This function returns an iterable range representing the
passed buffer sequence. The values obtained when iterating
the range will be `net::const_buffer`, unless the underlying
buffer sequence is a MutableBufferSequence, in which case
the value obtained when iterating will be a `net::mutable_buffer`.
@par Example
The following function returns the total number of bytes in
the specified buffer sequence. A reference to the original
buffers is maintained for the lifetime of the range object:
@code
template
std::size_t buffer_sequence_size_ref (BufferSequence const& buffers)
{
std::size_t size = 0;
for (auto const buffer : buffers_range_ref (buffers))
size += buffer.size();
return size;
}
@endcode
@param buffers The buffer sequence to adapt into a range. The
range returned from this function will maintain a reference to
these buffers. The application is responsible for ensuring that
the lifetime of the referenced buffers extends until the range
object is destroyed.
@return An object of unspecified type which meets the requirements
of ConstBufferSequence. If `buffers` is a mutable buffer
sequence, the returned object will also meet the requirements of
MutableBufferSequence.
@see buffers_range
*/
template
#if BOOST_BEAST_DOXYGEN
__implementation_defined__
#else
detail::buffers_range_adaptor
#endif
buffers_range_ref(BufferSequence const& buffers)
{
static_assert(
is_const_buffer_sequence::value,
"BufferSequence type requirements not met");
return detail::buffers_range_adaptor<
BufferSequence const&>(buffers);
}
/** @} */
} // beast
} // boost
#endif