diff --git a/src/aur/client.cc b/src/aur/client.cc index b1ddf99..61ab5ed 100644 --- a/src/aur/client.cc +++ b/src/aur/client.cc @@ -13,7 +13,9 @@ #include #include "absl/container/flat_hash_set.h" +#include "absl/functional/overload.h" #include "absl/status/status.h" +#include "absl/strings/str_cat.h" #include "absl/strings/strip.h" namespace fs = std::filesystem; @@ -299,20 +301,13 @@ ClientImpl::~ClientImpl() { } void ClientImpl::Cancel(const ActiveRequests::value_type& request) { - struct Visitor { - constexpr explicit Visitor(ClientImpl* aur) : aur(aur) {} - - void operator()(CURL* curl) { - aur->FinishRequest(curl, CURLE_ABORTED_BY_CALLBACK, - /*dispatch_callback=*/false); - } - - void operator()(sd_event_source* source) { aur->FinishRequest(source); } - - ClientImpl* aur; - }; - - std::visit(Visitor(this), request); + std::visit(absl::Overload{ + [this](CURL* curl) { + FinishRequest(curl, CURLE_ABORTED_BY_CALLBACK, + /*dispatch_callback=*/false); + }, + [this](sd_event_source* source) { FinishRequest(source); }}, + request); } int ClientImpl::OnCancel(sd_event_source*, void* userdata) { diff --git a/src/aur/package.cc b/src/aur/package.cc index 9255a9d..9f783d1 100644 --- a/src/aur/package.cc +++ b/src/aur/package.cc @@ -1,6 +1,7 @@ // SPDX-License-Identifier: MIT #include "aur/package.hh" +#include "absl/base/no_destructor.h" #include "aur/json_internal.hh" namespace aur { @@ -47,7 +48,7 @@ void from_json(const nlohmann::json& j, absl::Time& t) { void from_json(const nlohmann::json& j, Package& p) { // clang-format off - static const auto& callbacks = *new CallbackMap{ + static const absl::NoDestructor> kCallbacks({ { "CheckDepends", MakeValueCallback(&Package::checkdepends) }, { "CoMaintainers", MakeValueCallback(&Package::comaintainers) }, { "Conflicts", MakeValueCallback(&Package::conflicts) }, @@ -73,10 +74,10 @@ void from_json(const nlohmann::json& j, Package& p) { { "URL", MakeValueCallback(&Package::upstream_url) }, { "URLPath", MakeValueCallback(&Package::aur_urlpath) }, { "Version", MakeValueCallback(&Package::version) }, - }; + }); // clang-format on - DeserializeJsonObject(j, callbacks, p); + DeserializeJsonObject(j, *kCallbacks, p); } } // namespace aur diff --git a/src/aur/response.cc b/src/aur/response.cc index 6557ec6..6cc2f4d 100644 --- a/src/aur/response.cc +++ b/src/aur/response.cc @@ -1,19 +1,20 @@ // SPDX-License-Identifier: MIT #include "aur/response.hh" +#include "absl/base/no_destructor.h" #include "aur/json_internal.hh" namespace aur::internal { void from_json(const nlohmann::json& j, RawRpcResponse& r) { // clang-format off - static const auto& callbacks = *new CallbackMap{ + static const absl::NoDestructor> kCallbacks({ { "error", MakeValueCallback(&RawRpcResponse::error) }, { "results", MakeValueCallback(&RawRpcResponse::results) }, - }; + }); // clang-format on - DeserializeJsonObject(j, callbacks, r); + DeserializeJsonObject(j, *kCallbacks, r); } RawRpcResponse::RawRpcResponse(const std::string& json_bytes) { diff --git a/subprojects/abseil-cpp.wrap b/subprojects/abseil-cpp.wrap index 4e62885..9a8e072 100644 --- a/subprojects/abseil-cpp.wrap +++ b/subprojects/abseil-cpp.wrap @@ -1,13 +1,13 @@ [wrap-file] -directory = abseil-cpp-20230802.1 -source_url = https://github.com/abseil/abseil-cpp/archive/20230802.1.tar.gz -source_filename = abseil-cpp-20230802.1.tar.gz -source_hash = 987ce98f02eefbaf930d6e38ab16aa05737234d7afbab2d5c4ea7adbe50c28ed -patch_filename = abseil-cpp_20230802.1-2_patch.zip -patch_url = https://wrapdb.mesonbuild.com/v2/abseil-cpp_20230802.1-2/get_patch -patch_hash = f6ceb55ca4b0995d826cbdefc0a37e0f8b6202d3e7ecb3436298f54d3a23942b -source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/abseil-cpp_20230802.1-2/abseil-cpp-20230802.1.tar.gz -wrapdb_version = 20230802.1-2 +directory = abseil-cpp-20240722.0 +source_url = https://github.com/abseil/abseil-cpp/releases/download/20240722.0/abseil-cpp-20240722.0.tar.gz +source_filename = abseil-cpp-20240722.0.tar.gz +source_hash = f50e5ac311a81382da7fa75b97310e4b9006474f9560ac46f54a9967f07d4ae3 +patch_filename = abseil-cpp_20240722.0-1_patch.zip +patch_url = https://wrapdb.mesonbuild.com/v2/abseil-cpp_20240722.0-1/get_patch +patch_hash = 692bbbc39cacaba4dc4b0c8b2fbbe32736c9cde6377acfa0d52088797af14ded +source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/abseil-cpp_20240722.0-1/abseil-cpp-20240722.0.tar.gz +wrapdb_version = 20240722.0-1 [provide] absl_base = absl_base_dep