003 File Manager
Current Path:
/usr/src/contrib/llvm-project/clang/include/clang/Frontend
usr
/
src
/
contrib
/
llvm-project
/
clang
/
include
/
clang
/
Frontend
/
📁
..
📄
ASTConsumers.h
(1.93 KB)
📄
ASTUnit.h
(34.09 KB)
📄
ChainedDiagnosticConsumer.h
(2.39 KB)
📄
CommandLineSourceLoc.h
(4.25 KB)
📄
CompilerInstance.h
(27.29 KB)
📄
CompilerInvocation.h
(8.85 KB)
📄
DependencyOutputOptions.h
(2.77 KB)
📄
DiagnosticRenderer.h
(6.69 KB)
📄
FrontendAction.h
(11.74 KB)
📄
FrontendActions.h
(9.39 KB)
📄
FrontendDiagnostic.h
(521 B)
📄
FrontendOptions.h
(13.21 KB)
📄
FrontendPluginRegistry.h
(877 B)
📄
LayoutOverrideSource.h
(2.08 KB)
📄
LogDiagnosticPrinter.h
(2.37 KB)
📄
MigratorOptions.h
(877 B)
📄
MultiplexConsumer.h
(3.58 KB)
📄
PCHContainerOperations.h
(527 B)
📄
PrecompiledPreamble.h
(11.83 KB)
📄
PreprocessorOutputOptions.h
(1.58 KB)
📄
SerializedDiagnosticPrinter.h
(1.41 KB)
📄
SerializedDiagnosticReader.h
(4.21 KB)
📄
SerializedDiagnostics.h
(1.47 KB)
📄
TextDiagnostic.h
(4.83 KB)
📄
TextDiagnosticBuffer.h
(2.25 KB)
📄
TextDiagnosticPrinter.h
(1.82 KB)
📄
Utils.h
(8.73 KB)
📄
VerifyDiagnosticConsumer.h
(11.4 KB)
Editing: FrontendActions.h
//===-- FrontendActions.h - Useful Frontend Actions -------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_FRONTEND_FRONTENDACTIONS_H #define LLVM_CLANG_FRONTEND_FRONTENDACTIONS_H #include "clang/Frontend/FrontendAction.h" #include <string> #include <vector> namespace clang { class Module; class FileEntry; //===----------------------------------------------------------------------===// // Custom Consumer Actions //===----------------------------------------------------------------------===// class InitOnlyAction : public FrontendAction { void ExecuteAction() override; std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; public: // Don't claim to only use the preprocessor, we want to follow the AST path, // but do nothing. bool usesPreprocessorOnly() const override { return false; } }; class DumpCompilerOptionsAction : public FrontendAction { std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override { return nullptr; } void ExecuteAction() override; public: bool usesPreprocessorOnly() const override { return true; } }; //===----------------------------------------------------------------------===// // AST Consumer Actions //===----------------------------------------------------------------------===// class ASTPrintAction : public ASTFrontendAction { protected: std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; }; class ASTDumpAction : public ASTFrontendAction { protected: std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; }; class ASTDeclListAction : public ASTFrontendAction { protected: std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; }; class ASTViewAction : public ASTFrontendAction { protected: std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; }; class GeneratePCHAction : public ASTFrontendAction { protected: std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; TranslationUnitKind getTranslationUnitKind() override { return TU_Prefix; } bool hasASTFileSupport() const override { return false; } bool shouldEraseOutputFiles() override; public: /// Compute the AST consumer arguments that will be used to /// create the PCHGenerator instance returned by CreateASTConsumer. /// /// \returns false if an error occurred, true otherwise. static bool ComputeASTConsumerArguments(CompilerInstance &CI, std::string &Sysroot); /// Creates file to write the PCH into and returns a stream to write it /// into. On error, returns null. static std::unique_ptr<llvm::raw_pwrite_stream> CreateOutputFile(CompilerInstance &CI, StringRef InFile, std::string &OutputFile); bool BeginSourceFileAction(CompilerInstance &CI) override; }; class GenerateModuleAction : public ASTFrontendAction { virtual std::unique_ptr<raw_pwrite_stream> CreateOutputFile(CompilerInstance &CI, StringRef InFile) = 0; protected: std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; TranslationUnitKind getTranslationUnitKind() override { return TU_Module; } bool hasASTFileSupport() const override { return false; } }; class GenerateInterfaceStubsAction : public ASTFrontendAction { protected: std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; TranslationUnitKind getTranslationUnitKind() override { return TU_Module; } bool hasASTFileSupport() const override { return false; } }; class GenerateModuleFromModuleMapAction : public GenerateModuleAction { private: bool BeginSourceFileAction(CompilerInstance &CI) override; std::unique_ptr<raw_pwrite_stream> CreateOutputFile(CompilerInstance &CI, StringRef InFile) override; }; class GenerateModuleInterfaceAction : public GenerateModuleAction { private: bool BeginSourceFileAction(CompilerInstance &CI) override; std::unique_ptr<raw_pwrite_stream> CreateOutputFile(CompilerInstance &CI, StringRef InFile) override; }; class GenerateHeaderModuleAction : public GenerateModuleAction { /// The synthesized module input buffer for the current compilation. std::unique_ptr<llvm::MemoryBuffer> Buffer; std::vector<std::string> ModuleHeaders; private: bool PrepareToExecuteAction(CompilerInstance &CI) override; bool BeginSourceFileAction(CompilerInstance &CI) override; std::unique_ptr<raw_pwrite_stream> CreateOutputFile(CompilerInstance &CI, StringRef InFile) override; }; class SyntaxOnlyAction : public ASTFrontendAction { protected: std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; public: ~SyntaxOnlyAction() override; bool hasCodeCompletionSupport() const override { return true; } }; /// Dump information about the given module file, to be used for /// basic debugging and discovery. class DumpModuleInfoAction : public ASTFrontendAction { protected: std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; bool BeginInvocation(CompilerInstance &CI) override; void ExecuteAction() override; public: bool hasPCHSupport() const override { return false; } bool hasASTFileSupport() const override { return true; } bool hasIRSupport() const override { return false; } bool hasCodeCompletionSupport() const override { return false; } }; class VerifyPCHAction : public ASTFrontendAction { protected: std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; void ExecuteAction() override; public: bool hasCodeCompletionSupport() const override { return false; } }; class TemplightDumpAction : public ASTFrontendAction { protected: std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; void ExecuteAction() override; }; /** * Frontend action adaptor that merges ASTs together. * * This action takes an existing AST file and "merges" it into the AST * context, producing a merged context. This action is an action * adaptor, which forwards most of its calls to another action that * will consume the merged context. */ class ASTMergeAction : public FrontendAction { /// The action that the merge action adapts. std::unique_ptr<FrontendAction> AdaptedAction; /// The set of AST files to merge. std::vector<std::string> ASTFiles; protected: std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; bool BeginSourceFileAction(CompilerInstance &CI) override; void ExecuteAction() override; void EndSourceFileAction() override; public: ASTMergeAction(std::unique_ptr<FrontendAction> AdaptedAction, ArrayRef<std::string> ASTFiles); ~ASTMergeAction() override; bool usesPreprocessorOnly() const override; TranslationUnitKind getTranslationUnitKind() override; bool hasPCHSupport() const override; bool hasASTFileSupport() const override; bool hasCodeCompletionSupport() const override; }; class PrintPreambleAction : public FrontendAction { protected: void ExecuteAction() override; std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &, StringRef) override { return nullptr; } bool usesPreprocessorOnly() const override { return true; } }; class PrintDependencyDirectivesSourceMinimizerAction : public FrontendAction { protected: void ExecuteAction() override; std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &, StringRef) override { return nullptr; } bool usesPreprocessorOnly() const override { return true; } }; //===----------------------------------------------------------------------===// // Preprocessor Actions //===----------------------------------------------------------------------===// class DumpRawTokensAction : public PreprocessorFrontendAction { protected: void ExecuteAction() override; }; class DumpTokensAction : public PreprocessorFrontendAction { protected: void ExecuteAction() override; }; class PreprocessOnlyAction : public PreprocessorFrontendAction { protected: void ExecuteAction() override; }; class PrintPreprocessedAction : public PreprocessorFrontendAction { protected: void ExecuteAction() override; bool hasPCHSupport() const override { return true; } }; } // end namespace clang #endif
Upload File
Create Folder