9#ifndef LLVM_CLANG_ANALYSIS_SCALABLE_TUSUMMARY_TUSUMMARYBUILDER_H
10#define LLVM_CLANG_ANALYSIS_SCALABLE_TUSUMMARY_TUSUMMARYBUILDER_H
34 template <
typename ConcreteEntitySummary,
36 std::pair<EntitySummary *, bool>
42 std::pair<EntitySummary *, bool>
43 addSummaryImpl(
EntityId Entity, std::unique_ptr<EntitySummary> &&
Data);
53template <
typename ConcreteEntitySummary,
55std::pair<EntitySummary *, bool>
57 std::unique_ptr<ConcreteEntitySummary> &&
Data) {
60 std::unique_ptr<EntitySummary> TypeErasedData = std::move(
Data);
64 auto [It, Inserted] = addSummaryImpl(Entity, std::move(TypeErasedData));
68 Data = std::unique_ptr<ConcreteEntitySummary>(
69 static_cast<ConcreteEntitySummary *
>(TypeErasedData.release()));
71 return {It, Inserted};
Lightweight opaque handle representing an entity in an EntityIdTable.
Uniquely identifies an entity in a program.
EntityId addEntity(const EntityName &E)
Add an entity to the summary and return its EntityId.
std::pair< EntitySummary *, bool > addSummary(EntityId Entity, std::unique_ptr< ConcreteEntitySummary > &&Data)
Associate the Data EntitySummary with the Entity.
TUSummaryBuilder(TUSummary &Summary)
Data extracted for a given translation unit and for a given set of analyses.
std::enable_if_t< std::is_base_of_v< EntitySummary, Derived > > DerivesFromEntitySummary