1//===--- ASTConsumers.h - ASTConsumer implementations -----------*- 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// AST Consumers. 10// 11//===----------------------------------------------------------------------===// 12 13#ifndef LLVM_CLANG_REWRITE_FRONTEND_ASTCONSUMERS_H 14#define LLVM_CLANG_REWRITE_FRONTEND_ASTCONSUMERS_H 15 16#include "clang/Basic/LLVM.h" 17#include <memory> 18#include <string> 19 20namespace clang { 21 22class ASTConsumer; 23class DiagnosticsEngine; 24class LangOptions; 25class Preprocessor; 26 27// ObjC rewriter: attempts to rewrite ObjC constructs into pure C code. 28// This is considered experimental, and only works with Apple's ObjC runtime. 29std::unique_ptr<ASTConsumer> 30CreateObjCRewriter(const std::string &InFile, std::unique_ptr<raw_ostream> OS, 31 DiagnosticsEngine &Diags, const LangOptions &LOpts, 32 bool SilenceRewriteMacroWarning); 33std::unique_ptr<ASTConsumer> 34CreateModernObjCRewriter(const std::string &InFile, 35 std::unique_ptr<raw_ostream> OS, 36 DiagnosticsEngine &Diags, const LangOptions &LOpts, 37 bool SilenceRewriteMacroWarning, bool LineInfo); 38 39/// CreateHTMLPrinter - Create an AST consumer which rewrites source code to 40/// HTML with syntax highlighting suitable for viewing in a web-browser. 41std::unique_ptr<ASTConsumer> CreateHTMLPrinter(std::unique_ptr<raw_ostream> OS, 42 Preprocessor &PP, 43 bool SyntaxHighlight = true, 44 bool HighlightMacros = true); 45 46} // end clang namespace 47 48#endif 49