trivial code refactor in entry and string_util related code

This commit is contained in:
Alden Torres 2017-11-28 19:22:50 -05:00 committed by Arvid Norberg
parent e8b42e95c4
commit 7fe75dd1eb
3 changed files with 30 additions and 35 deletions

View File

@ -137,14 +137,14 @@ namespace {
ec = bdecode_errors::expected_digit; ec = bdecode_errors::expected_digit;
return start; return start;
} }
if (val > (std::numeric_limits<std::int64_t>::max)() / 10) if (val > std::numeric_limits<std::int64_t>::max() / 10)
{ {
ec = bdecode_errors::overflow; ec = bdecode_errors::overflow;
return start; return start;
} }
val *= 10; val *= 10;
int digit = *start - '0'; int digit = *start - '0';
if (val > (std::numeric_limits<std::int64_t>::max)() - digit) if (val > std::numeric_limits<std::int64_t>::max() - digit)
{ {
ec = bdecode_errors::overflow; ec = bdecode_errors::overflow;
return start; return start;

View File

@ -31,11 +31,6 @@ POSSIBILITY OF SUCH DAMAGE.
*/ */
#include "libtorrent/config.hpp" #include "libtorrent/config.hpp"
#if TORRENT_USE_IOSTREAM
#include <iostream>
#endif
#ifndef TORRENT_NO_DEPRECATE #ifndef TORRENT_NO_DEPRECATE
#include "libtorrent/lazy_entry.hpp" #include "libtorrent/lazy_entry.hpp"
#endif #endif
@ -97,9 +92,9 @@ namespace {
entry& entry::operator[](string_view key) entry& entry::operator[](string_view key)
{ {
dictionary_type::iterator i = dict().find(key); auto const i = dict().find(key);
if (i != dict().end()) return i->second; if (i != dict().end()) return i->second;
dictionary_type::iterator ret = dict().emplace( auto const ret = dict().emplace(
std::piecewise_construct, std::piecewise_construct,
std::forward_as_tuple(key), std::forward_as_tuple(key),
std::forward_as_tuple()).first; std::forward_as_tuple()).first;
@ -108,21 +103,21 @@ namespace {
const entry& entry::operator[](string_view key) const const entry& entry::operator[](string_view key) const
{ {
dictionary_type::const_iterator i = dict().find(key); auto const i = dict().find(key);
if (i == dict().end()) throw_error(); if (i == dict().end()) throw_error();
return i->second; return i->second;
} }
entry* entry::find_key(string_view key) entry* entry::find_key(string_view key)
{ {
dictionary_type::iterator i = dict().find(key); auto const i = dict().find(key);
if (i == dict().end()) return nullptr; if (i == dict().end()) return nullptr;
return &i->second; return &i->second;
} }
entry const* entry::find_key(string_view key) const entry const* entry::find_key(string_view key) const
{ {
dictionary_type::const_iterator i = dict().find(key); auto const i = dict().find(key);
if (i == dict().end()) return nullptr; if (i == dict().end()) return nullptr;
return &i->second; return &i->second;
} }
@ -371,7 +366,7 @@ namespace {
list_type& l = this->list(); list_type& l = this->list();
for (int i = 0; i < e.list_size(); ++i) for (int i = 0; i < e.list_size(); ++i)
{ {
l.push_back(entry()); l.emplace_back();
l.back() = e.list_at(i); l.back() = e.list_at(i);
} }
break; break;
@ -410,7 +405,7 @@ namespace {
list_type& l = this->list(); list_type& l = this->list();
for (int i = 0; i < e.list_size(); ++i) for (int i = 0; i < e.list_size(); ++i)
{ {
l.push_back(entry()); l.emplace_back();
l.back() = *e.list_at(i); l.back() = *e.list_at(i);
} }
break; break;
@ -656,7 +651,7 @@ namespace {
return ret; return ret;
} }
void entry::to_string_impl(std::string& out, int indent) const void entry::to_string_impl(std::string& out, int const indent) const
{ {
TORRENT_ASSERT(indent >= 0); TORRENT_ASSERT(indent >= 0);
for (int i = 0; i < indent; ++i) out += ' '; for (int i = 0; i < indent; ++i) out += ' ';
@ -669,9 +664,9 @@ namespace {
case string_t: case string_t:
{ {
bool binary_string = false; bool binary_string = false;
for (std::string::const_iterator i = string().begin(); i != string().end(); ++i) for (auto const i : string())
{ {
if (!is_print(*i)) if (!is_print(i))
{ {
binary_string = true; binary_string = true;
break; break;
@ -691,20 +686,20 @@ namespace {
case list_t: case list_t:
{ {
out += "list\n"; out += "list\n";
for (list_type::const_iterator i = list().begin(); i != list().end(); ++i) for (auto const& i : list())
{ {
i->to_string_impl(out, indent + 1); i.to_string_impl(out, indent + 1);
} }
} break; } break;
case dictionary_t: case dictionary_t:
{ {
out += "dictionary\n"; out += "dictionary\n";
for (dictionary_type::const_iterator i = dict().begin(); i != dict().end(); ++i) for (auto const& i : dict())
{ {
bool binary_string = false; bool binary_string = false;
for (std::string::const_iterator k = i->first.begin(); k != i->first.end(); ++k) for (auto const k : i.first)
{ {
if (!is_print(*k)) if (!is_print(k))
{ {
binary_string = true; binary_string = true;
break; break;
@ -712,15 +707,15 @@ namespace {
} }
for (int j = 0; j < indent + 1; ++j) out += ' '; for (int j = 0; j < indent + 1; ++j) out += ' ';
out += '['; out += '[';
if (binary_string) out += aux::to_hex(i->first); if (binary_string) out += aux::to_hex(i.first);
else out += i->first; else out += i.first;
out += ']'; out += ']';
if (i->second.type() != entry::string_t if (i.second.type() != entry::string_t
&& i->second.type() != entry::int_t) && i.second.type() != entry::int_t)
out += '\n'; out += '\n';
else out += ' '; else out += ' ';
i->second.to_string_impl(out, indent + 2); i.second.to_string_impl(out, indent + 2);
} }
} break; } break;
case preformatted_t: case preformatted_t:

View File

@ -154,7 +154,7 @@ namespace libtorrent {
TORRENT_ASSERT(target.size() >= src.size()); TORRENT_ASSERT(target.size() >= src.size());
TORRENT_ASSERT(target.size() < std::size_t(std::numeric_limits<int>::max())); TORRENT_ASSERT(target.size() < std::size_t(std::numeric_limits<int>::max()));
auto it = std::search(target.begin(), target.end(), src.begin(), src.end()); auto const it = std::search(target.begin(), target.end(), src.begin(), src.end());
// no complete sync // no complete sync
if (it == target.end()) return -1; if (it == target.end()) return -1;
@ -329,7 +329,7 @@ namespace libtorrent {
if (colon != std::string::npos && colon > start) if (colon != std::string::npos && colon > start)
{ {
int port = atoi(in.substr(colon + 1, end - colon - 1).c_str()); int port = std::atoi(in.substr(colon + 1, end - colon - 1).c_str());
// skip trailing spaces // skip trailing spaces
std::string::size_type soft_end = colon; std::string::size_type soft_end = colon;
@ -342,7 +342,7 @@ namespace libtorrent {
if (in[start] == '[') ++start; if (in[start] == '[') ++start;
if (soft_end > start && in[soft_end-1] == ']') --soft_end; if (soft_end > start && in[soft_end-1] == ']') --soft_end;
out.push_back(std::make_pair(in.substr(start, soft_end - start), port)); out.emplace_back(in.substr(start, soft_end - start), port);
} }
start = end + 1; start = end + 1;
@ -369,7 +369,7 @@ namespace libtorrent {
// skip trailing spaces // skip trailing spaces
std::string::size_type soft_end = end; std::string::size_type soft_end = end;
while (soft_end > start while (soft_end > start
&& is_space(in[soft_end-1])) && is_space(in[soft_end - 1]))
--soft_end; --soft_end;
out.push_back(in.substr(start, soft_end - start)); out.push_back(in.substr(start, soft_end - start));
@ -420,8 +420,8 @@ namespace libtorrent {
std::size_t string_hash_no_case::operator()(std::string const& s) const std::size_t string_hash_no_case::operator()(std::string const& s) const
{ {
std::size_t ret = 5381; std::size_t ret = 5381;
for (std::string::const_iterator i = s.begin(); i != s.end(); ++i) for (auto const c : s)
ret = (ret * 33) ^ static_cast<std::size_t>(to_lower(*i)); ret = (ret * 33) ^ static_cast<std::size_t>(to_lower(c));
return ret; return ret;
} }
@ -429,8 +429,8 @@ namespace libtorrent {
{ {
if (lhs.size() != rhs.size()) return false; if (lhs.size() != rhs.size()) return false;
std::string::const_iterator s1 = lhs.begin(); auto s1 = lhs.cbegin();
std::string::const_iterator s2 = rhs.begin(); auto s2 = rhs.cbegin();
while (s1 != lhs.end() && s2 != rhs.end()) while (s1 != lhs.end() && s2 != rhs.end())
{ {