15d866256333fb6115a8a86ac4f89b2ca36e20c70Ted Kremenek//===--- PathDiagnosticClients.h - Path Diagnostic Clients ------*- C++ -*-===//
288f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek//
388f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek//                     The LLVM Compiler Infrastructure
488f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek//
588f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek// This file is distributed under the University of Illinois Open Source
688f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek// License. See LICENSE.TXT for details.
788f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek//
888f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek//===----------------------------------------------------------------------===//
988f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek//
105d866256333fb6115a8a86ac4f89b2ca36e20c70Ted Kremenek//  This file defines the interface to create different path diagostic clients.
1188f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek//
1288f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek//===----------------------------------------------------------------------===//
1388f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek
145a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis#ifndef LLVM_CLANG_GR_PATH_DIAGNOSTIC_CLIENTS_H
15b5ef3ca808b16aa2ba010251773e820f57190d1aSebastian Redl#define LLVM_CLANG_GR_PATH_DIAGNOSTIC_CLIENTS_H
1688f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek
1788f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek#include <string>
18c4bac8e376b98d633bb00ee5f510d5e58449753cTed Kremenek#include <vector>
1988f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek
2088f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremeneknamespace clang {
21339b9c27759d7b6a53e2370f83f66e78b3254595Ted Kremenek
229fcc2ab2ec5e00802880e205568ff3afbd70a773Ted Kremenekclass AnalyzerOptions;
23339b9c27759d7b6a53e2370f83f66e78b3254595Ted Kremenekclass Preprocessor;
241eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
259ef6537a894c33003359b1f9b9676e9178e028b7Ted Kremeneknamespace ento {
265a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis
27ef3643fbbbf66247c5e205497fae0f46e240c143David Blaikieclass PathDiagnosticConsumer;
28c4bac8e376b98d633bb00ee5f510d5e58449753cTed Kremenektypedef std::vector<PathDiagnosticConsumer*> PathDiagnosticConsumers;
295a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis
305fba5a789a238c29ef811a39a39be722443ec1b1Jordan Rose#define ANALYSIS_DIAGNOSTICS(NAME, CMDFLAG, DESC, CREATEFN)\
315fba5a789a238c29ef811a39a39be722443ec1b1Jordan Rosevoid CREATEFN(AnalyzerOptions &AnalyzerOpts,\
325fba5a789a238c29ef811a39a39be722443ec1b1Jordan Rose              PathDiagnosticConsumers &C,\
335fba5a789a238c29ef811a39a39be722443ec1b1Jordan Rose              const std::string &Prefix,\
345fba5a789a238c29ef811a39a39be722443ec1b1Jordan Rose              const Preprocessor &PP);
355fba5a789a238c29ef811a39a39be722443ec1b1Jordan Rose#include "clang/StaticAnalyzer/Core/Analyses.def"
36ebd4f52093b93fed57dcab6fa3a9033e3850ca4bArgyrios Kyrtzidis
37c4bac8e376b98d633bb00ee5f510d5e58449753cTed Kremenek} // end 'ento' namespace
38c4bac8e376b98d633bb00ee5f510d5e58449753cTed Kremenek} // end 'clang' namespace
395a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis
4088f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek#endif
41