forked from premiere/premiere-libtorrent
remove typed_span type
This commit is contained in:
parent
ef6db120a3
commit
7103b12cb7
|
@ -257,7 +257,6 @@ set(libtorrent_aux_include_files
|
||||||
throw
|
throw
|
||||||
time
|
time
|
||||||
torrent_impl
|
torrent_impl
|
||||||
typed_span
|
|
||||||
unique_ptr
|
unique_ptr
|
||||||
vector
|
vector
|
||||||
win_crypto_provider
|
win_crypto_provider
|
||||||
|
|
|
@ -212,7 +212,6 @@ nobase_include_HEADERS = \
|
||||||
aux_/unique_ptr.hpp \
|
aux_/unique_ptr.hpp \
|
||||||
aux_/alloca.hpp \
|
aux_/alloca.hpp \
|
||||||
aux_/throw.hpp \
|
aux_/throw.hpp \
|
||||||
aux_/typed_span.hpp \
|
|
||||||
aux_/array.hpp \
|
aux_/array.hpp \
|
||||||
aux_/ip_notifier.hpp \
|
aux_/ip_notifier.hpp \
|
||||||
aux_/noexcept_movable.hpp \
|
aux_/noexcept_movable.hpp \
|
||||||
|
|
|
@ -34,7 +34,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define TORRENT_ALLOCA_HPP_INCLUDED
|
#define TORRENT_ALLOCA_HPP_INCLUDED
|
||||||
|
|
||||||
#include "libtorrent/config.hpp"
|
#include "libtorrent/config.hpp"
|
||||||
#include "libtorrent/aux_/typed_span.hpp"
|
#include "libtorrent/span.hpp"
|
||||||
#include "libtorrent/aux_/numeric_cast.hpp"
|
#include "libtorrent/aux_/numeric_cast.hpp"
|
||||||
#include <iterator> // for iterator_traits
|
#include <iterator> // for iterator_traits
|
||||||
#include <memory> // for addressof
|
#include <memory> // for addressof
|
||||||
|
@ -77,10 +77,10 @@ struct alloca_destructor
|
||||||
#if defined TORRENT_WINDOWS || defined TORRENT_MINGW
|
#if defined TORRENT_WINDOWS || defined TORRENT_MINGW
|
||||||
|
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#define TORRENT_ALLOCA(v, t, n) ::libtorrent::aux::typed_span<t> v; { \
|
#define TORRENT_ALLOCA(v, t, n) ::libtorrent::span<t> v; { \
|
||||||
auto TORRENT_ALLOCA_size = ::libtorrent::aux::numeric_cast<std::ptrdiff_t>(n); \
|
auto TORRENT_ALLOCA_size = ::libtorrent::aux::numeric_cast<std::ptrdiff_t>(n); \
|
||||||
auto* TORRENT_ALLOCA_tmp = static_cast<t*>(_alloca(sizeof(t) * static_cast<std::size_t>(TORRENT_ALLOCA_size))); \
|
auto* TORRENT_ALLOCA_tmp = static_cast<t*>(_alloca(sizeof(t) * static_cast<std::size_t>(TORRENT_ALLOCA_size))); \
|
||||||
v = ::libtorrent::aux::typed_span<t>(TORRENT_ALLOCA_tmp, TORRENT_ALLOCA_size); \
|
v = ::libtorrent::span<t>(TORRENT_ALLOCA_tmp, TORRENT_ALLOCA_size); \
|
||||||
::libtorrent::aux::uninitialized_default_construct(v.begin(), v.end()); \
|
::libtorrent::aux::uninitialized_default_construct(v.begin(), v.end()); \
|
||||||
} \
|
} \
|
||||||
::libtorrent::aux::alloca_destructor<t> v##_destructor{v};
|
::libtorrent::aux::alloca_destructor<t> v##_destructor{v};
|
||||||
|
@ -88,10 +88,10 @@ struct alloca_destructor
|
||||||
#elif defined TORRENT_BSD
|
#elif defined TORRENT_BSD
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#define TORRENT_ALLOCA(v, t, n) ::libtorrent::aux::typed_span<t> v; { \
|
#define TORRENT_ALLOCA(v, t, n) ::libtorrent::span<t> v; { \
|
||||||
auto TORRENT_ALLOCA_size = ::libtorrent::aux::numeric_cast<std::ptrdiff_t>(n); \
|
auto TORRENT_ALLOCA_size = ::libtorrent::aux::numeric_cast<std::ptrdiff_t>(n); \
|
||||||
auto* TORRENT_ALLOCA_tmp = static_cast<t*>(alloca(sizeof(t) * static_cast<std::size_t>(TORRENT_ALLOCA_size))); \
|
auto* TORRENT_ALLOCA_tmp = static_cast<t*>(alloca(sizeof(t) * static_cast<std::size_t>(TORRENT_ALLOCA_size))); \
|
||||||
v = ::libtorrent::aux::typed_span<t>(TORRENT_ALLOCA_tmp, TORRENT_ALLOCA_size); \
|
v = ::libtorrent::span<t>(TORRENT_ALLOCA_tmp, TORRENT_ALLOCA_size); \
|
||||||
::libtorrent::aux::uninitialized_default_construct(v.begin(), v.end()); \
|
::libtorrent::aux::uninitialized_default_construct(v.begin(), v.end()); \
|
||||||
} \
|
} \
|
||||||
::libtorrent::aux::alloca_destructor<t> v##_destructor{v};
|
::libtorrent::aux::alloca_destructor<t> v##_destructor{v};
|
||||||
|
@ -99,10 +99,10 @@ struct alloca_destructor
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#include <alloca.h>
|
#include <alloca.h>
|
||||||
#define TORRENT_ALLOCA(v, t, n) ::libtorrent::aux::typed_span<t> v; { \
|
#define TORRENT_ALLOCA(v, t, n) ::libtorrent::span<t> v; { \
|
||||||
auto TORRENT_ALLOCA_size = ::libtorrent::aux::numeric_cast<std::ptrdiff_t>(n); \
|
auto TORRENT_ALLOCA_size = ::libtorrent::aux::numeric_cast<std::ptrdiff_t>(n); \
|
||||||
auto* TORRENT_ALLOCA_tmp = static_cast<t*>(alloca(sizeof(t) * static_cast<std::size_t>(TORRENT_ALLOCA_size))); \
|
auto* TORRENT_ALLOCA_tmp = static_cast<t*>(alloca(sizeof(t) * static_cast<std::size_t>(TORRENT_ALLOCA_size))); \
|
||||||
v = ::libtorrent::aux::typed_span<t>(TORRENT_ALLOCA_tmp, TORRENT_ALLOCA_size); \
|
v = ::libtorrent::span<t>(TORRENT_ALLOCA_tmp, TORRENT_ALLOCA_size); \
|
||||||
::libtorrent::aux::uninitialized_default_construct(v.begin(), v.end()); \
|
::libtorrent::aux::uninitialized_default_construct(v.begin(), v.end()); \
|
||||||
} \
|
} \
|
||||||
::libtorrent::aux::alloca_destructor<t> v##_destructor{v};
|
::libtorrent::aux::alloca_destructor<t> v##_destructor{v};
|
||||||
|
|
|
@ -39,7 +39,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "libtorrent/config.hpp"
|
#include "libtorrent/config.hpp"
|
||||||
#include "libtorrent/fwd.hpp"
|
#include "libtorrent/fwd.hpp"
|
||||||
#include "libtorrent/span.hpp"
|
#include "libtorrent/span.hpp"
|
||||||
#include "libtorrent/aux_/typed_span.hpp"
|
#include "libtorrent/span.hpp"
|
||||||
#include "libtorrent/units.hpp"
|
#include "libtorrent/units.hpp"
|
||||||
#include "libtorrent/storage_defs.hpp" // for status_t
|
#include "libtorrent/storage_defs.hpp" // for status_t
|
||||||
#include "libtorrent/session_types.hpp"
|
#include "libtorrent/session_types.hpp"
|
||||||
|
@ -57,7 +57,7 @@ namespace aux {
|
||||||
|
|
||||||
TORRENT_EXTRA_EXPORT int copy_bufs(span<iovec_t const> bufs
|
TORRENT_EXTRA_EXPORT int copy_bufs(span<iovec_t const> bufs
|
||||||
, int bytes, span<iovec_t> target);
|
, int bytes, span<iovec_t> target);
|
||||||
TORRENT_EXTRA_EXPORT typed_span<iovec_t> advance_bufs(typed_span<iovec_t> bufs, int bytes);
|
TORRENT_EXTRA_EXPORT span<iovec_t> advance_bufs(span<iovec_t> bufs, int bytes);
|
||||||
TORRENT_EXTRA_EXPORT void clear_bufs(span<iovec_t const> bufs);
|
TORRENT_EXTRA_EXPORT void clear_bufs(span<iovec_t const> bufs);
|
||||||
|
|
||||||
// this is a read or write operation so that readwritev() knows
|
// this is a read or write operation so that readwritev() knows
|
||||||
|
|
|
@ -1,169 +0,0 @@
|
||||||
/*
|
|
||||||
|
|
||||||
Copyright (c) 2017, Arvid Norberg, Alden Torres
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in
|
|
||||||
the documentation and/or other materials provided with the distribution.
|
|
||||||
* Neither the name of the author nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived
|
|
||||||
from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef TORRENT_TYPED_SPAN_HPP
|
|
||||||
#define TORRENT_TYPED_SPAN_HPP
|
|
||||||
|
|
||||||
#include <type_traits>
|
|
||||||
|
|
||||||
#include "libtorrent/units.hpp"
|
|
||||||
#include "libtorrent/span.hpp"
|
|
||||||
#include "libtorrent/assert.hpp"
|
|
||||||
|
|
||||||
namespace libtorrent { namespace aux {
|
|
||||||
|
|
||||||
template <typename T, typename IndexType = int>
|
|
||||||
struct typed_span : span<T>
|
|
||||||
{
|
|
||||||
using base = span<T>;
|
|
||||||
using underlying_index = typename underlying_index_t<IndexType>::type;
|
|
||||||
using typename span<T>::difference_type;
|
|
||||||
using typename span<T>::index_type;
|
|
||||||
|
|
||||||
// disallow conversions from other index types
|
|
||||||
template <typename OtherIndex>
|
|
||||||
typed_span(typed_span<T, OtherIndex> const&) = delete;
|
|
||||||
typed_span() noexcept = default;
|
|
||||||
typed_span(typed_span const&) noexcept = default;
|
|
||||||
typed_span& operator=(typed_span const&) noexcept = default;
|
|
||||||
|
|
||||||
template <typename U, typename
|
|
||||||
= typename std::enable_if<aux::compatible_type<U, T>::value>::type>
|
|
||||||
typed_span(typed_span<U> const& v) noexcept // NOLINT
|
|
||||||
: span<T>(v) {}
|
|
||||||
|
|
||||||
typed_span(T& p) noexcept : span<T>(p) {} // NOLINT
|
|
||||||
typed_span(T* p, difference_type const l) noexcept : span<T>(p, l) {} // NOLINT
|
|
||||||
|
|
||||||
template <typename U, std::size_t N>
|
|
||||||
typed_span(std::array<U, N>& arr) noexcept // NOLINT
|
|
||||||
: span<T>(arr.data(), static_cast<difference_type>(arr.size())) {}
|
|
||||||
|
|
||||||
template <typename U, difference_type N>
|
|
||||||
typed_span(U (&arr)[N]) noexcept // NOLINT
|
|
||||||
: span<T>(&arr[0], N) {}
|
|
||||||
|
|
||||||
// anything with a .data() member function is considered a container
|
|
||||||
// but only if the value type is compatible with T
|
|
||||||
template <typename Cont
|
|
||||||
, typename U = typename std::remove_reference<decltype(*std::declval<Cont>().data())>::type
|
|
||||||
, typename = typename std::enable_if<aux::compatible_type<U, T>::value>::type>
|
|
||||||
typed_span(Cont& c) : span<T>(c.data(), c.size())// NOLINT
|
|
||||||
{}
|
|
||||||
|
|
||||||
auto operator[](IndexType idx) const ->
|
|
||||||
#if TORRENT_AUTO_RETURN_TYPES
|
|
||||||
decltype(auto)
|
|
||||||
#else
|
|
||||||
decltype(this->base::operator[](underlying_index()))
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
TORRENT_ASSERT(idx >= IndexType(0));
|
|
||||||
return this->base::operator[](index_type(static_cast<underlying_index>(idx)));
|
|
||||||
}
|
|
||||||
|
|
||||||
IndexType end_index() const
|
|
||||||
{
|
|
||||||
TORRENT_ASSERT(this->size() <= difference_type((std::numeric_limits<underlying_index>::max)()));
|
|
||||||
return IndexType(static_cast<underlying_index>(this->size()));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename U = underlying_index, typename Cond
|
|
||||||
= typename std::enable_if<std::is_signed<U>::value>::type>
|
|
||||||
typed_span first(underlying_index n) const
|
|
||||||
{
|
|
||||||
TORRENT_ASSERT(n >= 0);
|
|
||||||
auto const s = this->base::first(difference_type(n));
|
|
||||||
return {s.data(), s.size()};
|
|
||||||
}
|
|
||||||
|
|
||||||
typed_span first(difference_type n) const
|
|
||||||
{
|
|
||||||
TORRENT_ASSERT(n <= difference_type((std::numeric_limits<underlying_index>::max)()));
|
|
||||||
auto const s = this->base::first(n);
|
|
||||||
return {s.data(), s.size()};
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename U = underlying_index, typename Cond
|
|
||||||
= typename std::enable_if<std::is_signed<U>::value>::type>
|
|
||||||
typed_span last(underlying_index n) const
|
|
||||||
{
|
|
||||||
TORRENT_ASSERT(n >= 0);
|
|
||||||
auto const s = this->base::last(difference_type(n));
|
|
||||||
return {s.data(), s.size()};
|
|
||||||
}
|
|
||||||
|
|
||||||
typed_span last(difference_type n) const
|
|
||||||
{
|
|
||||||
TORRENT_ASSERT(n <= difference_type((std::numeric_limits<underlying_index>::max)()));
|
|
||||||
auto const s = this->base::last(n);
|
|
||||||
return {s.data(), s.size()};
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename U = underlying_index, typename Cond
|
|
||||||
= typename std::enable_if<std::is_signed<U>::value>::type>
|
|
||||||
typed_span subspan(underlying_index offset) const
|
|
||||||
{
|
|
||||||
TORRENT_ASSERT(offset >= 0);
|
|
||||||
auto const s = this->base::subspan(index_type(offset));
|
|
||||||
return {s.data(), s.size()};
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename U = underlying_index, typename Cond
|
|
||||||
= typename std::enable_if<std::is_signed<U>::value>::type>
|
|
||||||
typed_span subspan(underlying_index offset, underlying_index count) const
|
|
||||||
{
|
|
||||||
TORRENT_ASSERT(offset >= 0);
|
|
||||||
TORRENT_ASSERT(count >= 0);
|
|
||||||
auto const s = this->base::subspan(index_type(offset), difference_type(count));
|
|
||||||
return {s.data(), s.size()};
|
|
||||||
}
|
|
||||||
|
|
||||||
typed_span subspan(index_type const offset) const
|
|
||||||
{
|
|
||||||
TORRENT_ASSERT(offset <= index_type((std::numeric_limits<underlying_index>::max)()));
|
|
||||||
auto const s = this->base::subspan(offset);
|
|
||||||
return {s.data(), s.size()};
|
|
||||||
}
|
|
||||||
|
|
||||||
typed_span subspan(index_type const offset, difference_type const count) const
|
|
||||||
{
|
|
||||||
TORRENT_ASSERT(offset <= index_type((std::numeric_limits<underlying_index>::max)()));
|
|
||||||
TORRENT_ASSERT(count <= difference_type((std::numeric_limits<underlying_index>::max)()));
|
|
||||||
auto const s = this->base::subspan(offset, count);
|
|
||||||
return {s.data(), s.size()};
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
}}
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -51,7 +51,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "libtorrent/piece_block.hpp"
|
#include "libtorrent/piece_block.hpp"
|
||||||
#include "libtorrent/aux_/vector.hpp"
|
#include "libtorrent/aux_/vector.hpp"
|
||||||
#include "libtorrent/aux_/array.hpp"
|
#include "libtorrent/aux_/array.hpp"
|
||||||
#include "libtorrent/aux_/typed_span.hpp"
|
#include "libtorrent/span.hpp"
|
||||||
#include "libtorrent/alert_types.hpp" // for picker_flags_t
|
#include "libtorrent/alert_types.hpp" // for picker_flags_t
|
||||||
#include "libtorrent/download_priority.hpp"
|
#include "libtorrent/download_priority.hpp"
|
||||||
#include "libtorrent/flags.hpp"
|
#include "libtorrent/flags.hpp"
|
||||||
|
@ -465,13 +465,13 @@ namespace libtorrent {
|
||||||
|
|
||||||
// return the array of block_info objects for a given downloading_piece.
|
// return the array of block_info objects for a given downloading_piece.
|
||||||
// this array has m_blocks_per_piece elements in it
|
// this array has m_blocks_per_piece elements in it
|
||||||
aux::typed_span<block_info const> blocks_for_piece(downloading_piece const& dp) const;
|
span<block_info const> blocks_for_piece(downloading_piece const& dp) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
int num_pad_blocks() const { return m_num_pad_blocks; }
|
int num_pad_blocks() const { return m_num_pad_blocks; }
|
||||||
|
|
||||||
aux::typed_span<block_info> mutable_blocks_for_piece(downloading_piece const& dp);
|
span<block_info> mutable_blocks_for_piece(downloading_piece const& dp);
|
||||||
|
|
||||||
std::tuple<bool, bool, int, int> requested_from(
|
std::tuple<bool, bool, int, int> requested_from(
|
||||||
piece_picker::downloading_piece const& p
|
piece_picker::downloading_piece const& p
|
||||||
|
|
|
@ -47,7 +47,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "libtorrent/assert.hpp"
|
#include "libtorrent/assert.hpp"
|
||||||
#include "libtorrent/aux_/byteswap.hpp"
|
#include "libtorrent/aux_/byteswap.hpp"
|
||||||
#include "libtorrent/aux_/ffs.hpp"
|
#include "libtorrent/aux_/ffs.hpp"
|
||||||
#include "libtorrent/aux_/typed_span.hpp"
|
#include "libtorrent/span.hpp"
|
||||||
|
|
||||||
#if TORRENT_USE_IOSTREAM
|
#if TORRENT_USE_IOSTREAM
|
||||||
#include <iosfwd>
|
#include <iosfwd>
|
||||||
|
@ -58,8 +58,8 @@ namespace libtorrent {
|
||||||
// TODO: find a better place for these functions
|
// TODO: find a better place for these functions
|
||||||
namespace aux {
|
namespace aux {
|
||||||
|
|
||||||
TORRENT_EXTRA_EXPORT void bits_shift_left(typed_span<std::uint32_t> number, int n);
|
TORRENT_EXTRA_EXPORT void bits_shift_left(span<std::uint32_t> number, int n);
|
||||||
TORRENT_EXTRA_EXPORT void bits_shift_right(typed_span<std::uint32_t> number, int n);
|
TORRENT_EXTRA_EXPORT void bits_shift_right(span<std::uint32_t> number, int n);
|
||||||
}
|
}
|
||||||
|
|
||||||
// This type holds an N digest or any other kind of N bits
|
// This type holds an N digest or any other kind of N bits
|
||||||
|
|
|
@ -360,7 +360,7 @@ namespace libtorrent {
|
||||||
*zero_prio = int(m_downloads[piece_pos::piece_zero_prio].size());
|
*zero_prio = int(m_downloads[piece_pos::piece_zero_prio].size());
|
||||||
}
|
}
|
||||||
|
|
||||||
aux::typed_span<piece_picker::block_info> piece_picker::mutable_blocks_for_piece(
|
span<piece_picker::block_info> piece_picker::mutable_blocks_for_piece(
|
||||||
downloading_piece const& dp)
|
downloading_piece const& dp)
|
||||||
{
|
{
|
||||||
int idx = int(dp.info_idx) * m_blocks_per_piece;
|
int idx = int(dp.info_idx) * m_blocks_per_piece;
|
||||||
|
@ -368,7 +368,7 @@ namespace libtorrent {
|
||||||
return { &m_block_info[idx], blocks_in_piece(dp.index) };
|
return { &m_block_info[idx], blocks_in_piece(dp.index) };
|
||||||
}
|
}
|
||||||
|
|
||||||
aux::typed_span<piece_picker::block_info const> piece_picker::blocks_for_piece(
|
span<piece_picker::block_info const> piece_picker::blocks_for_piece(
|
||||||
downloading_piece const& dp) const
|
downloading_piece const& dp) const
|
||||||
{
|
{
|
||||||
return const_cast<piece_picker*>(this)->mutable_blocks_for_piece(dp);
|
return const_cast<piece_picker*>(this)->mutable_blocks_for_piece(dp);
|
||||||
|
|
|
@ -33,7 +33,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "libtorrent/receive_buffer.hpp"
|
#include "libtorrent/receive_buffer.hpp"
|
||||||
#include "libtorrent/invariant_check.hpp"
|
#include "libtorrent/invariant_check.hpp"
|
||||||
#include "libtorrent/aux_/numeric_cast.hpp"
|
#include "libtorrent/aux_/numeric_cast.hpp"
|
||||||
#include "libtorrent/aux_/typed_span.hpp"
|
#include "libtorrent/span.hpp"
|
||||||
|
|
||||||
namespace libtorrent {
|
namespace libtorrent {
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ span<char> receive_buffer::reserve(int const size)
|
||||||
m_watermark = {};
|
m_watermark = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
return aux::typed_span<char>(m_recv_buffer).subspan(m_recv_end, size);
|
return span<char>(m_recv_buffer).subspan(m_recv_end, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void receive_buffer::grow(int const limit)
|
void receive_buffer::grow(int const limit)
|
||||||
|
@ -145,14 +145,14 @@ span<char const> receive_buffer::get() const
|
||||||
}
|
}
|
||||||
|
|
||||||
TORRENT_ASSERT(m_recv_start + m_recv_pos <= int(m_recv_buffer.size()));
|
TORRENT_ASSERT(m_recv_start + m_recv_pos <= int(m_recv_buffer.size()));
|
||||||
return aux::typed_span<char const>(m_recv_buffer).subspan(m_recv_start, m_recv_pos);
|
return span<char const>(m_recv_buffer).subspan(m_recv_start, m_recv_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined TORRENT_DISABLE_ENCRYPTION
|
#if !defined TORRENT_DISABLE_ENCRYPTION
|
||||||
span<char> receive_buffer::mutable_buffer()
|
span<char> receive_buffer::mutable_buffer()
|
||||||
{
|
{
|
||||||
INVARIANT_CHECK;
|
INVARIANT_CHECK;
|
||||||
return aux::typed_span<char>(m_recv_buffer).subspan(m_recv_start, m_recv_pos);
|
return span<char>(m_recv_buffer).subspan(m_recv_start, m_recv_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
span<char> receive_buffer::mutable_buffer(int const bytes)
|
span<char> receive_buffer::mutable_buffer(int const bytes)
|
||||||
|
@ -161,7 +161,7 @@ span<char> receive_buffer::mutable_buffer(int const bytes)
|
||||||
// bytes is the number of bytes we just received, and m_recv_pos has
|
// bytes is the number of bytes we just received, and m_recv_pos has
|
||||||
// already been adjusted for these bytes. The receive pos immediately
|
// already been adjusted for these bytes. The receive pos immediately
|
||||||
// before we received these bytes was (m_recv_pos - bytes)
|
// before we received these bytes was (m_recv_pos - bytes)
|
||||||
return aux::typed_span<char>(m_recv_buffer).subspan(m_recv_start + m_recv_pos - bytes, bytes);
|
return span<char>(m_recv_buffer).subspan(m_recv_start + m_recv_pos - bytes, bytes);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -62,11 +62,11 @@ namespace libtorrent {
|
||||||
|
|
||||||
namespace aux {
|
namespace aux {
|
||||||
|
|
||||||
void bits_shift_left(typed_span<std::uint32_t> number, int n)
|
void bits_shift_left(span<std::uint32_t> const number, int n)
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(n >= 0);
|
TORRENT_ASSERT(n >= 0);
|
||||||
int const num_words = n / 32;
|
int const num_words = n / 32;
|
||||||
int const number_size = number.end_index();
|
int const number_size = int(number.size());
|
||||||
if (num_words >= number_size)
|
if (num_words >= number_size)
|
||||||
{
|
{
|
||||||
std::memset(number.data(), 0, std::size_t(number.size() * 4));
|
std::memset(number.data(), 0, std::size_t(number.size() * 4));
|
||||||
|
@ -100,11 +100,11 @@ namespace aux {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void bits_shift_right(typed_span<std::uint32_t> number, int n)
|
void bits_shift_right(span<std::uint32_t> const number, int n)
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(n >= 0);
|
TORRENT_ASSERT(n >= 0);
|
||||||
int const num_words = n / 32;
|
int const num_words = n / 32;
|
||||||
int const number_size = number.end_index();
|
int const number_size = int(number.size());
|
||||||
if (num_words >= number_size)
|
if (num_words >= number_size)
|
||||||
{
|
{
|
||||||
std::memset(number.data(), 0, std::size_t(number.size() * 4));
|
std::memset(number.data(), 0, std::size_t(number.size() * 4));
|
||||||
|
|
|
@ -63,7 +63,7 @@ namespace libtorrent { namespace aux {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
typed_span<iovec_t> advance_bufs(typed_span<iovec_t> bufs, int const bytes)
|
span<iovec_t> advance_bufs(span<iovec_t> bufs, int const bytes)
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(bytes >= 0);
|
TORRENT_ASSERT(bytes >= 0);
|
||||||
std::ptrdiff_t size = 0;
|
std::ptrdiff_t size = 0;
|
||||||
|
|
Loading…
Reference in New Issue