1//===--- PathDiagnosticConsumers.h - Path Diagnostic Clients ------*- 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// This file defines the interface to create different path diagostic clients.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHDIAGNOSTICCONSUMERS_H
14#define LLVM_CLANG_STATICANALYZER_CORE_PATHDIAGNOSTICCONSUMERS_H
15
16#include <string>
17#include <vector>
18
19namespace clang {
20
21class AnalyzerOptions;
22class Preprocessor;
23namespace cross_tu {
24class CrossTranslationUnitContext;
25}
26
27namespace ento {
28
29class PathDiagnosticConsumer;
30typedef std::vector<PathDiagnosticConsumer*> PathDiagnosticConsumers;
31
32#define ANALYSIS_DIAGNOSTICS(NAME, CMDFLAG, DESC, CREATEFN) \
33 void CREATEFN(AnalyzerOptions &AnalyzerOpts, PathDiagnosticConsumers &C, \
34 const std::string &Prefix, const Preprocessor &PP, \
35 const cross_tu::CrossTranslationUnitContext &CTU);
36#include "clang/StaticAnalyzer/Core/Analyses.def"
37
38} // end 'ento' namespace
39} // end 'clang' namespace
40
41#endif
42