clang 23.0.0git
ExtractorRegistry.h
Go to the documentation of this file.
1//===- ExtractorRegistry.h --------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// Registry for TUSummaryExtractors, and some helper functions.
10// To register some custom extractor, insert this code:
11//
12// namespace clang::ssaf {
13// // NOLINTNEXTLINE(misc-use-internal-linkage)
14// volatile int MyExtractorAnchorSource = 0;
15// } // namespace clang::ssaf
16// static TUSummaryExtractorRegistry::Add<MyExtractor>
17// X("MyExtractor", "My awesome extractor");
18//
19// Finally, extend the `AnchorSources` list in the force-linker header:
20// clang/include/clang/ScalableStaticAnalysisFramework/SSAFBuiltinForceLinker.h:
21//
22//===----------------------------------------------------------------------===//
23
24#ifndef LLVM_CLANG_SCALABLESTATICANALYSISFRAMEWORK_CORE_TUSUMMARY_EXTRACTORREGISTRY_H
25#define LLVM_CLANG_SCALABLESTATICANALYSISFRAMEWORK_CORE_TUSUMMARY_EXTRACTORREGISTRY_H
26
29#include "llvm/ADT/StringRef.h"
30#include "llvm/Support/Registry.h"
31#include "llvm/Support/raw_ostream.h"
32
33namespace clang::ssaf {
34
35/// Check if a TUSummaryExtractor was registered with a given name.
37
38/// Try to instantiate a TUSummaryExtractor with a given name.
39/// This might return null if the construction of the desired TUSummaryExtractor
40/// failed.
41/// It's a fatal error if there is no extractor registered with the name.
42std::unique_ptr<TUSummaryExtractor>
43makeTUSummaryExtractor(llvm::StringRef SummaryName, TUSummaryBuilder &Builder);
44
45/// Print the list of available TUSummaryExtractors.
46void printAvailableTUSummaryExtractors(llvm::raw_ostream &OS);
47
48// Registry for adding new TUSummaryExtractor implementations.
50 llvm::Registry<TUSummaryExtractor, TUSummaryBuilder &>;
51
52} // namespace clang::ssaf
53
54LLVM_DECLARE_REGISTRY(clang::ssaf::TUSummaryExtractorRegistry)
55
56#endif // LLVM_CLANG_SCALABLESTATICANALYSISFRAMEWORK_CORE_TUSUMMARY_EXTRACTORREGISTRY_H
Uniquely identifies an analysis summary.
Definition SummaryName.h:22
std::unique_ptr< TUSummaryExtractor > makeTUSummaryExtractor(llvm::StringRef SummaryName, TUSummaryBuilder &Builder)
Try to instantiate a TUSummaryExtractor with a given name.
llvm::Registry< TUSummaryExtractor, TUSummaryBuilder & > TUSummaryExtractorRegistry
void printAvailableTUSummaryExtractors(llvm::raw_ostream &OS)
Print the list of available TUSummaryExtractors.
bool isTUSummaryExtractorRegistered(llvm::StringRef SummaryName)
Check if a TUSummaryExtractor was registered with a given name.