10 #include <unordered_map> 25 return left.label == right.label && left.instance == right.instance &&
26 left.process == right.process;
29 class PendingBTLEntry {
36 : fcn_{fcn}, ct_{moduleLabel, instanceName, procName}, pid_{
pid}
72 std::vector<PendingBTLEntry> pendingEntries;
73 std::unordered_map<ProductID, CheapTag, ProductID::Hash> insertedABVs;
74 for (
auto const& pr : descriptions) {
75 auto const pid = pr.first;
76 auto const& pd = pr.second;
77 auto const& prodFCN = pd.friendlyClassName();
78 auto const& procName = pd.processName();
79 result[prodFCN][procName].emplace_back(
pid);
82 auto const& moduleLabel = pd.moduleLabel();
83 auto const& instanceName = pd.productInstanceName();
84 auto const&
className = pd.producedClassName();
100 insertedABVs.emplace(
pid, CheapTag{moduleLabel, instanceName, procName});
104 auto const iend = insertedABVs.cend();
109 pendingEntries.cbegin(),
110 pendingEntries.cend(),
111 [&
result, &insertedABVs, iend](
auto const& pe) {
112 auto& pids = result[pe.fcn()][pe.process()];
114 !std::any_of(pids.cbegin(),
117 auto i = insertedABVs.find(
pid);
118 return i != iend && pe.ct() == i->second;
120 pids.emplace_back(pe.pid());
bool operator==(Provenance const &a, Provenance const &b) noexcept
constexpr auto const & right(const_AssnsIter< L, R, D, Dir > const &a, const_AssnsIter< L, R, D, Dir > const &b)
const std::string instance
static QCString className
string name_of_assns_base(string assns_type_name)
ProductLookup_t createProductLookups(ProductDescriptionsByID const &descriptions)
std::string friendlyName(std::string const &iFullName)
constexpr auto const & left(const_AssnsIter< L, R, D, Dir > const &a, const_AssnsIter< L, R, D, Dir > const &b)
std::map< ProductID, BranchDescription > ProductDescriptionsByID
std::map< std::string, ProcessLookup > ProductLookup_t
bool is_assns(std::string const &type_name)