clang: clang::ASTUnit Class Reference (original) (raw)

Utility class for loading a ASTContext from an AST file. More...

#include "[clang/Frontend/ASTUnit.h](ASTUnit%5F8h%5Fsource.html)"

Classes
struct ASTWriterData
struct CachedCodeCompletionResult
A cached code-completion result, which may be introduced in one of many different contexts. More...
class ConcurrencyCheck
struct StandaloneDiagnostic
struct StandaloneFixIt
Public Types
enum WhatToLoad { LoadPreprocessorOnly, LoadASTOnly, LoadEverything }
using top_level_iterator = std::vector< Decl * >::iterator
using stored_diag_iterator = StoredDiagnostic *
using stored_diag_const_iterator = const StoredDiagnostic *
using cached_completion_iterator = std::vector< CachedCodeCompletionResult >::iterator
using DeclVisitorFn = bool(*)(void *context, const Decl *D)
Type for a function iterating over a number of declarations.
using RemappedFile = std::pair< std::string, llvm::MemoryBuffer * >
A mapping from a file name to the memory buffer that stores the remapped contents of that file.
Public Member Functions
llvm::StringMap< unsigned > & getCachedCompletionTypes ()
Retrieve the mapping from formatted type names to unique type identifiers.
std::shared_ptr< GlobalCodeCompletionAllocator > getCachedCompletionAllocator ()
Retrieve the allocator used to cache global code completions.
CodeCompletionTUInfo & getCodeCompletionTUInfo ()
ASTUnit (const ASTUnit &)=delete
ASTUnit & operator= (const ASTUnit &)=delete
~ASTUnit ()
bool isMainFileAST () const
bool isUnsafeToFree () const
void setUnsafeToFree (bool Value)
const DiagnosticsEngine & getDiagnostics () const
DiagnosticsEngine & getDiagnostics ()
const SourceManager & getSourceManager () const
SourceManager & getSourceManager ()
const Preprocessor & getPreprocessor () const
Preprocessor & getPreprocessor ()
std::shared_ptr< Preprocessor > getPreprocessorPtr () const
const ASTContext & getASTContext () const
ASTContext & getASTContext ()
void setASTContext (ASTContext *ctx)
void setPreprocessor (std::shared_ptr< Preprocessor > pp)
void enableSourceFileDiagnostics ()
Enable source-range based diagnostic messages.
bool hasSema () const
Sema & getSema () const
const LangOptions & getLangOpts () const
const HeaderSearchOptions & getHeaderSearchOpts () const
const PreprocessorOptions & getPreprocessorOpts () const
const FileManager & getFileManager () const
FileManager & getFileManager ()
const FileSystemOptions & getFileSystemOpts () const
IntrusiveRefCntPtr< ASTReader > getASTReader () const
StringRef getOriginalSourceFileName () const
ASTMutationListener * getASTMutationListener ()
ASTDeserializationListener * getDeserializationListener ()
bool getOnlyLocalDecls () const
bool getOwnsRemappedFileBuffers () const
void setOwnsRemappedFileBuffers (bool val)
StringRef getMainFileName () const
StringRef getASTFileName () const
If this ASTUnit came from an AST file, returns the filename for it.
top_level_iterator top_level_begin ()
top_level_iterator top_level_end ()
std::size_t top_level_size () const
bool top_level_empty () const
void addTopLevelDecl (Decl *D)
Add a new top-level declaration.
void addFileLevelDecl (Decl *D)
Add a new local file-level declaration.
void findFileRegionDecls (FileID File, unsigned Offset, unsigned Length, SmallVectorImpl< Decl * > &Decls)
Get the decls that are contained in a file in the Offset/Length range.
unsigned & getCurrentTopLevelHashValue ()
Retrieve a reference to the current top-level name hash value.
SourceLocation getLocation (const FileEntry *File, unsigned Line, unsigned Col) const
Get the source location for the given file:line:col triplet.
SourceLocation getLocation (const FileEntry *File, unsigned Offset) const
Get the source location for the given file:offset pair.
SourceLocation mapLocationFromPreamble (SourceLocation Loc) const
If Loc is a loaded location from the preamble, returns the corresponding local location of the main file, otherwise it returns Loc.
SourceLocation mapLocationToPreamble (SourceLocation Loc) const
If Loc is a local location of the main file but inside the preamble chunk, returns the corresponding loaded location from the preamble, otherwise it returns Loc.
bool isInPreambleFileID (SourceLocation Loc) const
bool isInMainFileID (SourceLocation Loc) const
SourceLocation getStartOfMainFileID () const
SourceLocation getEndOfPreambleFileID () const
SourceRange mapRangeFromPreamble (SourceRange R) const
SourceRange mapRangeToPreamble (SourceRange R) const
unsigned getPreambleCounterForTests () const
stored_diag_const_iterator stored_diag_begin () const
stored_diag_iterator stored_diag_begin ()
stored_diag_const_iterator stored_diag_end () const
stored_diag_iterator stored_diag_end ()
unsigned stored_diag_size () const
stored_diag_iterator stored_diag_afterDriver_begin ()
cached_completion_iterator cached_completion_begin ()
cached_completion_iterator cached_completion_end ()
unsigned cached_completion_size () const
llvm::iterator_range< PreprocessingRecord::iterator > getLocalPreprocessingEntities () const
Returns an iterator range for the local preprocessing entities of the local Preprocessor, if this is a parsed source file, or the loaded preprocessing entities of the primary module if this is an AST file.
bool visitLocalTopLevelDecls (void *context, DeclVisitorFn Fn)
Iterate over local declarations (locally parsed if this is a parsed source file or the loaded declarations of the primary module if this is an AST file).
OptionalFileEntryRef getPCHFile ()
Get the PCH file if one was included.
bool isModuleFile () const
Returns true if the ASTUnit was constructed from a serialized module file.
std::unique_ptr< llvm::MemoryBuffer > getBufferForFile (StringRef Filename, std::string *ErrorStr=nullptr)
TranslationUnitKind getTranslationUnitKind () const
Determine what kind of translation unit this AST represents.
InputKind getInputKind () const
Determine the input kind this AST unit represents.
bool Reparse (std::shared_ptr< PCHContainerOperations > PCHContainerOps, ArrayRef< RemappedFile > RemappedFiles={}, IntrusiveRefCntPtr< llvm::vfs::FileSystem > VFS=nullptr)
Reparse the source files using the same command-line options that were originally used to produce this translation unit.
void ResetForParse ()
Free data that will be re-generated on the next parse.
void CodeComplete (StringRef File, unsigned Line, unsigned Column, ArrayRef< RemappedFile > RemappedFiles, bool IncludeMacros, bool IncludeCodePatterns, bool IncludeBriefComments, CodeCompleteConsumer &Consumer, std::shared_ptr< PCHContainerOperations > PCHContainerOps, DiagnosticsEngine &Diag, LangOptions &LangOpts, SourceManager &SourceMgr, FileManager &FileMgr, SmallVectorImpl< StoredDiagnostic > &StoredDiagnostics, SmallVectorImpl< const llvm::MemoryBuffer * > &OwnedBuffers, std::unique_ptr< SyntaxOnlyAction > Act)
Perform code completion at the given file, line, and column within this translation unit.
bool Save (StringRef File)
Save this translation unit to a file with the given name.
bool serialize (raw_ostream &OS)
Serialize this translation unit with the given output stream.
Static Public Member Functions
static std::unique_ptr< ASTUnit > create (std::shared_ptr< CompilerInvocation > CI, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, CaptureDiagsKind CaptureDiagnostics, bool UserFilesAreVolatile)
Create a ASTUnit. Gets ownership of the passed CompilerInvocation.
static std::unique_ptr< ASTUnit > LoadFromASTFile (StringRef Filename, const PCHContainerReader &PCHContainerRdr, WhatToLoad ToLoad, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, const FileSystemOptions &FileSystemOpts, std::shared_ptr< HeaderSearchOptions > HSOpts, std::shared_ptr< LangOptions > LangOpts=nullptr, bool OnlyLocalDecls=false, CaptureDiagsKind CaptureDiagnostics=CaptureDiagsKind::None, bool AllowASTWithCompilerErrors=false, bool UserFilesAreVolatile=false, IntrusiveRefCntPtr< llvm::vfs::FileSystem > VFS=llvm::vfs::getRealFileSystem())
Create a ASTUnit from an AST file.
static ASTUnit * LoadFromCompilerInvocationAction (std::shared_ptr< CompilerInvocation > CI, std::shared_ptr< PCHContainerOperations > PCHContainerOps, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, FrontendAction *Action=nullptr, ASTUnit *Unit=nullptr, bool Persistent=true, StringRef ResourceFilesPath=StringRef(), bool OnlyLocalDecls=false, CaptureDiagsKind CaptureDiagnostics=CaptureDiagsKind::None, unsigned PrecompilePreambleAfterNParses=0, bool CacheCodeCompletionResults=false, bool UserFilesAreVolatile=false, std::unique_ptr< ASTUnit > *ErrAST=nullptr)
Create an ASTUnit from a source file, via a CompilerInvocation object, by invoking the optionally provided ASTFrontendAction.
static std::unique_ptr< ASTUnit > LoadFromCompilerInvocation (std::shared_ptr< CompilerInvocation > CI, std::shared_ptr< PCHContainerOperations > PCHContainerOps, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, FileManager *FileMgr, bool OnlyLocalDecls=false, CaptureDiagsKind CaptureDiagnostics=CaptureDiagsKind::None, unsigned PrecompilePreambleAfterNParses=0, TranslationUnitKind TUKind=TU_Complete, bool CacheCodeCompletionResults=false, bool IncludeBriefCommentsInCodeCompletion=false, bool UserFilesAreVolatile=false)
LoadFromCompilerInvocation - Create an ASTUnit from a source file, via a CompilerInvocation object.
static std::unique_ptr< ASTUnit > LoadFromCommandLine (const char **ArgBegin, const char **ArgEnd, std::shared_ptr< PCHContainerOperations > PCHContainerOps, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, StringRef ResourceFilesPath, bool StorePreamblesInMemory=false, StringRef PreambleStoragePath=StringRef(), bool OnlyLocalDecls=false, CaptureDiagsKind CaptureDiagnostics=CaptureDiagsKind::None, ArrayRef< RemappedFile > RemappedFiles={}, bool RemappedFilesKeepOriginalName=true, unsigned PrecompilePreambleAfterNParses=0, TranslationUnitKind TUKind=TU_Complete, bool CacheCodeCompletionResults=false, bool IncludeBriefCommentsInCodeCompletion=false, bool AllowPCHWithCompilerErrors=false, SkipFunctionBodiesScope SkipFunctionBodies=SkipFunctionBodiesScope::None, bool SingleFileParse=false, bool UserFilesAreVolatile=false, bool ForSerialization=false, bool RetainExcludedConditionalBlocks=false, std::optional< StringRef > ModuleFormat=std::nullopt, std::unique_ptr< ASTUnit > *ErrAST=nullptr, IntrusiveRefCntPtr< llvm::vfs::FileSystem > VFS=nullptr)
LoadFromCommandLine - Create an ASTUnit from a vector of command line arguments, which must specify exactly one source file.

Utility class for loading a ASTContext from an AST file.

Definition at line 89 of file ASTUnit.h.

cached_completion_iterator

DeclVisitorFn

Type for a function iterating over a number of declarations.

Returns

true to continue iteration and false to abort.

Definition at line 639 of file ASTUnit.h.

RemappedFile

A mapping from a file name to the memory buffer that stores the remapped contents of that file.

Definition at line 665 of file ASTUnit.h.

stored_diag_const_iterator

stored_diag_iterator

top_level_iterator

WhatToLoad

Enumerator
LoadPreprocessorOnly Load options and the preprocessor state.
LoadASTOnly Load the AST, but do not restore Sema state.
LoadEverything Load everything, including Sema.

Definition at line 673 of file ASTUnit.h.

clang::ASTUnit::ASTUnit ( const ASTUnit & ) delete

~ASTUnit()

addFileLevelDecl()

void ASTUnit::addFileLevelDecl ( Decl * D )

addTopLevelDecl()

void clang::ASTUnit::addTopLevelDecl ( Decl * D) inline

Add a new top-level declaration.

Definition at line 530 of file ASTUnit.h.

References D.

cached_completion_begin()

cached_completion_end()

cached_completion_size()

unsigned clang::ASTUnit::cached_completion_size ( ) const inline

CodeComplete()

void ASTUnit::CodeComplete ( StringRef File,
unsigned Line,
unsigned Column,
ArrayRef< RemappedFile > RemappedFiles,
bool IncludeMacros,
bool IncludeCodePatterns,
bool IncludeBriefComments,
CodeCompleteConsumer & Consumer,
std::shared_ptr< PCHContainerOperations > PCHContainerOps,
DiagnosticsEngine & Diag,
LangOptions & LangOpts,
SourceManager & SourceMgr,
FileManager & FileMgr,
SmallVectorImpl< StoredDiagnostic > & StoredDiagnostics,
SmallVectorImpl< const llvm::MemoryBuffer * > & OwnedBuffers,
std::unique_ptr< SyntaxOnlyAction > Act
)

Perform code completion at the given file, line, and column within this translation unit.

Parameters

File The file in which code completion will occur.
Line The line at which code completion will occur.
Column The column at which code completion will occur.
IncludeMacros Whether to include macros in the code-completion results.
IncludeCodePatterns Whether to include code patterns (such as a for loop) in the code-completion results.
IncludeBriefComments Whether to include brief documentation within the set of code completions returned.
Act If supplied, this argument is used to parse the input file, allowing customized parsing by overriding SyntaxOnlyAction lifecycle methods.

FIXME: The Diag, LangOpts, SourceMgr, FileMgr, StoredDiagnostics, and OwnedBuffers parameters are all disgusting hacks. They will go away.

Definition at line 2187 of file ASTUnit.cpp.

References clang::PreprocessorOptions::addRemappedFile(), clang::All, clang::PreprocessorOptions::clearRemappedFiles(), clang::FrontendOptions::CodeCompleteOpts, clang::FrontendOptions::CodeCompletionAt, clang::Column, clang::ParsedSourceLocation::Column, clang::PreprocessorOptions::DetailedRecord, Diag(), clang::File, clang::ParsedSourceLocation::FileName, Filename, clang::FileManager::getVirtualFileSystem(), clang::CodeCompleteOptions::IncludeBriefComments, clang::CodeCompleteOptions::IncludeCodePatterns, clang::CodeCompleteConsumer::includeFixIts(), clang::CodeCompleteOptions::IncludeFixIts, clang::CodeCompleteOptions::IncludeGlobals, clang::CodeCompleteOptions::IncludeMacros, clang::Line, clang::ParsedSourceLocation::Line, clang::LLVM_IR, clang::CodeCompleteConsumer::loadExternal(), clang::CodeCompleteOptions::LoadExternal, clang::PreprocessorOptions::PrecompiledPreambleBytes, clang::ProcessWarningOptions(), clang::PreprocessorOptions::RetainRemappedFileBuffers, and clang::InputKind::Source.

create()

enableSourceFileDiagnostics()

void ASTUnit::enableSourceFileDiagnostics ( )

findFileRegionDecls()

getASTContext() [1/2]

ASTContext & clang::ASTUnit::getASTContext ( ) inline

getASTContext() [2/2]

const ASTContext & clang::ASTUnit::getASTContext ( ) const inline

getASTFileName()

StringRef ASTUnit::getASTFileName ( ) const

getASTMutationListener()

getASTReader()

getBufferForFile()

std::unique_ptr< llvm::MemoryBuffer > ASTUnit::getBufferForFile ( StringRef Filename,
std::string * ErrorStr = nullptr
)

getCachedCompletionAllocator()

Retrieve the allocator used to cache global code completions.

Definition at line 314 of file ASTUnit.h.

getCachedCompletionTypes()

llvm::StringMap< unsigned > & clang::ASTUnit::getCachedCompletionTypes ( ) inline

Retrieve the mapping from formatted type names to unique type identifiers.

Definition at line 308 of file ASTUnit.h.

getCodeCompletionTUInfo()

getCurrentTopLevelHashValue()

unsigned & clang::ASTUnit::getCurrentTopLevelHashValue ( ) inline

getDeserializationListener()

getDiagnostics() [1/2]

getDiagnostics() [2/2]

getEndOfPreambleFileID()

getFileManager() [1/2]

FileManager & clang::ASTUnit::getFileManager ( ) inline

getFileManager() [2/2]

const FileManager & clang::ASTUnit::getFileManager ( ) const inline

getFileSystemOpts()

getHeaderSearchOpts()

getInputKind()

getLangOpts()

const LangOptions & clang::ASTUnit::getLangOpts ( ) const inline

getLocalPreprocessingEntities()

getLocation() [1/2]

Get the source location for the given file:line:col triplet.

The difference with SourceManager::getLocation is that this method checks whether the requested location points inside the precompiled preamble in which case the returned source location will be a "loaded" one.

Definition at line 2530 of file ASTUnit.cpp.

References clang::File, getSourceManager(), clang::Line, Loc, and SM.

getLocation() [2/2]

getMainFileName()

StringRef ASTUnit::getMainFileName ( ) const

getOnlyLocalDecls()

bool clang::ASTUnit::getOnlyLocalDecls ( ) const inline

getOriginalSourceFileName()

StringRef clang::ASTUnit::getOriginalSourceFileName ( ) const inline

getOwnsRemappedFileBuffers()

bool clang::ASTUnit::getOwnsRemappedFileBuffers ( ) const inline

getPCHFile()

getPreambleCounterForTests()

unsigned clang::ASTUnit::getPreambleCounterForTests ( ) const inline

getPreprocessor() [1/2]

getPreprocessor() [2/2]

const Preprocessor & clang::ASTUnit::getPreprocessor ( ) const inline

getPreprocessorOpts()

getPreprocessorPtr()

std::shared_ptr< Preprocessor > clang::ASTUnit::getPreprocessorPtr ( ) const inline

getSema()

Sema & clang::ASTUnit::getSema ( ) const inline

getSourceManager() [1/2]

getSourceManager() [2/2]

const SourceManager & clang::ASTUnit::getSourceManager ( ) const inline

getStartOfMainFileID()

getTranslationUnitKind()

Determine what kind of translation unit this AST represents.

Definition at line 658 of file ASTUnit.h.

hasSema()

bool clang::ASTUnit::hasSema ( ) const inline

isInMainFileID()

isInPreambleFileID()

isMainFileAST()

bool clang::ASTUnit::isMainFileAST ( ) const inline

isModuleFile()

bool ASTUnit::isModuleFile ( ) const

isUnsafeToFree()

bool clang::ASTUnit::isUnsafeToFree ( ) const inline

LoadFromASTFile()

std::unique_ptr< ASTUnit > ASTUnit::LoadFromASTFile ( StringRef Filename, const PCHContainerReader & PCHContainerRdr, WhatToLoad ToLoad, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, const FileSystemOptions & FileSystemOpts, std::shared_ptr< HeaderSearchOptions > HSOpts, std::shared_ptr< LangOptions > LangOpts = nullptr, bool OnlyLocalDecls = false, CaptureDiagsKind CaptureDiagnostics = CaptureDiagsKind::None, bool AllowASTWithCompilerErrors = false, bool UserFilesAreVolatile = false, IntrusiveRefCntPtr< llvm::vfs::FileSystem > VFS = llvm::vfs::getRealFileSystem() ) static

Create a ASTUnit from an AST file.

Parameters

Filename - The AST file to load.
PCHContainerRdr - The PCHContainerOperations to use for loading and creating modules.
Diags - The diagnostics engine to use for reporting errors; its lifetime is expected to extend past that of the returned ASTUnit.

Returns

- The initialized ASTUnit or null if the AST failed to load.

Definition at line 804 of file ASTUnit.cpp.

References clang::All, clang::ASTReader::ARR_None, clang::ASTReader::ConfigurationMismatch, clang::ASTReader::Failure, Filename, clang::Preprocessor::getBuiltinInfo(), clang::PCHContainerReader::getFormats(), clang::Preprocessor::getIdentifierTable(), clang::Preprocessor::getLangOpts(), clang::Preprocessor::getSelectorTable(), clang::ASTReader::HadErrors, clang::Module::isNamedModule(), LoadASTOnly, LoadEverything, clang::HeaderSearch::lookupModule(), clang::ASTReader::Missing, clang::serialization::MK_MainFile, clang::None, clang::ASTReader::OutOfDate, clang::Preprocessor::setCounterValue(), clang::ASTReader::Success, and clang::ASTReader::VersionMismatch.

Referenced by clang::FrontendAction::BeginSourceFile(), and clang::ASTMergeAction::ExecuteAction().

LoadFromCommandLine()

std::unique_ptr< ASTUnit > ASTUnit::LoadFromCommandLine ( const char ** ArgBegin, const char ** ArgEnd, std::shared_ptr< PCHContainerOperations > PCHContainerOps, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, StringRef ResourceFilesPath, bool StorePreamblesInMemory = false, StringRef PreambleStoragePath = StringRef(), bool OnlyLocalDecls = false, CaptureDiagsKind CaptureDiagnostics = CaptureDiagsKind::None, ArrayRef< RemappedFile > RemappedFiles = {}, bool RemappedFilesKeepOriginalName = true, unsigned PrecompilePreambleAfterNParses = 0, TranslationUnitKind TUKind = TU_Complete, bool CacheCodeCompletionResults = false, bool IncludeBriefCommentsInCodeCompletion = false, bool AllowPCHWithCompilerErrors = false, SkipFunctionBodiesScope SkipFunctionBodies = SkipFunctionBodiesScope::None, bool SingleFileParse = false, bool UserFilesAreVolatile = false, bool ForSerialization = false, bool RetainExcludedConditionalBlocks = false, std::optional< StringRef > ModuleFormat = std::nullopt, std::unique_ptr< ASTUnit > * ErrAST = nullptr, IntrusiveRefCntPtr< llvm::vfs::FileSystem > VFS = nullptr ) static

LoadFromCommandLine - Create an ASTUnit from a vector of command line arguments, which must specify exactly one source file.

Parameters

ArgBegin - The beginning of the argument vector.
ArgEnd - The end of the argument vector.
PCHContainerOps - The PCHContainerOperations to use for loading and creating modules.
Diags - The diagnostics engine to use for reporting errors; its lifetime is expected to extend past that of the returned ASTUnit.
ResourceFilesPath - The path to the compiler resource files.
StorePreamblesInMemory - Whether to store PCH in memory. If false, PCH are stored in temporary files.
PreambleStoragePath - The path to a directory, in which to create temporary PCH files. If empty, the default system temporary directory is used. This parameter is ignored if StorePreamblesInMemory is true.
ModuleFormat - If provided, uses the specific module format.
ErrAST - If non-null and parsing failed without any AST to return (e.g. because the PCH could not be loaded), this accepts the ASTUnit mainly to allow the caller to see the diagnostics.
VFS - A llvm::vfs::FileSystem to be used for all file accesses. Note that preamble is saved to a temporary directory on a RealFileSystem, so in order for it to be loaded correctly, VFS should have access to it(i.e., be an overlay over RealFileSystem). RealFileSystem will be used if VFS is nullptr.

Definition at line 1765 of file ASTUnit.cpp.

References clang::PreprocessorOptions::AllowPCHWithCompilerErrors, clang::createInvocation(), clang::createVFSFromCompilerInvocation(), clang::CreateInvocationOptions::Diags, clang::PreambleAndMainFile, clang::CreateInvocationOptions::ProbePrecompiled, clang::PreprocessorOptions::RemappedFilesKeepOriginalName, clang::PreprocessorOptions::RetainExcludedConditionalBlocks, clang::PreprocessorOptions::SingleFileParseMode, and clang::CreateInvocationOptions::VFS.

LoadFromCompilerInvocation()

std::unique_ptr< ASTUnit > ASTUnit::LoadFromCompilerInvocation ( std::shared_ptr< CompilerInvocation > CI, std::shared_ptr< PCHContainerOperations > PCHContainerOps, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, FileManager * FileMgr, bool OnlyLocalDecls = false, CaptureDiagsKind CaptureDiagnostics = CaptureDiagsKind::None, unsigned PrecompilePreambleAfterNParses = 0, TranslationUnitKind TUKind = TU_Complete, bool CacheCodeCompletionResults = false, bool IncludeBriefCommentsInCodeCompletion = false, bool UserFilesAreVolatile = false ) static

LoadFromCompilerInvocationAction()

ASTUnit * ASTUnit::LoadFromCompilerInvocationAction ( std::shared_ptr< CompilerInvocation > CI, std::shared_ptr< PCHContainerOperations > PCHContainerOps, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, FrontendAction * Action = nullptr, ASTUnit * Unit = nullptr, bool Persistent = true, StringRef ResourceFilesPath = StringRef(), bool OnlyLocalDecls = false, CaptureDiagsKind CaptureDiagnostics = CaptureDiagsKind::None, unsigned PrecompilePreambleAfterNParses = 0, bool CacheCodeCompletionResults = false, bool UserFilesAreVolatile = false, std::unique_ptr< ASTUnit > * ErrAST = nullptr ) static

Create an ASTUnit from a source file, via a CompilerInvocation object, by invoking the optionally provided ASTFrontendAction.

Parameters

CI - The compiler invocation to use; it must have exactly one input source file. The ASTUnit takes ownership of the CompilerInvocation object.
PCHContainerOps - The PCHContainerOperations to use for loading and creating modules.
Diags - The diagnostics engine to use for reporting errors; its lifetime is expected to extend past that of the returned ASTUnit.
Action - The ASTFrontendAction to invoke. Its ownership is not transferred.
Unit - optionally an already created ASTUnit. Its ownership is not transferred.
Persistent - if true the returned ASTUnit will be complete. false means the caller is only interested in getting info through the provided

See also

Action.

Parameters

ErrAST - If non-null and parsing failed without any AST to return (e.g. because the PCH could not be loaded), this accepts the ASTUnit mainly to allow the caller to see the diagnostics. This will only receive an ASTUnit if a new one was created. If an already created ASTUnit was passed in Unit then the caller can check that.

Definition at line 1554 of file ASTUnit.cpp.

References clang::FrontendAction::BeginSourceFile(), create(), clang::FrontendAction::EndSourceFile(), clang::FrontendAction::Execute(), getCurrentTopLevelHashValue(), getDiagnostics(), getFileManager(), getHeaderSearchOpts(), getSourceManager(), clang::FrontendAction::getTranslationUnitKind(), clang::FileManager::getVirtualFileSystem(), clang::LLVM_IR, clang::ProcessWarningOptions(), clang::HeaderSearchOptions::ResourceDir, clang::InputKind::Source, and clang::TU_Complete.

Referenced by clang::arcmt::MigrationProcess::applyTransform(), clang::arcmt::checkForManualIssues(), and clang::ReplCodeCompleter::codeComplete().

mapLocationFromPreamble()

If Loc is a loaded location from the preamble, returns the corresponding local location of the main file, otherwise it returns Loc.

If.

Definition at line 2547 of file ASTUnit.cpp.

References clang::SourceManager::getLocForStartOfFile(), clang::SourceLocation::getLocWithOffset(), clang::SourceManager::getMainFileID(), clang::SourceManager::getPreambleFileID(), clang::SourceManager::isInFileID(), clang::FileID::isInvalid(), clang::SourceLocation::isInvalid(), and Loc.

Referenced by mapRangeFromPreamble().

mapLocationToPreamble()

If Loc is a local location of the main file but inside the preamble chunk, returns the corresponding loaded location from the preamble, otherwise it returns Loc.

If.

Definition at line 2568 of file ASTUnit.cpp.

References clang::SourceManager::getLocForStartOfFile(), clang::SourceLocation::getLocWithOffset(), clang::SourceManager::getMainFileID(), clang::SourceManager::getPreambleFileID(), clang::SourceManager::isInFileID(), clang::FileID::isInvalid(), clang::SourceLocation::isInvalid(), and Loc.

Referenced by mapRangeToPreamble().

mapRangeFromPreamble()

mapRangeToPreamble()

operator=()

Reparse()

ResetForParse()

void ASTUnit::ResetForParse ( )

Free data that will be re-generated on the next parse.

Preamble-related data is not affected.

Definition at line 1930 of file ASTUnit.cpp.

Save()

bool ASTUnit::Save ( StringRef File )

Save this translation unit to a file with the given name.

Returns

true if there was a file error or false if the save was successful.

Definition at line 2345 of file ASTUnit.cpp.

References clang::File, and serialize().

serialize()

bool ASTUnit::serialize ( raw_ostream & OS )

setASTContext()

void clang::ASTUnit::setASTContext ( ASTContext * ctx) inline

setOwnsRemappedFileBuffers()

void clang::ASTUnit::setOwnsRemappedFileBuffers ( bool val) inline

setPreprocessor()

void ASTUnit::setPreprocessor ( std::shared_ptr< Preprocessor > pp )

setUnsafeToFree()

void clang::ASTUnit::setUnsafeToFree ( bool Value) inline

stored_diag_afterDriver_begin()

stored_diag_begin() [1/2]

stored_diag_begin() [2/2]

stored_diag_end() [1/2]

stored_diag_end() [2/2]

stored_diag_size()

unsigned clang::ASTUnit::stored_diag_size ( ) const inline

top_level_begin()

top_level_empty()

bool clang::ASTUnit::top_level_empty ( ) const inline

top_level_end()

top_level_size()

std::size_t clang::ASTUnit::top_level_size ( ) const inline

visitLocalTopLevelDecls()

ConcurrencyCheck


The documentation for this class was generated from the following files: