PathDiagnosticConsumers.h revision 1eb4433ac451dc16f4133a88af2d002ac26c58ef
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
14d37ee16367bbf8058799148d958cbf4fbabc9fb7Daniel Dunbar#ifndef LLVM_CLANG_FRONTEND_PATH_DIAGNOSTIC_CLIENTS_H
15d37ee16367bbf8058799148d958cbf4fbabc9fb7Daniel Dunbar#define LLVM_CLANG_FRONTEND_PATH_DIAGNOSTIC_CLiENTS_H
1688f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek
17f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek#include <memory>
1888f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek#include <string>
19f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek#include "llvm/ADT/SmallVector.h"
2088f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek
2188f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremeneknamespace clang {
22339b9c27759d7b6a53e2370f83f66e78b3254595Ted Kremenek
23339b9c27759d7b6a53e2370f83f66e78b3254595Ted Kremenekclass PathDiagnosticClient;
24339b9c27759d7b6a53e2370f83f66e78b3254595Ted Kremenekclass Preprocessor;
25339b9c27759d7b6a53e2370f83f66e78b3254595Ted Kremenekclass PreprocessorFactory;
261eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
27f75560670bcdd59b051149bdece3eac14e313853Ted Kremenekclass PathDiagnosticClientFactory {
28f75560670bcdd59b051149bdece3eac14e313853Ted Kremenekpublic:
29f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek  PathDiagnosticClientFactory() {}
30f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek  virtual ~PathDiagnosticClientFactory() {}
311eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
32f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek  virtual const char *getName() const = 0;
33339b9c27759d7b6a53e2370f83f66e78b3254595Ted Kremenek
34f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek  virtual PathDiagnosticClient*
35f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek  createPathDiagnosticClient(llvm::SmallVectorImpl<std::string> *FilesMade) = 0;
36f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek};
37f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek
38f75560670bcdd59b051149bdece3eac14e313853Ted KremenekPathDiagnosticClient*
39f75560670bcdd59b051149bdece3eac14e313853Ted KremenekCreateHTMLDiagnosticClient(const std::string& prefix, Preprocessor* PP = 0,
40f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek                           PreprocessorFactory* PPF = 0,
41f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek                           llvm::SmallVectorImpl<std::string>* FilesMade = 0);
421eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
43f75560670bcdd59b051149bdece3eac14e313853Ted KremenekPathDiagnosticClientFactory*
44f75560670bcdd59b051149bdece3eac14e313853Ted KremenekCreateHTMLDiagnosticClientFactory(const std::string& prefix,
45f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek                                  Preprocessor* PP = 0,
46f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek                                  PreprocessorFactory* PPF = 0);
471eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
48f75560670bcdd59b051149bdece3eac14e313853Ted KremenekPathDiagnosticClient*
49f75560670bcdd59b051149bdece3eac14e313853Ted KremenekCreatePlistDiagnosticClient(const std::string& prefix, Preprocessor* PP,
50f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek                            PreprocessorFactory* PPF,
51f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek                            PathDiagnosticClientFactory *PF = 0);
5288f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek
53f75560670bcdd59b051149bdece3eac14e313853Ted Kremenek} // end clang namespace
5488f5cde90dbb5f28cc269071d5ab11436767a1e1Ted Kremenek#endif
55