22#ifndef LLVM_CLANG_SCALABLESTATICANALYSIS_CORE_SUMMARYDATA_SUMMARYDATABUILDERREGISTRY_H
23#define LLVM_CLANG_SCALABLESTATICANALYSIS_CORE_SUMMARYDATA_SUMMARYDATABUILDERREGISTRY_H
27#include "llvm/Support/Registry.h"
32 llvm::Registry<clang::ssaf::SummaryDataBuilderBase>)
41class SummaryDataBuilderRegistry {
42 using RegistryT = llvm::Registry<SummaryDataBuilderBase>;
44 SummaryDataBuilderRegistry() =
delete;
53 template <
typename BuilderT>
struct Add {
54 explicit Add(llvm::StringRef Desc)
55 : Name(BuilderT::summaryName().str().str()), Node(Name, Desc) {}
57 Add(
const Add &) =
delete;
58 Add &operator=(
const Add &) =
delete;
62 RegistryT::Add<BuilderT> Node;
66 static bool contains(llvm::StringRef Name);
70 static std::unique_ptr<SummaryDataBuilderBase>
71 instantiate(llvm::StringRef Name);
static bool contains(const std::set< tok::TokenKind > &Terminators, const Token &Tok)
llvm::Registry< SummaryDataBuilderBase > RegistryT
bool Add(InterpState &S, CodePtr OpPC)