refactor: use std::vector<tr_quark> for torrent labels (#2942)

This commit is contained in:
Charles Kerr
2022-04-18 00:53:48 -05:00
committed by GitHub
parent 3a8cac3914
commit 18da7eb125
5 changed files with 33 additions and 30 deletions

View File

@@ -363,7 +363,7 @@ static void addLabels(tr_torrent const* tor, tr_variant* list)
tr_variantInitList(list, std::size(tor->labels));
for (auto const& label : tor->labels)
{
tr_variantListAddStr(list, label);
tr_variantListAddQuark(list, label);
}
}
@@ -941,10 +941,12 @@ static char const* torrentGet(tr_session* session, tr_variant* args_in, tr_varia
****
***/
static std::pair<tr_labels_t, char const* /*errmsg*/> makeLabels(tr_variant* list)
static std::pair<std::vector<tr_quark>, char const* /*errmsg*/> makeLabels(tr_variant* list)
{
auto labels = tr_labels_t{};
auto labels = std::vector<tr_quark>{};
size_t const n = tr_variantListSize(list);
labels.reserve(n);
for (size_t i = 0; i < n; ++i)
{
auto label = std::string_view{};
@@ -964,7 +966,7 @@ static std::pair<tr_labels_t, char const* /*errmsg*/> makeLabels(tr_variant* lis
return { {}, "labels cannot contain comma (,) character" };
}
labels.emplace(label);
labels.emplace_back(tr_quark_new(label));
}
return { labels, nullptr };
@@ -979,7 +981,7 @@ static char const* setLabels(tr_torrent* tor, tr_variant* list)
return errmsg;
}
tr_torrentSetLabels(tor, std::move(labels));
tor->setLabels(std::data(labels), std::size(labels));
return nullptr;
}
@@ -1666,7 +1668,7 @@ static char const* torrentAdd(tr_session* session, tr_variant* args_in, tr_varia
return errmsg;
}
tr_ctorSetLabels(ctor, std::move(labels));
tr_ctorSetLabels(ctor, std::data(labels), std::size(labels));
}
tr_logAddTrace(fmt::format("torrentAdd: filename is '{}'", filename));