clang API Documentation
Utility class for loading a ASTContext from an AST file. More...
#include <ASTUnit.h>
Classes | |
struct | ASTWriterData |
struct | CachedCodeCompletionResult |
A cached code-completion result, which may be introduced in one of many different contexts. More... | |
struct | ComputedPreamble |
class | ConcurrencyCheck |
class | ConcurrencyState |
Allows us to assert that ASTUnit is not being used concurrently, which is not supported. | |
class | PreambleData |
struct | PreambleFileHash |
Data used to determine if a file used in the preamble has been changed. More... | |
struct | StandaloneDiagnostic |
struct | StandaloneFixIt |
Public Types | |
typedef std::vector< Decl * > ::iterator | top_level_iterator |
typedef StoredDiagnostic * | stored_diag_iterator |
typedef const StoredDiagnostic * | stored_diag_const_iterator |
typedef std::vector < CachedCodeCompletionResult > ::iterator | cached_completion_iterator |
typedef bool(* | DeclVisitorFn )(void *context, const Decl *D) |
Type for a function iterating over a number of declarations. | |
typedef std::pair< std::string, llvm::MemoryBuffer * > | RemappedFile |
A mapping from a file name to the memory buffer that stores the remapped contents of that file. | |
Public Member Functions | |
const PreambleData & | getPreambleData () const |
llvm::StringMap< unsigned > & | getCachedCompletionTypes () |
Retrieve the mapping from formatted type names to unique type identifiers. | |
IntrusiveRefCntPtr < GlobalCodeCompletionAllocator > | getCachedCompletionAllocator () |
Retrieve the allocator used to cache global code completions. | |
CodeCompletionTUInfo & | getCodeCompletionTUInfo () |
~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 () |
const ASTContext & | getASTContext () const |
ASTContext & | getASTContext () |
void | setASTContext (ASTContext *ctx) |
void | setPreprocessor (Preprocessor *pp) |
bool | hasSema () const |
Sema & | getSema () const |
const LangOptions & | getLangOpts () const |
const FileManager & | getFileManager () const |
FileManager & | getFileManager () |
const FileSystemOptions & | getFileSystemOpts () const |
StringRef | getOriginalSourceFileName () |
ASTMutationListener * | getASTMutationListener () |
ASTDeserializationListener * | getDeserializationListener () |
void | addTemporaryFile (StringRef TempFile) |
Add a temporary file that the ASTUnit depends on. | |
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. Length can be 0 to indicate a point at Offset instead of a range. | |
void | addTopLevelDeclFromPreamble (serialization::DeclID D) |
Add a new top-level declaration, identified by its ID in the precompiled preamble. | |
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) |
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) |
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) |
bool | isInMainFileID (SourceLocation Loc) |
SourceLocation | getStartOfMainFileID () |
SourceLocation | getEndOfPreambleFileID () |
SourceRange | mapRangeFromPreamble (SourceRange R) |
SourceRange | mapRangeToPreamble (SourceRange R) |
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 |
std::pair < PreprocessingRecord::iterator, 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). | |
const FileEntry * | getPCHFile () |
Get the PCH file if one was included. | |
bool | isModuleFile () |
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. | |
bool | Reparse (ArrayRef< RemappedFile > RemappedFiles=None) |
Reparse the source files using the same command-line options that were originally used to produce this translation unit. | |
void | CodeComplete (StringRef File, unsigned Line, unsigned Column, ArrayRef< RemappedFile > RemappedFiles, bool IncludeMacros, bool IncludeCodePatterns, bool IncludeBriefComments, CodeCompleteConsumer &Consumer, DiagnosticsEngine &Diag, LangOptions &LangOpts, SourceManager &SourceMgr, FileManager &FileMgr, SmallVectorImpl< StoredDiagnostic > &StoredDiagnostics, SmallVectorImpl< const llvm::MemoryBuffer * > &OwnedBuffers) |
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. | |
ModuleLoadResult | loadModule (SourceLocation ImportLoc, ModuleIdPath Path, Module::NameVisibilityKind Visibility, bool IsInclusionDirective) override |
Attempt to load the given module. | |
void | makeModuleVisible (Module *Mod, Module::NameVisibilityKind Visibility, SourceLocation ImportLoc, bool Complain) override |
Make the given module visible. | |
GlobalModuleIndex * | loadGlobalModuleIndex (SourceLocation TriggerLoc) override |
Load, create, or return global module. This function returns an existing global module index, if one had already been loaded or created, or loads one if it exists, or creates one if it doesn't exist. Also, importantly, if the index doesn't cover all the modules in the module map, it will be update to do so here, because of its use in searching for needed module imports and associated fixit messages. | |
bool | lookupMissingImports (StringRef Name, SourceLocation TriggerLoc) override |
Static Public Member Functions | |
static ASTUnit * | create (CompilerInvocation *CI, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, bool CaptureDiagnostics, bool UserFilesAreVolatile) |
Create a ASTUnit. Gets ownership of the passed CompilerInvocation. | |
static std::unique_ptr< ASTUnit > | LoadFromASTFile (const std::string &Filename, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, const FileSystemOptions &FileSystemOpts, bool OnlyLocalDecls=false, ArrayRef< RemappedFile > RemappedFiles=None, bool CaptureDiagnostics=false, bool AllowPCHWithCompilerErrors=false, bool UserFilesAreVolatile=false) |
Create a ASTUnit from an AST file. | |
static ASTUnit * | LoadFromCompilerInvocationAction (CompilerInvocation *CI, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, ASTFrontendAction *Action=nullptr, ASTUnit *Unit=nullptr, bool Persistent=true, StringRef ResourceFilesPath=StringRef(), bool OnlyLocalDecls=false, bool CaptureDiagnostics=false, bool PrecompilePreamble=false, bool CacheCodeCompletionResults=false, bool IncludeBriefCommentsInCodeCompletion=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 (CompilerInvocation *CI, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, bool OnlyLocalDecls=false, bool CaptureDiagnostics=false, bool PrecompilePreamble=false, TranslationUnitKind TUKind=TU_Complete, bool CacheCodeCompletionResults=false, bool IncludeBriefCommentsInCodeCompletion=false, bool UserFilesAreVolatile=false) |
static ASTUnit * | LoadFromCommandLine (const char **ArgBegin, const char **ArgEnd, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, StringRef ResourceFilesPath, bool OnlyLocalDecls=false, bool CaptureDiagnostics=false, ArrayRef< RemappedFile > RemappedFiles=None, bool RemappedFilesKeepOriginalName=true, bool PrecompilePreamble=false, TranslationUnitKind TUKind=TU_Complete, bool CacheCodeCompletionResults=false, bool IncludeBriefCommentsInCodeCompletion=false, bool AllowPCHWithCompilerErrors=false, bool SkipFunctionBodies=false, bool UserFilesAreVolatile=false, bool ForSerialization=false, std::unique_ptr< ASTUnit > *ErrAST=nullptr) |
Friends | |
class | ConcurrencyCheck |
Utility class for loading a ASTContext from an AST file.
typedef std::vector<CachedCodeCompletionResult>::iterator clang::ASTUnit::cached_completion_iterator |
typedef bool(* clang::ASTUnit::DeclVisitorFn)(void *context, const Decl *D) |
typedef std::pair<std::string, llvm::MemoryBuffer *> clang::ASTUnit::RemappedFile |
typedef const StoredDiagnostic* clang::ASTUnit::stored_diag_const_iterator |
typedef std::vector<Decl *>::iterator clang::ASTUnit::top_level_iterator |
Definition at line 234 of file ASTUnit.cpp.
References ActiveASTUnitObjects, clang::DiagnosticConsumer::EndSourceFile(), clang::DiagnosticsEngine::getClient(), getDiagnostics(), clang::PreprocessorOptions::RemappedFileBuffers, and removeOnDiskEntry().
void ASTUnit::addFileLevelDecl | ( | Decl * | D | ) |
Add a new local file-level declaration.
Definition at line 2555 of file ASTUnit.cpp.
References clang::SourceManager::getDecomposedLoc(), clang::SourceManager::getFileLoc(), clang::Decl::getLexicalDeclContext(), clang::Decl::getLocation(), clang::DeclContext::isFileContext(), clang::Decl::isFromASTFile(), clang::SourceLocation::isInvalid(), clang::SourceManager::isLocalSourceLocation(), and SM.
void ASTUnit::addTemporaryFile | ( | StringRef | TempFile | ) |
Add a temporary file that the ASTUnit depends on.
This file will be erased when the ASTUnit is destroyed.
Definition at line 200 of file ASTUnit.cpp.
References getOnDiskData().
void clang::ASTUnit::addTopLevelDecl | ( | Decl * | D | ) | [inline] |
void clang::ASTUnit::addTopLevelDeclFromPreamble | ( | serialization::DeclID | D | ) | [inline] |
unsigned clang::ASTUnit::cached_completion_size | ( | ) | const [inline] |
void ASTUnit::CodeComplete | ( | StringRef | File, |
unsigned | Line, | ||
unsigned | Column, | ||
ArrayRef< RemappedFile > | RemappedFiles, | ||
bool | IncludeMacros, | ||
bool | IncludeCodePatterns, | ||
bool | IncludeBriefComments, | ||
CodeCompleteConsumer & | Consumer, | ||
DiagnosticsEngine & | Diag, | ||
LangOptions & | LangOpts, | ||
SourceManager & | SourceMgr, | ||
FileManager & | FileMgr, | ||
SmallVectorImpl< StoredDiagnostic > & | StoredDiagnostics, | ||
SmallVectorImpl< const llvm::MemoryBuffer * > & | OwnedBuffers | ||
) |
Perform code completion at the given file, line, and column within this translation unit.
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. |
FIXME: The Diag, LangOpts, SourceMgr, FileMgr, StoredDiagnostics, and OwnedBuffers parameters are all disgusting hacks. They will go away.
Definition at line 2290 of file ASTUnit.cpp.
References clang::PreprocessorOptions::addRemappedFile(), clang::PreprocessorOptions::clearRemappedFiles(), clang::FrontendOptions::CodeCompleteOpts, clang::FrontendOptions::CodeCompletionAt, clang::ParsedSourceLocation::Column, Column, clang::TargetInfo::CreateTargetInfo(), clang::PreprocessorOptions::DetailedRecord, clang::PreprocessorOptions::DisablePCHValidation, clang::ParsedSourceLocation::FileName, getPreambleFile(), clang::IK_AST, clang::IK_LLVM_IR, clang::PreprocessorOptions::ImplicitPCHInclude, CodeCompleteOptions::IncludeBriefComments, CodeCompleteOptions::IncludeCodePatterns, CodeCompleteOptions::IncludeGlobals, CodeCompleteOptions::IncludeMacros, clang::ParsedSourceLocation::Line, Line, clang::PreprocessorOptions::PrecompiledPreambleBytes, clang::ProcessWarningOptions(), clang::PreprocessorOptions::RetainRemappedFileBuffers, and clang::ASTUnit::PreambleData::size().
ASTUnit * ASTUnit::create | ( | CompilerInvocation * | CI, |
IntrusiveRefCntPtr< DiagnosticsEngine > | Diags, | ||
bool | CaptureDiagnostics, | ||
bool | UserFilesAreVolatile | ||
) | [static] |
Create a ASTUnit. Gets ownership of the passed CompilerInvocation.
Definition at line 1694 of file ASTUnit.cpp.
References clang::createVFSFromCompilerInvocation(), and clang::CompilerInvocation::getFileSystemOpts().
Referenced by LoadFromCompilerInvocationAction().
void ASTUnit::findFileRegionDecls | ( | FileID | File, |
unsigned | Offset, | ||
unsigned | Length, | ||
SmallVectorImpl< Decl * > & | Decls | ||
) |
Get the decls that are contained in a file in the Offset/Length range. Length
can be 0 to indicate a point at Offset
instead of a range.
Definition at line 2596 of file ASTUnit.cpp.
References clang::ExternalASTSource::FindFileRegionDecls(), clang::ASTContext::getExternalSource(), clang::FileID::isInvalid(), and clang::SourceManager::isLoadedFileID().
const ASTContext& clang::ASTUnit::getASTContext | ( | ) | const [inline] |
ASTContext& clang::ASTUnit::getASTContext | ( | ) | [inline] |
StringRef ASTUnit::getASTFileName | ( | ) | const |
If this ASTUnit came from an AST file, returns the filename for it.
Definition at line 1685 of file ASTUnit.cpp.
References clang::serialization::ModuleFile::FileName, and isMainFileAST().
Definition at line 626 of file ASTUnit.cpp.
std::unique_ptr< llvm::MemoryBuffer > ASTUnit::getBufferForFile | ( | StringRef | Filename, |
std::string * | ErrorStr = nullptr |
||
) |
Definition at line 639 of file ASTUnit.cpp.
IntrusiveRefCntPtr<GlobalCodeCompletionAllocator> clang::ASTUnit::getCachedCompletionAllocator | ( | ) | [inline] |
llvm::StringMap<unsigned>& clang::ASTUnit::getCachedCompletionTypes | ( | ) | [inline] |
CodeCompletionTUInfo& clang::ASTUnit::getCodeCompletionTUInfo | ( | ) | [inline] |
unsigned& clang::ASTUnit::getCurrentTopLevelHashValue | ( | ) | [inline] |
Retrieve a reference to the current top-level name hash value.
Note: This is used internally by the top-level tracking action
Definition at line 597 of file ASTUnit.h.
Referenced by LoadFromCompilerInvocationAction().
Definition at line 632 of file ASTUnit.cpp.
const DiagnosticsEngine& clang::ASTUnit::getDiagnostics | ( | ) | const [inline] |
Definition at line 495 of file ASTUnit.h.
Referenced by LoadFromCompilerInvocationAction(), Reparse(), serialize(), and ~ASTUnit().
DiagnosticsEngine& clang::ASTUnit::getDiagnostics | ( | ) | [inline] |
Definition at line 2717 of file ASTUnit.cpp.
References clang::SourceManager::getLocForEndOfFile(), clang::SourceManager::getPreambleFileID(), and clang::FileID::isInvalid().
const FileManager& clang::ASTUnit::getFileManager | ( | ) | const [inline] |
Definition at line 521 of file ASTUnit.h.
Referenced by LoadFromCompilerInvocationAction().
FileManager& clang::ASTUnit::getFileManager | ( | ) | [inline] |
const FileSystemOptions& clang::ASTUnit::getFileSystemOpts | ( | ) | const [inline] |
const LangOptions& clang::ASTUnit::getLangOpts | ( | ) | const [inline] |
std::pair< PreprocessingRecord::iterator, PreprocessingRecord::iterator > ASTUnit::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.
Definition at line 2740 of file ASTUnit.cpp.
References isMainFileAST().
SourceLocation ASTUnit::getLocation | ( | const FileEntry * | File, |
unsigned | Line, | ||
unsigned | Col | ||
) | const |
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 2639 of file ASTUnit.cpp.
References clang::SourceManager::getMacroArgExpandedLocation(), getSourceManager(), SM, and clang::SourceManager::translateFileLineCol().
SourceLocation ASTUnit::getLocation | ( | const FileEntry * | File, |
unsigned | Offset | ||
) | const |
Get the source location for the given file:offset pair.
Definition at line 2646 of file ASTUnit.cpp.
References clang::SourceLocation::getLocWithOffset(), clang::SourceManager::getMacroArgExpandedLocation(), getSourceManager(), SM, and clang::SourceManager::translateFileLineCol().
StringRef ASTUnit::getMainFileName | ( | ) | const |
Definition at line 1667 of file ASTUnit.cpp.
References clang::FrontendInputFile::getBuffer(), clang::FrontendInputFile::getFile(), clang::SourceManager::getFileEntryForID(), clang::CompilerInvocation::getFrontendOpts(), clang::SourceManager::getMainFileID(), Input, clang::FrontendOptions::Inputs, and clang::FrontendInputFile::isFile().
Referenced by Reparse().
bool clang::ASTUnit::getOnlyLocalDecls | ( | ) | const [inline] |
StringRef clang::ASTUnit::getOriginalSourceFileName | ( | ) | [inline] |
bool clang::ASTUnit::getOwnsRemappedFileBuffers | ( | ) | const [inline] |
const FileEntry * ASTUnit::getPCHFile | ( | ) |
Get the PCH file if one was included.
Definition at line 2803 of file ASTUnit.cpp.
References PCHLocator().
const PreambleData& clang::ASTUnit::getPreambleData | ( | ) | const [inline] |
const Preprocessor& clang::ASTUnit::getPreprocessor | ( | ) | const [inline] |
Preprocessor& clang::ASTUnit::getPreprocessor | ( | ) | [inline] |
Sema& clang::ASTUnit::getSema | ( | ) | const [inline] |
Definition at line 511 of file ASTUnit.h.
Referenced by serialize().
const SourceManager& clang::ASTUnit::getSourceManager | ( | ) | const [inline] |
Definition at line 498 of file ASTUnit.h.
References SourceMgr.
Referenced by getLocation(), and LoadFromCompilerInvocationAction().
SourceManager& clang::ASTUnit::getSourceManager | ( | ) | [inline] |
Definition at line 2728 of file ASTUnit.cpp.
References clang::SourceManager::getLocForStartOfFile(), clang::SourceManager::getMainFileID(), and clang::FileID::isInvalid().
TranslationUnitKind clang::ASTUnit::getTranslationUnitKind | ( | ) | const [inline] |
bool clang::ASTUnit::hasSema | ( | ) | const [inline] |
Definition at line 2706 of file ASTUnit.cpp.
References clang::SourceManager::getMainFileID(), clang::SourceManager::isInFileID(), clang::FileID::isInvalid(), and clang::SourceLocation::isInvalid().
Definition at line 2695 of file ASTUnit.cpp.
References clang::SourceManager::getPreambleFileID(), clang::SourceManager::isInFileID(), clang::FileID::isInvalid(), and clang::SourceLocation::isInvalid().
bool clang::ASTUnit::isMainFileAST | ( | ) | const [inline] |
Definition at line 490 of file ASTUnit.h.
Referenced by getASTFileName(), getLocalPreprocessingEntities(), isModuleFile(), top_level_begin(), top_level_empty(), top_level_end(), top_level_size(), and visitLocalTopLevelDecls().
Returns true if the ASTUnit was constructed from a serialized module file.
Definition at line 2815 of file ASTUnit.cpp.
References clang::LangOptions::CurrentModule, and isMainFileAST().
bool clang::ASTUnit::isUnsafeToFree | ( | ) | const [inline] |
std::unique_ptr< ASTUnit > ASTUnit::LoadFromASTFile | ( | const std::string & | Filename, |
IntrusiveRefCntPtr< DiagnosticsEngine > | Diags, | ||
const FileSystemOptions & | FileSystemOpts, | ||
bool | OnlyLocalDecls = false , |
||
ArrayRef< RemappedFile > | RemappedFiles = None , |
||
bool | CaptureDiagnostics = false , |
||
bool | AllowPCHWithCompilerErrors = false , |
||
bool | UserFilesAreVolatile = false |
||
) | [static] |
Create a ASTUnit from an AST file.
Filename | - The AST file to load. |
Diags | - The diagnostics engine to use for reporting errors; its lifetime is expected to extend past that of the returned ASTUnit. |
Definition at line 657 of file ASTUnit.cpp.
References clang::PreprocessorOptions::addRemappedFile(), clang::ASTReader::ARR_None, clang::ASTReader::ConfigurationMismatch, Context, clang::ASTReader::Failure, clang::vfs::getRealFileSystem(), clang::ASTReader::HadErrors, clang::ASTReader::Missing, clang::serialization::MK_MainFile, clang::ASTReader::OutOfDate, clang::ASTReader::Success, and clang::ASTReader::VersionMismatch.
Referenced by clang::FrontendAction::BeginSourceFile(), and clang::ASTMergeAction::ExecuteAction().
ASTUnit * ASTUnit::LoadFromCommandLine | ( | const char ** | ArgBegin, |
const char ** | ArgEnd, | ||
IntrusiveRefCntPtr< DiagnosticsEngine > | Diags, | ||
StringRef | ResourceFilesPath, | ||
bool | OnlyLocalDecls = false , |
||
bool | CaptureDiagnostics = false , |
||
ArrayRef< RemappedFile > | RemappedFiles = None , |
||
bool | RemappedFilesKeepOriginalName = true , |
||
bool | PrecompilePreamble = false , |
||
TranslationUnitKind | TUKind = TU_Complete , |
||
bool | CacheCodeCompletionResults = false , |
||
bool | IncludeBriefCommentsInCodeCompletion = false , |
||
bool | AllowPCHWithCompilerErrors = false , |
||
bool | SkipFunctionBodies = false , |
||
bool | UserFilesAreVolatile = false , |
||
bool | ForSerialization = false , |
||
std::unique_ptr< ASTUnit > * | ErrAST = nullptr |
||
) | [static] |
LoadFromCommandLine - Create an ASTUnit from a vector of command line arguments, which must specify exactly one source file.
ArgBegin | - The beginning of the argument vector. |
ArgEnd | - The end of the argument vector. |
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. |
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. |
Definition at line 1917 of file ASTUnit.cpp.
References clang::PreprocessorOptions::AllowPCHWithCompilerErrors, clang::createInvocationFromCommandLine(), clang::createVFSFromCompilerInvocation(), and clang::PreprocessorOptions::RemappedFilesKeepOriginalName.
std::unique_ptr< ASTUnit > ASTUnit::LoadFromCompilerInvocation | ( | CompilerInvocation * | CI, |
IntrusiveRefCntPtr< DiagnosticsEngine > | Diags, | ||
bool | OnlyLocalDecls = false , |
||
bool | CaptureDiagnostics = false , |
||
bool | PrecompilePreamble = false , |
||
TranslationUnitKind | TUKind = TU_Complete , |
||
bool | CacheCodeCompletionResults = false , |
||
bool | IncludeBriefCommentsInCodeCompletion = false , |
||
bool | UserFilesAreVolatile = false |
||
) | [static] |
LoadFromCompilerInvocation - Create an ASTUnit from a source file, via a CompilerInvocation object.
CI | - The compiler invocation to use; it must have exactly one input source file. The ASTUnit takes ownership of the CompilerInvocation object. |
Diags | - The diagnostics engine to use for reporting errors; its lifetime is expected to extend past that of the returned ASTUnit. |
Definition at line 1881 of file ASTUnit.cpp.
References clang::createVFSFromCompilerInvocation(), and clang::CompilerInvocation::getFileSystemOpts().
ASTUnit * ASTUnit::LoadFromCompilerInvocationAction | ( | CompilerInvocation * | CI, |
IntrusiveRefCntPtr< DiagnosticsEngine > | Diags, | ||
ASTFrontendAction * | Action = nullptr , |
||
ASTUnit * | Unit = nullptr , |
||
bool | Persistent = true , |
||
StringRef | ResourceFilesPath = StringRef() , |
||
bool | OnlyLocalDecls = false , |
||
bool | CaptureDiagnostics = false , |
||
bool | PrecompilePreamble = false , |
||
bool | CacheCodeCompletionResults = false , |
||
bool | IncludeBriefCommentsInCodeCompletion = 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.
CI | - The compiler invocation to use; it must have exactly one input source file. The ASTUnit takes ownership of the CompilerInvocation object. |
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 |
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 1716 of file ASTUnit.cpp.
References Action, clang::FrontendAction::BeginSourceFile(), create(), clang::TargetInfo::CreateTargetInfo(), clang::FrontendOptions::DisableFree, clang::FrontendAction::EndSourceFile(), clang::FrontendAction::Execute(), getCurrentTopLevelHashValue(), clang::CompilerInvocationBase::getDiagnosticOpts(), getDiagnostics(), getFileManager(), clang::CompilerInvocation::getFrontendOpts(), clang::CompilerInvocationBase::getHeaderSearchOpts(), clang::CompilerInvocationBase::getPreprocessorOpts(), getSourceManager(), clang::FrontendAction::getTranslationUnitKind(), clang::IK_AST, clang::IK_LLVM_IR, clang::ProcessWarningOptions(), clang::HeaderSearchOptions::ResourceDir, clang::PreprocessorOptions::RetainRemappedFileBuffers, and clang::TU_Complete.
Referenced by clang::arcmt::MigrationProcess::applyTransform(), and clang::arcmt::checkForManualIssues().
GlobalModuleIndex* clang::ASTUnit::loadGlobalModuleIndex | ( | SourceLocation | TriggerLoc | ) | [inline, override, virtual] |
Load, create, or return global module. This function returns an existing global module index, if one had already been loaded or created, or loads one if it exists, or creates one if it doesn't exist. Also, importantly, if the index doesn't cover all the modules in the module map, it will be update to do so here, because of its use in searching for needed module imports and associated fixit messages.
TriggerLoc | The location for what triggered the load. |
Implements clang::ModuleLoader.
ModuleLoadResult clang::ASTUnit::loadModule | ( | SourceLocation | ImportLoc, |
ModuleIdPath | Path, | ||
Module::NameVisibilityKind | Visibility, | ||
bool | IsInclusionDirective | ||
) | [inline, override, virtual] |
Attempt to load the given module.
This routine attempts to load the module described by the given parameters.
ImportLoc | The location of the 'import' keyword. |
Path | The identifiers (and their locations) of the module "path", e.g., "std.vector" would be split into "std" and "vector". |
Visibility | The visibility provided for the names in the loaded module. |
IsInclusionDirective | Indicates that this module is being loaded implicitly, due to the presence of an inclusion directive. Otherwise, it is being loaded due to an import declaration. |
Implements clang::ModuleLoader.
bool clang::ASTUnit::lookupMissingImports | ( | StringRef | Name, |
SourceLocation | TriggerLoc | ||
) | [inline, override, virtual] |
Check global module index for missing imports.
Name | The symbol name to look for. |
TriggerLoc | The location for what triggered the load. |
Implements clang::ModuleLoader.
void clang::ASTUnit::makeModuleVisible | ( | Module * | Mod, |
Module::NameVisibilityKind | Visibility, | ||
SourceLocation | ImportLoc, | ||
bool | Complain | ||
) | [inline, override, virtual] |
Make the given module visible.
Implements clang::ModuleLoader.
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 2656 of file ASTUnit.cpp.
References clang::ASTUnit::PreambleData::empty(), clang::SourceManager::getLocForStartOfFile(), clang::SourceLocation::getLocWithOffset(), clang::SourceManager::getMainFileID(), clang::SourceManager::getPreambleFileID(), clang::SourceManager::isInFileID(), clang::FileID::isInvalid(), clang::SourceLocation::isInvalid(), and clang::ASTUnit::PreambleData::size().
Referenced by mapRangeFromPreamble().
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 2677 of file ASTUnit.cpp.
References clang::ASTUnit::PreambleData::empty(), clang::SourceManager::getLocForStartOfFile(), clang::SourceLocation::getLocWithOffset(), clang::SourceManager::getMainFileID(), clang::SourceManager::getPreambleFileID(), clang::SourceManager::isInFileID(), clang::FileID::isInvalid(), clang::SourceLocation::isInvalid(), and clang::ASTUnit::PreambleData::size().
Referenced by mapRangeToPreamble().
SourceRange clang::ASTUnit::mapRangeFromPreamble | ( | SourceRange | R | ) | [inline] |
Definition at line 626 of file ASTUnit.h.
References clang::SourceRange::getBegin(), clang::SourceRange::getEnd(), and mapLocationFromPreamble().
SourceRange clang::ASTUnit::mapRangeToPreamble | ( | SourceRange | R | ) | [inline] |
Definition at line 632 of file ASTUnit.h.
References clang::SourceRange::getBegin(), clang::SourceRange::getEnd(), and mapLocationToPreamble().
bool ASTUnit::Reparse | ( | ArrayRef< RemappedFile > | RemappedFiles = None | ) |
Reparse the source files using the same command-line options that were originally used to produce this translation unit.
Definition at line 2003 of file ASTUnit.cpp.
References clang::PreprocessorOptions::addRemappedFile(), clang::PreprocessorOptions::clearRemappedFiles(), clang::CompilerInvocationBase::getDiagnosticOpts(), getDiagnostics(), getMainFileName(), getPreambleFile(), clang::CompilerInvocationBase::getPreprocessorOpts(), clang::ProcessWarningOptions(), clang::PreprocessorOptions::RemappedFileBuffers, clang::DiagnosticsEngine::Reset(), and clang::DiagnosticsEngine::setNumWarnings().
bool ASTUnit::Save | ( | StringRef | File | ) |
Save this translation unit to a file with the given name.
Definition at line 2439 of file ASTUnit.cpp.
References serialize().
bool ASTUnit::serialize | ( | raw_ostream & | OS | ) |
Serialize this translation unit with the given output stream.
Definition at line 2485 of file ASTUnit.cpp.
References getDiagnostics(), getSema(), clang::DiagnosticsEngine::hasErrorOccurred(), and serializeUnit().
Referenced by Save().
void clang::ASTUnit::setASTContext | ( | ASTContext * | ctx | ) | [inline] |
void clang::ASTUnit::setOwnsRemappedFileBuffers | ( | bool | val | ) | [inline] |
void ASTUnit::setPreprocessor | ( | Preprocessor * | pp | ) |
Definition at line 261 of file ASTUnit.cpp.
void clang::ASTUnit::setUnsafeToFree | ( | bool | Value | ) | [inline] |
stored_diag_const_iterator clang::ASTUnit::stored_diag_begin | ( | ) | const [inline] |
stored_diag_iterator clang::ASTUnit::stored_diag_begin | ( | ) | [inline] |
stored_diag_const_iterator clang::ASTUnit::stored_diag_end | ( | ) | const [inline] |
stored_diag_iterator clang::ASTUnit::stored_diag_end | ( | ) | [inline] |
unsigned clang::ASTUnit::stored_diag_size | ( | ) | const [inline] |
top_level_iterator clang::ASTUnit::top_level_begin | ( | ) | [inline] |
Definition at line 550 of file ASTUnit.h.
References isMainFileAST().
Referenced by visitLocalTopLevelDecls().
bool clang::ASTUnit::top_level_empty | ( | ) | const [inline] |
Definition at line 569 of file ASTUnit.h.
References isMainFileAST().
top_level_iterator clang::ASTUnit::top_level_end | ( | ) | [inline] |
Definition at line 557 of file ASTUnit.h.
References isMainFileAST().
Referenced by visitLocalTopLevelDecls().
std::size_t clang::ASTUnit::top_level_size | ( | ) | const [inline] |
Definition at line 564 of file ASTUnit.h.
References isMainFileAST().
bool ASTUnit::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).
Definition at line 2754 of file ASTUnit.cpp.
References isMainFileAST(), top_level_begin(), and top_level_end().
friend class ConcurrencyCheck [friend] |