1231200Smm//===--- ASTConsumers.h - ASTConsumer implementations -----------*- C++ -*-===//
2231200Smm//
3231200Smm//                     The LLVM Compiler Infrastructure
4231200Smm//
5231200Smm// This file is distributed under the University of Illinois Open Source
6231200Smm// License. See LICENSE.TXT for details.
7231200Smm//
8231200Smm//===----------------------------------------------------------------------===//
9231200Smm//
10231200Smm// AST Consumers.
11231200Smm//
12231200Smm//===----------------------------------------------------------------------===//
13231200Smm
14231200Smm#ifndef DRIVER_ASTCONSUMERS_H
15231200Smm#define DRIVER_ASTCONSUMERS_H
16231200Smm
17231200Smm#include "clang/Basic/LLVM.h"
18231200Smm
19231200Smmnamespace clang {
20231200Smm
21231200Smmclass ASTConsumer;
22231200Smmclass CodeGenOptions;
23231200Smmclass DiagnosticsEngine;
24231200Smmclass FileManager;
25231200Smmclass LangOptions;
26231200Smmclass Preprocessor;
27231200Smmclass TargetOptions;
28358090Smm
29358090Smm// AST pretty-printer: prints out the AST in a format that is close to the
30358090Smm// original C code.  The output is intended to be in a format such that
31231200Smm// clang could re-parse the output back into the same AST, but the
32231200Smm// implementation is still incomplete.
33231200SmmASTConsumer *CreateASTPrinter(raw_ostream *OS, StringRef FilterString);
34231200Smm
35231200Smm// AST dumper: dumps the raw AST in human-readable form to stderr; this is
36231200Smm// intended for debugging.
37231200SmmASTConsumer *CreateASTDumper(StringRef FilterString, bool DumpLookups = false);
38231200Smm
39231200Smm// AST Decl node lister: prints qualified names of all filterable AST Decl
40231200Smm// nodes.
41231200SmmASTConsumer *CreateASTDeclNodeLister();
42231200Smm
43231200Smm// Graphical AST viewer: for each function definition, creates a graph of
44231200Smm// the AST and displays it with the graph viewer "dotty".  Also outputs
45231200Smm// function declarations to stderr.
46231200SmmASTConsumer *CreateASTViewer();
47231200Smm
48231200Smm// DeclContext printer: prints out the DeclContext tree in human-readable form
49231200Smm// to stderr; this is intended for debugging.
50231200SmmASTConsumer *CreateDeclContextPrinter();
51231200Smm
52231200Smm} // end clang namespace
53231200Smm
54231200Smm#endif
55231200Smm