13#ifndef LLVM_CLANG_FRONTEND_ASTUNIT_H
14#define LLVM_CLANG_FRONTEND_ASTUNIT_H
33#include "llvm/ADT/ArrayRef.h"
34#include "llvm/ADT/DenseMap.h"
35#include "llvm/ADT/IntrusiveRefCntPtr.h"
36#include "llvm/ADT/STLExtras.h"
37#include "llvm/ADT/SmallVector.h"
38#include "llvm/ADT/StringMap.h"
39#include "llvm/ADT/StringRef.h"
40#include "llvm/ADT/iterator_range.h"
41#include "llvm/Bitstream/BitstreamWriter.h"
42#include "llvm/Support/VirtualFileSystem.h"
95 std::unique_ptr<LangOptions> LangOpts;
96 std::unique_ptr<CodeGenOptions> CodeGenOpts;
101 std::shared_ptr<DiagnosticOptions> DiagOpts;
105 std::shared_ptr<ModuleCache> ModCache;
106 std::unique_ptr<HeaderSearch> HeaderInfo;
108 std::shared_ptr<Preprocessor> PP;
110 std::shared_ptr<TargetOptions> TargetOpts;
111 std::unique_ptr<HeaderSearchOptions> HSOpts;
112 std::shared_ptr<PreprocessorOptions> PPOpts;
114 bool HadModuleLoaderFatalFailure =
false;
115 bool StorePreamblesInMemory =
false;
118 struct ASTWriterData {
120 llvm::BitstreamWriter Stream;
124 : Stream(Buffer), Writer(Stream, Buffer, ModCache, CGOpts, {}) {}
126 std::unique_ptr<ASTWriterData> WriterData;
129 std::string PreambleStoragePath;
133 std::unique_ptr<ASTConsumer> Consumer;
137 std::unique_ptr<Sema> TheSema;
141 std::shared_ptr<CompilerInvocation> Invocation;
144 std::shared_ptr<CompilerInvocation> CCInvocation;
148 std::shared_ptr<CompilerInvocation> ModifiedInvocation;
156 bool OnlyLocalDecls =
false;
171 bool OwnsRemappedFileBuffers =
true;
180 std::vector<Decl*> TopLevelDecls;
184 using FileDeclsTy = llvm::DenseMap<FileID, std::unique_ptr<LocDeclsTy>>;
188 FileDeclsTy FileDecls;
191 std::string OriginalSourceFile;
209 unsigned NumStoredDiagnosticsFromDriver = 0;
220 unsigned PreambleRebuildCountdown = 0;
223 unsigned PreambleCounter = 0;
231 llvm::StringMap<SourceLocation> PreambleSrcLocCache;
234 std::optional<PrecompiledPreamble> Preamble;
239 std::unique_ptr<llvm::MemoryBuffer> SavedMainFileBuffer;
247 unsigned NumWarningsInPreamble = 0;
251 std::vector<LocalDeclID> TopLevelDeclsInPreamble;
254 bool ShouldCacheCodeCompletionResults : 1;
258 bool IncludeBriefCommentsInCodeCompletion : 1;
262 bool UserFilesAreVolatile : 1;
267 void clearFileLevelDecls();
311 return CachedCompletionTypes;
315 std::shared_ptr<GlobalCodeCompletionAllocator>
317 return CachedCompletionAllocator;
322 CCTUInfo = std::make_unique<CodeCompletionTUInfo>(
323 std::make_shared<GlobalCodeCompletionAllocator>());
329 std::shared_ptr<GlobalCodeCompletionAllocator> CachedCompletionAllocator;
331 std::unique_ptr<CodeCompletionTUInfo> CCTUInfo;
334 std::vector<CachedCodeCompletionResult> CachedCompletionResults;
338 llvm::StringMap<unsigned> CachedCompletionTypes;
345 unsigned CompletionCacheTopLevelHashValue = 0;
352 unsigned PreambleTopLevelHashValue = 0;
356 unsigned CurrentTopLevelHashValue = 0;
360 LLVM_PREFERRED_TYPE(
bool)
361 unsigned UnsafeToFree : 1;
368 void CacheCodeCompletionResults();
371 void ClearCachedCompletionResults();
373 explicit ASTUnit(
bool MainFileIsAST);
375 bool Parse(std::shared_ptr<PCHContainerOperations> PCHContainerOps,
376 std::unique_ptr<llvm::MemoryBuffer> OverrideMainBuffer,
379 std::unique_ptr<llvm::MemoryBuffer> getMainBufferWithPrecompiledPreamble(
380 std::shared_ptr<PCHContainerOperations> PCHContainerOps,
383 unsigned MaxLines = 0);
384 void RealizeTopLevelDeclsFromPreamble();
397 class ConcurrencyState {
403 ConcurrencyState(
const ConcurrencyState &) =
delete;
404 ConcurrencyState &operator=(
const ConcurrencyState &) =
delete;
409 ConcurrencyState ConcurrencyCheckValue;
419 Self.ConcurrencyCheckValue.start();
423 Self.ConcurrencyCheckValue.finish();
457 Ctx = std::move(ctx);
470 bool hasSema()
const {
return (
bool)TheSema; }
473 assert(TheSema &&
"ASTUnit does not have a Sema object!");
478 assert(LangOpts &&
"ASTUnit does not have language options");
483 assert(CodeGenOpts &&
"ASTUnit does not have codegen options");
488 assert(HSOpts &&
"ASTUnit does not have header search options");
493 assert(PPOpts &&
"ASTUnit does not have preprocessor options");
499 return FileMgr->getVirtualFileSystemPtr();
511 return OriginalSourceFile;
530 assert(!
isMainFileAST() &&
"Invalid call for AST based ASTUnit!");
531 if (!TopLevelDeclsInPreamble.empty())
532 RealizeTopLevelDeclsFromPreamble();
533 return TopLevelDecls.begin();
537 assert(!
isMainFileAST() &&
"Invalid call for AST based ASTUnit!");
538 if (!TopLevelDeclsInPreamble.empty())
539 RealizeTopLevelDeclsFromPreamble();
540 return TopLevelDecls.end();
544 assert(!
isMainFileAST() &&
"Invalid call for AST based ASTUnit!");
545 return TopLevelDeclsInPreamble.size() + TopLevelDecls.size();
549 assert(!
isMainFileAST() &&
"Invalid call for AST based ASTUnit!");
550 return TopLevelDeclsInPreamble.empty() && TopLevelDecls.empty();
555 TopLevelDecls.push_back(D);
578 unsigned Line,
unsigned Col)
const;
617 return StoredDiagnostics.begin();
621 return StoredDiagnostics.begin();
625 return StoredDiagnostics.end();
629 return StoredDiagnostics.end();
646 if (NumStoredDiagnosticsFromDriver > StoredDiagnostics.size())
647 NumStoredDiagnosticsFromDriver = 0;
648 return StoredDiagnostics.begin() + NumStoredDiagnosticsFromDriver;
652 std::vector<CachedCodeCompletionResult>::iterator;
655 return CachedCompletionResults.begin();
659 return CachedCompletionResults.end();
663 return CachedCompletionResults.size();
669 llvm::iterator_range<PreprocessingRecord::iterator>
689 std::unique_ptr<llvm::MemoryBuffer>
703 static std::unique_ptr<ASTUnit>
704 create(std::shared_ptr<CompilerInvocation> CI,
705 std::shared_ptr<DiagnosticOptions> DiagOpts,
733 std::shared_ptr<DiagnosticOptions> DiagOpts,
737 bool OnlyLocalDecls =
false,
739 bool AllowASTWithCompilerErrors =
false,
740 bool UserFilesAreVolatile =
false);
757 bool LoadFromCompilerInvocation(
758 std::shared_ptr<PCHContainerOperations> PCHContainerOps,
759 unsigned PrecompilePreambleAfterNParses,
792 std::shared_ptr<CompilerInvocation> CI,
793 std::shared_ptr<PCHContainerOperations> PCHContainerOps,
794 std::shared_ptr<DiagnosticOptions> DiagOpts,
797 bool Persistent =
true, StringRef ResourceFilesPath = StringRef(),
798 bool OnlyLocalDecls =
false,
800 unsigned PrecompilePreambleAfterNParses = 0,
801 bool CacheCodeCompletionResults =
false,
802 bool UserFilesAreVolatile =
false,
803 std::unique_ptr<ASTUnit> *ErrAST =
nullptr);
819 static std::unique_ptr<ASTUnit> LoadFromCompilerInvocation(
820 std::shared_ptr<CompilerInvocation> CI,
821 std::shared_ptr<PCHContainerOperations> PCHContainerOps,
822 std::shared_ptr<DiagnosticOptions> DiagOpts,
826 unsigned PrecompilePreambleAfterNParses = 0,
828 bool CacheCodeCompletionResults =
false,
829 bool IncludeBriefCommentsInCodeCompletion =
false,
830 bool UserFilesAreVolatile =
false);
833 const char **ArgBegin,
const char **ArgEnd,
834 std::shared_ptr<PCHContainerOperations> PCHContainerOps,
835 std::shared_ptr<DiagnosticOptions> DiagOpts,
837 bool StorePreamblesInMemory, StringRef PreambleStoragePath,
840 bool RemappedFilesKeepOriginalName,
842 bool CacheCodeCompletionResults,
843 bool IncludeBriefCommentsInCodeCompletion,
844 bool AllowPCHWithCompilerErrors,
846 bool UserFilesAreVolatile,
bool ForSerialization,
847 bool RetainExcludedConditionalBlocks,
848 std::optional<StringRef> ModuleFormat, std::unique_ptr<ASTUnit> *ErrAST,
862 bool Reparse(std::shared_ptr<PCHContainerOperations> PCHContainerOps,
897 bool IncludeCodePatterns,
bool IncludeBriefComments,
899 std::shared_ptr<PCHContainerOperations> PCHContainerOps,
906 std::unique_ptr<SyntaxOnlyAction> Act);
924 bool CaptureNonErrorsFromIncludes =
true;
932 bool CaptureNonErrorsFromIncludes);
947 std::unique_ptr<DiagnosticConsumer> OwningPreviousClient;
Defines the clang::ASTContext interface.
Defines the Diagnostic-related interfaces.
Defines the clang::FileSystemOptions interface.
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.
Defines the clang::LangOptions interface.
static DiagnosticBuilder Diag(DiagnosticsEngine *Diags, const LangOptions &Features, FullSourceLoc TokLoc, const char *TokBegin, const char *TokRangeBegin, const char *TokRangeEnd, unsigned DiagID)
Produce a diagnostic highlighting some portion of a literal.
Defines the clang::SourceLocation class and associated facilities.
Defines the SourceManager interface.
Defines the clang::TargetOptions class.
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
An abstract interface that should be implemented by listeners that want to be notified when an AST en...
Reads an AST files chain containing the contents of a translation unit.
ConcurrencyCheck(ASTUnit &Self)
Utility class for loading a ASTContext from an AST file.
const PreprocessorOptions & getPreprocessorOpts() const
unsigned & getCurrentTopLevelHashValue()
Retrieve a reference to the current top-level name hash value.
ASTContext & getASTContext()
CodeCompletionTUInfo & getCodeCompletionTUInfo()
void enableSourceFileDiagnostics()
Enable source-range based diagnostic messages.
stored_diag_iterator stored_diag_end()
void addFileLevelDecl(Decl *D)
Add a new local file-level declaration.
const FileManager & getFileManager() const
void setOwnsRemappedFileBuffers(bool val)
bool isUnsafeToFree() const
void CodeComplete(StringRef File, unsigned Line, unsigned Column, ArrayRef< RemappedFile > RemappedFiles, bool IncludeMacros, bool IncludeCodePatterns, bool IncludeBriefComments, CodeCompleteConsumer &Consumer, std::shared_ptr< PCHContainerOperations > PCHContainerOps, llvm::IntrusiveRefCntPtr< DiagnosticsEngine > Diag, LangOptions &LangOpts, llvm::IntrusiveRefCntPtr< SourceManager > SourceMgr, llvm::IntrusiveRefCntPtr< 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.
cached_completion_iterator cached_completion_end()
SourceRange mapRangeFromPreamble(SourceRange R) const
static std::unique_ptr< ASTUnit > LoadFromASTFile(StringRef Filename, const PCHContainerReader &PCHContainerRdr, WhatToLoad ToLoad, IntrusiveRefCntPtr< llvm::vfs::FileSystem > VFS, std::shared_ptr< DiagnosticOptions > DiagOpts, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, const FileSystemOptions &FileSystemOpts, const HeaderSearchOptions &HSOpts, const LangOptions *LangOpts=nullptr, bool OnlyLocalDecls=false, CaptureDiagsKind CaptureDiagnostics=CaptureDiagsKind::None, bool AllowASTWithCompilerErrors=false, bool UserFilesAreVolatile=false)
Create a ASTUnit from an AST file.
bool top_level_empty() const
llvm::IntrusiveRefCntPtr< ASTContext > getASTContextPtr()
bool serialize(raw_ostream &OS)
Serialize this translation unit with the given output stream.
llvm::iterator_range< stored_diag_iterator > diags_range
bool getOwnsRemappedFileBuffers() const
const CodeGenOptions & getCodeGenOpts() const
const FileSystemOptions & getFileSystemOpts() const
ASTDeserializationListener * getDeserializationListener()
stored_diag_const_iterator stored_diag_end() const
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 thi...
void setUnsafeToFree(bool Value)
std::unique_ptr< llvm::MemoryBuffer > getBufferForFile(StringRef Filename, std::string *ErrorStr=nullptr)
llvm::StringMap< unsigned > & getCachedCompletionTypes()
Retrieve the mapping from formatted type names to unique type identifiers.
const DiagnosticsEngine & getDiagnostics() const
SourceLocation getLocation(const FileEntry *File, unsigned Line, unsigned Col) const
Get the source location for the given file:line:col triplet.
void ResetForParse()
Free data that will be re-generated on the next parse.
llvm::IntrusiveRefCntPtr< SourceManager > getSourceManagerPtr()
bool getOnlyLocalDecls() const
InputKind getInputKind() const
Determine the input kind this AST unit represents.
std::optional< StringRef > getPCHFile()
Get the PCH file if one was included.
StringRef getMainFileName() const
ASTUnit(const ASTUnit &)=delete
stored_diag_const_iterator stored_diag_begin() const
SourceLocation mapLocationToPreamble(SourceLocation Loc) const
If Loc is a local location of the main file but inside the preamble chunk, returns the corresponding ...
cached_completion_iterator cached_completion_begin()
const LangOptions & getLangOpts() const
bool isMainFileAST() const
std::vector< Decl * >::iterator top_level_iterator
const SourceManager & getSourceManager() const
ASTUnit & operator=(const ASTUnit &)=delete
unsigned stored_diag_size() const
const_diags_range storedDiagnostics() const
Preprocessor & getPreprocessor()
DiagnosticsEngine & getDiagnostics()
const StoredDiagnostic * stored_diag_const_iterator
SourceLocation getEndOfPreambleFileID() const
std::vector< CachedCodeCompletionResult >::iterator cached_completion_iterator
stored_diag_iterator stored_diag_afterDriver_begin()
llvm::IntrusiveRefCntPtr< DiagnosticsEngine > getDiagnosticsPtr()
static ASTUnit * LoadFromCompilerInvocationAction(std::shared_ptr< CompilerInvocation > CI, std::shared_ptr< PCHContainerOperations > PCHContainerOps, std::shared_ptr< DiagnosticOptions > DiagOpts, 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 pro...
@ LoadPreprocessorOnly
Load options and the preprocessor state.
@ LoadASTOnly
Load the AST, but do not restore Sema state.
@ LoadEverything
Load everything, including Sema.
top_level_iterator top_level_end()
SourceLocation getStartOfMainFileID() const
SourceRange mapRangeToPreamble(SourceRange R) const
diags_range storedDiagnostics()
FileManager & getFileManager()
IntrusiveRefCntPtr< ASTReader > getASTReader() const
IntrusiveRefCntPtr< FileManager > getFileManagerPtr()
bool(*)(void *context, const Decl *D) DeclVisitorFn
Type for a function iterating over a number of declarations.
StoredDiagnostic * stored_diag_iterator
bool visitLocalTopLevelDecls(void *context, DeclVisitorFn Fn)
Iterate over local declarations (locally parsed if this is a parsed source file or the loaded declara...
IntrusiveRefCntPtr< llvm::vfs::FileSystem > getVirtualFileSystemPtr()
llvm::iterator_range< PreprocessingRecord::iterator > getLocalPreprocessingEntities() const
Returns an iterator range for the local preprocessing entities of the local Preprocessor,...
StringRef getOriginalSourceFileName() const
top_level_iterator top_level_begin()
ASTMutationListener * getASTMutationListener()
stored_diag_iterator stored_diag_begin()
TranslationUnitKind getTranslationUnitKind() const
Determine what kind of translation unit this AST represents.
std::shared_ptr< Preprocessor > getPreprocessorPtr() const
void setPreprocessor(std::shared_ptr< Preprocessor > pp)
StringRef getASTFileName() const
If this ASTUnit came from an AST file, returns the filename for it.
bool Save(StringRef File)
Save this translation unit to a file with the given name.
SourceManager & getSourceManager()
const HeaderSearchOptions & getHeaderSearchOpts() const
friend std::unique_ptr< ASTUnit > CreateASTUnitFromCommandLine(const char **ArgBegin, const char **ArgEnd, std::shared_ptr< PCHContainerOperations > PCHContainerOps, std::shared_ptr< DiagnosticOptions > DiagOpts, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, StringRef ResourceFilesPath, bool StorePreamblesInMemory, StringRef PreambleStoragePath, bool OnlyLocalDecls, CaptureDiagsKind CaptureDiagnostics, ArrayRef< ASTUnit::RemappedFile > RemappedFiles, bool RemappedFilesKeepOriginalName, unsigned PrecompilePreambleAfterNParses, TranslationUnitKind TUKind, bool CacheCodeCompletionResults, bool IncludeBriefCommentsInCodeCompletion, bool AllowPCHWithCompilerErrors, SkipFunctionBodiesScope SkipFunctionBodies, bool SingleFileParse, bool UserFilesAreVolatile, bool ForSerialization, bool RetainExcludedConditionalBlocks, std::optional< StringRef > ModuleFormat, std::unique_ptr< ASTUnit > *ErrAST, IntrusiveRefCntPtr< llvm::vfs::FileSystem > VFS)
Create an ASTUnit from a vector of command line arguments, which must specify exactly one source file...
void setASTContext(llvm::IntrusiveRefCntPtr< ASTContext > ctx)
unsigned getPreambleCounterForTests() const
unsigned cached_completion_size() const
static std::unique_ptr< ASTUnit > create(std::shared_ptr< CompilerInvocation > CI, std::shared_ptr< DiagnosticOptions > DiagOpts, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, CaptureDiagsKind CaptureDiagnostics, bool UserFilesAreVolatile)
Create a ASTUnit. Gets ownership of the passed CompilerInvocation.
void addTopLevelDecl(Decl *D)
Add a new top-level declaration.
const Preprocessor & getPreprocessor() const
std::shared_ptr< GlobalCodeCompletionAllocator > getCachedCompletionAllocator()
Retrieve the allocator used to cache global code completions.
llvm::iterator_range< stored_diag_const_iterator > const_diags_range
bool isInMainFileID(SourceLocation Loc) const
bool isModuleFile() const
Returns true if the ASTUnit was constructed from a serialized module file.
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.
const ASTContext & getASTContext() const
bool isInPreambleFileID(SourceLocation Loc) const
SourceLocation mapLocationFromPreamble(SourceLocation Loc) const
If Loc is a loaded location from the preamble, returns the corresponding local location of the main f...
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.
std::size_t top_level_size() const
Writes an AST file containing the contents of a translation unit.
CaptureDroppedDiagnostics(const CaptureDroppedDiagnostics &)=delete
~CaptureDroppedDiagnostics()
CaptureDroppedDiagnostics(CaptureDiagsKind CaptureDiagnostics, DiagnosticsEngine &Diags, SmallVectorImpl< StoredDiagnostic > *StoredDiags, SmallVectorImpl< StandaloneDiagnostic > *StandaloneDiags)
CaptureDroppedDiagnostics & operator=(const CaptureDroppedDiagnostics &)=delete
Abstract interface for a consumer of code-completion information.
A "string" used to describe how code completion can be performed for an entity.
CodeGenOptions - Track various options which control how the code is optimized and passed to the back...
CompilerInstance - Helper class for managing a single instance of the Clang compiler.
Helper class for holding the data necessary to invoke the compiler.
Decl - This represents one declaration (or definition), e.g.
Abstract interface, implemented by clients of the front-end, which formats and prints fully processed...
DiagnosticConsumer()=default
A little helper class (which is basically a smart pointer that forwards info from DiagnosticsEngine a...
Concrete class used by the front-end to report problems and issues.
Level
The level of the diagnostic, after it has been through mapping.
Cached information about one file (either on disk or in the virtual file system).
An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...
Implements support for file system lookup, file system caching, and directory search management.
Keeps track of options that affect how file operations are performed.
Diagnostic consumer that saves each diagnostic it is given.
void BeginSourceFile(const LangOptions &LangOpts, const Preprocessor *PP=nullptr) override
Callback to inform the diagnostic client that processing of a source file is beginning.
FilterAndStoreDiagnosticConsumer(SmallVectorImpl< StoredDiagnostic > *StoredDiags, SmallVectorImpl< StandaloneDiagnostic > *StandaloneDiags, bool CaptureNonErrorsFromIncludes)
void HandleDiagnostic(DiagnosticsEngine::Level Level, const Diagnostic &Info) override
Handle this diagnostic, reporting it to the user or capturing it to a log as needed.
Abstract base class for actions which can be performed by the frontend.
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
The module cache used for compiling modules implicitly.
A registry of PCHContainerWriter and -Reader objects for different formats.
This abstract interface provides operations for unwrapping containers for serialized ASTs (precompile...
PreprocessorOptions - This class is used for passing the various options used in preprocessor initial...
Engages in a tight little dance with the lexer to efficiently preprocess tokens.
Sema - This implements semantic analysis and AST building for C.
Encodes a location in the source.
This class handles loading and caching of source files into memory.
A trivial tuple used to represent a source range.
Represents a diagnostic in a form that can be retained until its corresponding source manager is dest...
Exposes information about the current target.
A module loader that doesn't know how to create or load modules.
CXCursorKind
Describes the kind of entity that a cursor refers to.
CXAvailabilityKind
Describes the availability of a particular entity, which indicates whether the use of this entity wil...
Top level wrappers for InstallAPI frontend operations.
SkipFunctionBodiesScope
Enumerates the available scopes for skipping function bodies.
@ Parse
Parse the block; this code is always used.
SimplifiedTypeClass
A simplified classification of types used when determining "similar" types for code completion.
CaptureDiagsKind
Enumerates the available kinds for capturing diagnostics.
@ AllWithoutNonErrorsFromIncludes
TranslationUnitKind
Describes the kind of translation unit being processed.
@ TU_Complete
The translation unit is a complete translation unit.
@ None
The alignment was not explicit in code.
Diagnostic wrappers for TextAPI types for error reporting.
A cached code-completion result, which may be introduced in one of many different contexts.
unsigned Type
The type of a non-macro completion result, stored as a unique integer used by the string map of cache...
CXCursorKind Kind
The libclang cursor kind corresponding to this code-completion result.
CXAvailabilityKind Availability
The availability of this code-completion result.
unsigned Priority
The priority given to this code-completion result.
SimplifiedTypeClass TypeClass
The simplified type class for a non-macro completion result.
uint64_t ShowInContexts
A bitmask that indicates which code-completion contexts should contain this completion result.
CodeCompletionString * Completion
The code-completion string corresponding to this completion result.