diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2025-02-04 18:26:39 +0100 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2025-02-07 14:58:04 +0100 |
commit | 0a8dbe086a23bbb905514007d21e2e04cdaae1e8 (patch) | |
tree | 06136cea09fa30d857cc4f23f15ea372dfe5ef47 /src/buildtool/execution_api/common | |
parent | 3bc0b895258ba8aeb04ee48525036a0a9407c9cb (diff) | |
download | justbuild-0a8dbe086a23bbb905514007d21e2e04cdaae1e8.tar.gz |
IExecutionApi: Use unordered_set in IsAvailable
Diffstat (limited to 'src/buildtool/execution_api/common')
-rw-r--r-- | src/buildtool/execution_api/common/common_api.hpp | 7 | ||||
-rw-r--r-- | src/buildtool/execution_api/common/execution_api.hpp | 5 |
2 files changed, 7 insertions, 5 deletions
diff --git a/src/buildtool/execution_api/common/common_api.hpp b/src/buildtool/execution_api/common/common_api.hpp index 991b9875..d5daa3dd 100644 --- a/src/buildtool/execution_api/common/common_api.hpp +++ b/src/buildtool/execution_api/common/common_api.hpp @@ -21,6 +21,7 @@ #include <iterator> #include <optional> #include <unordered_map> +#include <unordered_set> #include <vector> #include "gsl/gsl" @@ -39,7 +40,7 @@ /// to some given original type. template <typename T> struct MissingArtifactsInfo { - std::vector<ArtifactDigest> digests; + std::unordered_set<ArtifactDigest> digests; std::unordered_map<ArtifactDigest, T> back_map; }; @@ -69,7 +70,7 @@ template <typename TValue, typename TIterator> TIterator const& end, typename std::function<ArtifactDigest(TValue const&)> const& converter) noexcept -> std::optional<MissingArtifactsInfo<TValue>> { - std::vector<ArtifactDigest> digests; + std::unordered_set<ArtifactDigest> digests; digests.reserve(std::distance(begin, end)); MissingArtifactsInfo<TValue> res{}; for (auto it = begin; it != end; ++it) { @@ -77,7 +78,7 @@ template <typename TValue, typename TIterator> auto const inserted = res.back_map.insert({std::invoke(converter, *it), *it}); if (inserted.second) { - digests.emplace_back(inserted.first->first); + digests.emplace(inserted.first->first); } } catch (...) { return std::nullopt; diff --git a/src/buildtool/execution_api/common/execution_api.hpp b/src/buildtool/execution_api/common/execution_api.hpp index 02c78bcc..b868b57d 100644 --- a/src/buildtool/execution_api/common/execution_api.hpp +++ b/src/buildtool/execution_api/common/execution_api.hpp @@ -21,6 +21,7 @@ #include <memory> #include <optional> #include <string> +#include <unordered_set> #include <vector> #include "src/buildtool/common/artifact.hpp" // Artifact::ObjectInfo @@ -129,8 +130,8 @@ class IExecutionApi { ArtifactDigest const& digest) const noexcept -> bool = 0; [[nodiscard]] virtual auto IsAvailable( - std::vector<ArtifactDigest> const& digests) const noexcept - -> std::vector<ArtifactDigest> = 0; + std::unordered_set<ArtifactDigest> const& digests) const noexcept + -> std::unordered_set<ArtifactDigest> = 0; [[nodiscard]] virtual auto SplitBlob(ArtifactDigest const& /*blob_digest*/) const noexcept -> std::optional<std::vector<ArtifactDigest>> { |