Author: omtcyfz Date: Thu Sep 6 06:15:03 2018 New Revision: 341544 URL: http://llvm.org/viewvc/llvm-project?rev=341544&view=rev Log: [clangd] NFC: Use TopN instead of std::priority_queue
Quality.cpp defines a structure for convenient storage of Top N items, it should be used instead of the `std::priority_queue` with slightly obscure semantics. This patch does not affect functionality. Reviewed By: sammccall Differential Revision: https://reviews.llvm.org/D51676 Modified: clang-tools-extra/trunk/clangd/index/MemIndex.cpp Modified: clang-tools-extra/trunk/clangd/index/MemIndex.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/MemIndex.cpp?rev=341544&r1=341543&r2=341544&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/index/MemIndex.cpp (original) +++ clang-tools-extra/trunk/clangd/index/MemIndex.cpp Thu Sep 6 06:15:03 2018 @@ -10,7 +10,7 @@ #include "MemIndex.h" #include "../FuzzyMatch.h" #include "../Logger.h" -#include <queue> +#include "../Quality.h" namespace clang { namespace clangd { @@ -26,7 +26,7 @@ bool MemIndex::fuzzyFind( assert(!StringRef(Req.Query).contains("::") && "There must be no :: in query."); - std::priority_queue<std::pair<float, const Symbol *>> Top; + TopN<std::pair<float, const Symbol *>> Top(Req.MaxCandidateCount); FuzzyMatcher Filter(Req.Query); bool More = false; for (const auto Pair : Index) { @@ -38,16 +38,12 @@ bool MemIndex::fuzzyFind( if (Req.RestrictForCodeCompletion && !Sym->IsIndexedForCodeCompletion) continue; - if (auto Score = Filter.match(Sym->Name)) { - Top.emplace(-*Score * quality(*Sym), Sym); - if (Top.size() > Req.MaxCandidateCount) { - More = true; - Top.pop(); - } - } + if (auto Score = Filter.match(Sym->Name)) + if (Top.push({*Score * quality(*Sym), Sym})) + More = true; // An element with smallest score was discarded. } - for (; !Top.empty(); Top.pop()) - Callback(*Top.top().second); + for (const auto &Item : std::move(Top).items()) + Callback(*Item.second); return More; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits