forked from premiere/premiere-libtorrent
added add_torrent_params.cpp and moved is_nothrow asserts to cpp files (#2059)
This commit is contained in:
parent
905690a1a6
commit
e38887cb3c
|
@ -123,6 +123,7 @@ set(sources
|
||||||
xml_parse
|
xml_parse
|
||||||
version
|
version
|
||||||
ffs
|
ffs
|
||||||
|
add_torrent_params
|
||||||
|
|
||||||
# -- extensions --
|
# -- extensions --
|
||||||
ut_pex
|
ut_pex
|
||||||
|
|
1
Jamfile
1
Jamfile
|
@ -666,6 +666,7 @@ SOURCES =
|
||||||
proxy_settings
|
proxy_settings
|
||||||
file_progress
|
file_progress
|
||||||
ffs
|
ffs
|
||||||
|
add_torrent_params
|
||||||
|
|
||||||
# -- extensions --
|
# -- extensions --
|
||||||
ut_pex
|
ut_pex
|
||||||
|
|
|
@ -85,12 +85,12 @@ namespace libtorrent {
|
||||||
// The constructor can be used to initialize the storage constructor,
|
// The constructor can be used to initialize the storage constructor,
|
||||||
// which determines the storage mechanism for the downloaded or seeding
|
// which determines the storage mechanism for the downloaded or seeding
|
||||||
// data for the torrent. For more information, see the ``storage`` field.
|
// data for the torrent. For more information, see the ``storage`` field.
|
||||||
explicit add_torrent_params(storage_constructor_type sc = default_storage_constructor)
|
explicit add_torrent_params(storage_constructor_type sc = default_storage_constructor);
|
||||||
: storage(storage_constructor_type(sc)) {}
|
add_torrent_params(add_torrent_params&&) noexcept;
|
||||||
add_torrent_params(add_torrent_params&&) noexcept = default;
|
// TODO: GCC did not make std::string nothrow move-assignable
|
||||||
add_torrent_params& operator=(add_torrent_params&&) noexcept = default;
|
add_torrent_params& operator=(add_torrent_params&&);
|
||||||
add_torrent_params(add_torrent_params const&) = default;
|
add_torrent_params(add_torrent_params const&);
|
||||||
add_torrent_params& operator=(add_torrent_params const&) = default;
|
add_torrent_params& operator=(add_torrent_params const&);
|
||||||
|
|
||||||
// values for the ``flags`` field
|
// values for the ``flags`` field
|
||||||
enum flags_t : std::uint64_t
|
enum flags_t : std::uint64_t
|
||||||
|
@ -524,19 +524,6 @@ namespace libtorrent {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static_assert(std::is_nothrow_move_constructible<add_torrent_params>::value
|
|
||||||
, "should be nothrow move constructible");
|
|
||||||
|
|
||||||
// TODO: pre C++17, GCC and msvc does not make std::string nothrow move
|
|
||||||
// assignable, which means no type containing a string will be nothrow move
|
|
||||||
// assignable by default either
|
|
||||||
// static_assert(std::is_nothrow_move_assignable<add_torrent_params>::value
|
|
||||||
// , "should be nothrow move assignable");
|
|
||||||
|
|
||||||
// TODO: it would be nice if this was nothrow default constructible
|
|
||||||
// static_assert(std::is_nothrow_default_constructible<add_torrent_params>::value
|
|
||||||
// , "should be nothrow default constructible");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -256,13 +256,6 @@ namespace libtorrent {
|
||||||
aux::unique_ptr<std::uint32_t[]> m_buf;
|
aux::unique_ptr<std::uint32_t[]> m_buf;
|
||||||
};
|
};
|
||||||
|
|
||||||
static_assert(std::is_nothrow_move_constructible<bitfield>::value
|
|
||||||
, "should be nothrow move constructible");
|
|
||||||
static_assert(std::is_nothrow_move_assignable<bitfield>::value
|
|
||||||
, "should be nothrow move assignable");
|
|
||||||
static_assert(std::is_nothrow_default_constructible<bitfield>::value
|
|
||||||
, "should be nothrow default constructible");
|
|
||||||
|
|
||||||
template <typename IndexType>
|
template <typename IndexType>
|
||||||
struct typed_bitfield : bitfield
|
struct typed_bitfield : bitfield
|
||||||
{
|
{
|
||||||
|
@ -301,14 +294,6 @@ namespace libtorrent {
|
||||||
|
|
||||||
IndexType end_index() const { return IndexType(this->size()); }
|
IndexType end_index() const { return IndexType(this->size()); }
|
||||||
};
|
};
|
||||||
|
|
||||||
static_assert(std::is_nothrow_move_constructible<typed_bitfield<int>>::value
|
|
||||||
, "should be nothrow move constructible");
|
|
||||||
static_assert(std::is_nothrow_move_assignable<typed_bitfield<int>>::value
|
|
||||||
, "should be nothrow move assignable");
|
|
||||||
static_assert(std::is_nothrow_default_constructible<typed_bitfield<int>>::value
|
|
||||||
, "should be nothrow default constructible");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // TORRENT_BITFIELD_HPP_INCLUDED
|
#endif // TORRENT_BITFIELD_HPP_INCLUDED
|
||||||
|
|
|
@ -258,4 +258,3 @@ namespace libtorrent {
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -276,13 +276,6 @@ namespace aux {
|
||||||
// peer IDs, node IDs etc.
|
// peer IDs, node IDs etc.
|
||||||
using sha1_hash = digest32<160>;
|
using sha1_hash = digest32<160>;
|
||||||
|
|
||||||
static_assert(std::is_nothrow_move_constructible<sha1_hash>::value
|
|
||||||
, "should be nothrow move constructible");
|
|
||||||
static_assert(std::is_nothrow_move_assignable<sha1_hash>::value
|
|
||||||
, "should be nothrow move assignable");
|
|
||||||
static_assert(std::is_nothrow_default_constructible<sha1_hash>::value
|
|
||||||
, "should be nothrow default constructible");
|
|
||||||
|
|
||||||
#if TORRENT_USE_IOSTREAM
|
#if TORRENT_USE_IOSTREAM
|
||||||
|
|
||||||
// print a sha1_hash object to an ostream as 40 hexadecimal digits
|
// print a sha1_hash object to an ostream as 40 hexadecimal digits
|
||||||
|
|
|
@ -1312,13 +1312,6 @@ namespace libtorrent { namespace aux {
|
||||||
|
|
||||||
std::weak_ptr<torrent> m_torrent;
|
std::weak_ptr<torrent> m_torrent;
|
||||||
};
|
};
|
||||||
|
|
||||||
static_assert(std::is_nothrow_move_constructible<torrent_handle>::value
|
|
||||||
, "should be nothrow move constructible");
|
|
||||||
static_assert(std::is_nothrow_move_assignable<torrent_handle>::value
|
|
||||||
, "should be nothrow move assignable");
|
|
||||||
static_assert(std::is_nothrow_default_constructible<torrent_handle>::value
|
|
||||||
, "should be nothrow default constructible");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace std
|
namespace std
|
||||||
|
|
|
@ -560,13 +560,6 @@ namespace libtorrent {
|
||||||
seconds finished_duration;
|
seconds finished_duration;
|
||||||
seconds seeding_duration;
|
seconds seeding_duration;
|
||||||
};
|
};
|
||||||
|
|
||||||
static_assert(std::is_nothrow_move_constructible<torrent_status>::value
|
|
||||||
, "should be nothrow move constructible");
|
|
||||||
// static_assert(std::is_nothrow_move_assignable<torrent_status>::value
|
|
||||||
// , "should be nothrow move assignable");
|
|
||||||
static_assert(std::is_nothrow_default_constructible<torrent_status>::value
|
|
||||||
, "should be nothrow default constructible");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace std
|
namespace std
|
||||||
|
|
|
@ -160,6 +160,7 @@ libtorrent_rasterbar_la_SOURCES = \
|
||||||
version.cpp \
|
version.cpp \
|
||||||
file_progress.cpp \
|
file_progress.cpp \
|
||||||
ffs.cpp \
|
ffs.cpp \
|
||||||
|
add_torrent_params.cpp \
|
||||||
\
|
\
|
||||||
$(KADEMLIA_SOURCES) \
|
$(KADEMLIA_SOURCES) \
|
||||||
\
|
\
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "libtorrent/add_torrent_params.hpp"
|
||||||
|
|
||||||
|
namespace libtorrent {
|
||||||
|
|
||||||
|
add_torrent_params::add_torrent_params(storage_constructor_type sc)
|
||||||
|
: storage(storage_constructor_type(sc)) {}
|
||||||
|
add_torrent_params::add_torrent_params(add_torrent_params&&) noexcept = default;
|
||||||
|
add_torrent_params& add_torrent_params::operator=(add_torrent_params&&) = default;
|
||||||
|
add_torrent_params::add_torrent_params(add_torrent_params const&) = default;
|
||||||
|
add_torrent_params& add_torrent_params::operator=(add_torrent_params const&) = default;
|
||||||
|
|
||||||
|
static_assert(std::is_nothrow_move_constructible<add_torrent_params>::value
|
||||||
|
, "should be nothrow move constructible");
|
||||||
|
|
||||||
|
// TODO: pre C++17, GCC and msvc does not make std::string nothrow move
|
||||||
|
// assignable, which means no type containing a string will be nothrow move
|
||||||
|
// assignable by default either
|
||||||
|
// static_assert(std::is_nothrow_move_assignable<add_torrent_params>::value
|
||||||
|
// , "should be nothrow move assignable");
|
||||||
|
|
||||||
|
// TODO: it would be nice if this was nothrow default constructible
|
||||||
|
// static_assert(std::is_nothrow_default_constructible<add_torrent_params>::value
|
||||||
|
// , "should be nothrow default constructible");
|
||||||
|
}
|
|
@ -213,4 +213,18 @@ namespace libtorrent {
|
||||||
? (num - 1) * 32 + ext
|
? (num - 1) * 32 + ext
|
||||||
: size - (aux::count_trailing_ones({&m_buf[1], std::size_t(num - 1)}) + ext);
|
: size - (aux::count_trailing_ones({&m_buf[1], std::size_t(num - 1)}) + ext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static_assert(std::is_nothrow_move_constructible<bitfield>::value
|
||||||
|
, "should be nothrow move constructible");
|
||||||
|
static_assert(std::is_nothrow_move_assignable<bitfield>::value
|
||||||
|
, "should be nothrow move assignable");
|
||||||
|
static_assert(std::is_nothrow_default_constructible<bitfield>::value
|
||||||
|
, "should be nothrow default constructible");
|
||||||
|
|
||||||
|
static_assert(std::is_nothrow_move_constructible<typed_bitfield<int>>::value
|
||||||
|
, "should be nothrow move constructible");
|
||||||
|
static_assert(std::is_nothrow_move_assignable<typed_bitfield<int>>::value
|
||||||
|
, "should be nothrow move assignable");
|
||||||
|
static_assert(std::is_nothrow_default_constructible<typed_bitfield<int>>::value
|
||||||
|
, "should be nothrow default constructible");
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,4 +137,11 @@ namespace aux {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static_assert(std::is_nothrow_move_constructible<sha1_hash>::value
|
||||||
|
, "should be nothrow move constructible");
|
||||||
|
static_assert(std::is_nothrow_move_assignable<sha1_hash>::value
|
||||||
|
, "should be nothrow move assignable");
|
||||||
|
static_assert(std::is_nothrow_default_constructible<sha1_hash>::value
|
||||||
|
, "should be nothrow default constructible");
|
||||||
}
|
}
|
||||||
|
|
|
@ -750,4 +750,11 @@ namespace libtorrent {
|
||||||
// for expired weak_ptrs. So, we're left with a hack
|
// for expired weak_ptrs. So, we're left with a hack
|
||||||
return std::size_t(*reinterpret_cast<void* const*>(&th.m_torrent));
|
return std::size_t(*reinterpret_cast<void* const*>(&th.m_torrent));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static_assert(std::is_nothrow_move_constructible<torrent_handle>::value
|
||||||
|
, "should be nothrow move constructible");
|
||||||
|
static_assert(std::is_nothrow_move_assignable<torrent_handle>::value
|
||||||
|
, "should be nothrow move assignable");
|
||||||
|
static_assert(std::is_nothrow_default_constructible<torrent_handle>::value
|
||||||
|
, "should be nothrow default constructible");
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,10 +39,18 @@ namespace libtorrent {
|
||||||
file_index_t constexpr torrent_status::error_file_ssl_ctx;
|
file_index_t constexpr torrent_status::error_file_ssl_ctx;
|
||||||
file_index_t constexpr torrent_status::error_file_metadata;
|
file_index_t constexpr torrent_status::error_file_metadata;
|
||||||
file_index_t constexpr torrent_status::error_file_exception;
|
file_index_t constexpr torrent_status::error_file_exception;
|
||||||
|
|
||||||
torrent_status::torrent_status() noexcept {}
|
torrent_status::torrent_status() noexcept {}
|
||||||
torrent_status::~torrent_status() = default;
|
torrent_status::~torrent_status() = default;
|
||||||
torrent_status::torrent_status(torrent_status const&) = default;
|
torrent_status::torrent_status(torrent_status const&) = default;
|
||||||
torrent_status& torrent_status::operator=(torrent_status const&) = default;
|
torrent_status& torrent_status::operator=(torrent_status const&) = default;
|
||||||
torrent_status::torrent_status(torrent_status&&) noexcept = default;
|
torrent_status::torrent_status(torrent_status&&) noexcept = default;
|
||||||
torrent_status& torrent_status::operator=(torrent_status&&) = default;
|
torrent_status& torrent_status::operator=(torrent_status&&) = default;
|
||||||
|
|
||||||
|
static_assert(std::is_nothrow_move_constructible<torrent_status>::value
|
||||||
|
, "should be nothrow move constructible");
|
||||||
|
// static_assert(std::is_nothrow_move_assignable<torrent_status>::value
|
||||||
|
// , "should be nothrow move assignable");
|
||||||
|
static_assert(std::is_nothrow_default_constructible<torrent_status>::value
|
||||||
|
, "should be nothrow default constructible");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue