clang 22.0.0git
clang::SourceManager Class Reference

This class handles loading and caching of source files into memory. More...

#include "clang/Basic/SourceManager.h"

Inheritance diagram for clang::SourceManager:
[legend]

Classes

struct  MemoryBufferSizes

Public Types

using fileinfo_iterator

Public Member Functions

 SourceManager (DiagnosticsEngine &Diag, FileManager &FileMgr, bool UserFilesAreVolatile=false)
 SourceManager (const SourceManager &)=delete
SourceManageroperator= (const SourceManager &)=delete
 ~SourceManager ()
void clearIDTables ()
void initializeForReplay (const SourceManager &Old)
 Initialize this source manager suitably to replay the compilation described by Old.
DiagnosticsEnginegetDiagnostics () const
FileManagergetFileManager () const
void setOverridenFilesKeepOriginalName (bool value)
 Set true if the SourceManager should report the original file name for contents of files that were overridden by other files.
bool userFilesAreVolatile () const
 True if non-system source files should be treated as volatile (likely to change while trying to use them).
ModuleBuildStack getModuleBuildStack () const
 Retrieve the module build stack.
void setModuleBuildStack (ModuleBuildStack stack)
 Set the module build stack.
void pushModuleBuildStack (StringRef moduleName, FullSourceLoc importLoc)
 Push an entry to the module build stack.
FileID getMainFileID () const
 Returns the FileID of the main source file.
void setMainFileID (FileID FID)
 Set the file ID for the main source file.
bool isMainFile (const FileEntry &SourceFile)
 Returns true when the given FileEntry corresponds to the main file.
void setPreambleFileID (FileID Preamble)
 Set the file ID for the precompiled preamble.
FileID getPreambleFileID () const
 Get the file ID for the precompiled preamble if there is one.
FileID createFileID (FileEntryRef SourceFile, SourceLocation IncludePos, SrcMgr::CharacteristicKind FileCharacter, int LoadedID=0, SourceLocation::UIntTy LoadedOffset=0)
 Create a new FileID that represents the specified file being #included from the specified IncludePosition.
FileID createFileID (std::unique_ptr< llvm::MemoryBuffer > Buffer, SrcMgr::CharacteristicKind FileCharacter=SrcMgr::C_User, int LoadedID=0, SourceLocation::UIntTy LoadedOffset=0, SourceLocation IncludeLoc=SourceLocation())
 Create a new FileID that represents the specified memory buffer.
FileID createFileID (const llvm::MemoryBufferRef &Buffer, SrcMgr::CharacteristicKind FileCharacter=SrcMgr::C_User, int LoadedID=0, SourceLocation::UIntTy LoadedOffset=0, SourceLocation IncludeLoc=SourceLocation())
 Create a new FileID that represents the specified memory buffer.
FileID getOrCreateFileID (FileEntryRef SourceFile, SrcMgr::CharacteristicKind FileCharacter)
 Get the FileID for SourceFile if it exists.
SourceLocation createMacroArgExpansionLoc (SourceLocation SpellingLoc, SourceLocation ExpansionLoc, unsigned Length)
 Creates an expansion SLocEntry for the substitution of an argument into a function-like macro's body.
SourceLocation createExpansionLoc (SourceLocation SpellingLoc, SourceLocation ExpansionLocStart, SourceLocation ExpansionLocEnd, unsigned Length, bool ExpansionIsTokenRange=true, int LoadedID=0, SourceLocation::UIntTy LoadedOffset=0)
 Creates an expansion SLocEntry for a macro use.
SourceLocation createTokenSplitLoc (SourceLocation SpellingLoc, SourceLocation TokenStart, SourceLocation TokenEnd)
 Return a new SourceLocation that encodes that the token starting at TokenStart ends prematurely at TokenEnd.
std::optional< llvm::MemoryBufferRef > getMemoryBufferForFileOrNone (FileEntryRef File)
 Retrieve the memory buffer associated with the given file.
llvm::MemoryBufferRef getMemoryBufferForFileOrFake (FileEntryRef File)
 Retrieve the memory buffer associated with the given file.
void overrideFileContents (FileEntryRef SourceFile, const llvm::MemoryBufferRef &Buffer)
 Override the contents of the given source file by providing an already-allocated buffer.
void overrideFileContents (FileEntryRef SourceFile, std::unique_ptr< llvm::MemoryBuffer > Buffer)
 Override the contents of the given source file by providing an already-allocated buffer.
void overrideFileContents (const FileEntry *SourceFile, FileEntryRef NewFile)
 Override the given source file with another one.
bool isFileOverridden (const FileEntry *File) const
 Returns true if the file contents have been overridden.
OptionalFileEntryRef bypassFileContentsOverride (FileEntryRef File)
 Bypass the overridden contents of a file.
void setFileIsTransient (FileEntryRef SourceFile)
 Specify that a file is transient.
void setAllFilesAreTransient (bool Transient)
 Specify that all files that are read during this compilation are transient.
std::optional< llvm::MemoryBufferRef > getBufferOrNone (FileID FID, SourceLocation Loc=SourceLocation()) const
 Return the buffer for the specified FileID.
llvm::MemoryBufferRef getBufferOrFake (FileID FID, SourceLocation Loc=SourceLocation()) const
 Return the buffer for the specified FileID.
const FileEntrygetFileEntryForID (FileID FID) const
 Returns the FileEntry record for the provided FileID.
OptionalFileEntryRef getFileEntryRefForID (FileID FID) const
 Returns the FileEntryRef for the provided FileID.
std::optional< StringRef > getNonBuiltinFilenameForID (FileID FID) const
 Returns the filename for the provided FileID, unless it's a built-in buffer that's not represented by a filename.
const FileEntrygetFileEntryForSLocEntry (const SrcMgr::SLocEntry &SLocEntry) const
 Returns the FileEntry record for the provided SLocEntry.
StringRef getBufferData (FileID FID, bool *Invalid=nullptr) const
 Return a StringRef to the source buffer data for the specified FileID.
std::optional< StringRef > getBufferDataOrNone (FileID FID) const
 Return a StringRef to the source buffer data for the specified FileID, returning std::nullopt if invalid.
std::optional< StringRef > getBufferDataIfLoaded (FileID FID) const
 Return a StringRef to the source buffer data for the specified FileID, returning std::nullopt if it's not yet loaded.
unsigned getNumCreatedFIDsForFileID (FileID FID) const
 Get the number of FileIDs (files and macros) that were created during preprocessing of FID, including it.
void setNumCreatedFIDsForFileID (FileID FID, unsigned NumFIDs, bool Force=false)
 Set the number of FileIDs (files and macros) that were created during preprocessing of FID, including it.
FileID getFileID (SourceLocation SpellingLoc) const
 Return the FileID for a SourceLocation.
StringRef getFilename (SourceLocation SpellingLoc) const
 Return the filename of the file containing a SourceLocation.
SourceLocation getLocForStartOfFile (FileID FID) const
 Return the source location corresponding to the first byte of the specified file.
SourceLocation getLocForEndOfFile (FileID FID) const
 Return the source location corresponding to the last byte of the specified file.
SourceLocation getIncludeLoc (FileID FID) const
 Returns the include location if FID is a #include'd file otherwise it returns an invalid location.
std::pair< SourceLocation, StringRef > getModuleImportLoc (SourceLocation Loc) const
SourceLocation getExpansionLoc (SourceLocation Loc) const
 Given a SourceLocation object Loc, return the expansion location referenced by the ID.
SourceLocation getFileLoc (SourceLocation Loc) const
 Given Loc, if it is a macro location return the expansion location or the spelling location, depending on if it comes from a macro argument or not.
CharSourceRange getImmediateExpansionRange (SourceLocation Loc) const
 Return the start/end of the expansion information for an expansion location.
CharSourceRange getExpansionRange (SourceLocation Loc) const
 Given a SourceLocation object, return the range of tokens covered by the expansion in the ultimate file.
CharSourceRange getExpansionRange (SourceRange Range) const
 Given a SourceRange object, return the range of tokens or characters covered by the expansion in the ultimate file.
CharSourceRange getExpansionRange (CharSourceRange Range) const
 Given a CharSourceRange object, return the range of tokens or characters covered by the expansion in the ultimate file.
SourceLocation getSpellingLoc (SourceLocation Loc) const
 Given a SourceLocation object, return the spelling location referenced by the ID.
SourceLocation getImmediateSpellingLoc (SourceLocation Loc) const
 Given a SourceLocation object, return the spelling location referenced by the ID.
SourceLocation getComposedLoc (FileID FID, unsigned Offset) const
 Form a SourceLocation from a FileID and Offset pair.
FileIDAndOffset getDecomposedLoc (SourceLocation Loc) const
 Decompose the specified location into a raw FileID + Offset pair.
FileIDAndOffset getDecomposedExpansionLoc (SourceLocation Loc) const
 Decompose the specified location into a raw FileID + Offset pair.
FileIDAndOffset getDecomposedSpellingLoc (SourceLocation Loc) const
 Decompose the specified location into a raw FileID + Offset pair.
FileIDAndOffset getDecomposedIncludedLoc (FileID FID) const
 Returns the "included/expanded in" decomposed location of the given FileID.
unsigned getFileOffset (SourceLocation SpellingLoc) const
 Returns the offset from the start of the file that the specified SourceLocation represents.
bool isMacroArgExpansion (SourceLocation Loc, SourceLocation *StartLoc=nullptr) const
 Tests whether the given source location represents a macro argument's expansion into the function-like macro definition.
bool isMacroBodyExpansion (SourceLocation Loc) const
 Tests whether the given source location represents the expansion of a macro body.
bool isAtStartOfImmediateMacroExpansion (SourceLocation Loc, SourceLocation *MacroBegin=nullptr) const
 Returns true if the given MacroID location points at the beginning of the immediate macro expansion.
bool isAtEndOfImmediateMacroExpansion (SourceLocation Loc, SourceLocation *MacroEnd=nullptr) const
 Returns true if the given MacroID location points at the character end of the immediate macro expansion.
bool isInSLocAddrSpace (SourceLocation Loc, SourceLocation Start, unsigned Length, SourceLocation::UIntTy *RelativeOffset=nullptr) const
 Returns true if Loc is inside the [Start, +Length) chunk of the source location address space.
bool isInSameSLocAddrSpace (SourceLocation LHS, SourceLocation RHS, SourceLocation::IntTy *RelativeOffset) const
 Return true if both LHS and RHS are in the local source location address space or the loaded one.
const char * getCharacterData (SourceLocation SL, bool *Invalid=nullptr) const
 Return a pointer to the start of the specified location in the appropriate spelling MemoryBuffer.
unsigned getColumnNumber (FileID FID, unsigned FilePos, bool *Invalid=nullptr) const
 Return the column # for the specified file position.
unsigned getSpellingColumnNumber (SourceLocation Loc, bool *Invalid=nullptr) const
unsigned getExpansionColumnNumber (SourceLocation Loc, bool *Invalid=nullptr) const
unsigned getPresumedColumnNumber (SourceLocation Loc, bool *Invalid=nullptr) const
unsigned getLineNumber (FileID FID, unsigned FilePos, bool *Invalid=nullptr) const
 Given a SourceLocation, return the spelling line number for the position indicated.
unsigned getSpellingLineNumber (SourceLocation Loc, bool *Invalid=nullptr) const
unsigned getExpansionLineNumber (SourceLocation Loc, bool *Invalid=nullptr) const
unsigned getPresumedLineNumber (SourceLocation Loc, bool *Invalid=nullptr) const
StringRef getBufferName (SourceLocation Loc, bool *Invalid=nullptr) const
 Return the filename or buffer identifier of the buffer the location is in.
SrcMgr::CharacteristicKind getFileCharacteristic (SourceLocation Loc) const
 Return the file characteristic of the specified source location, indicating whether this is a normal file, a system header, or an "implicit extern C" system header.
PresumedLoc getPresumedLoc (SourceLocation Loc, bool UseLineDirectives=true) const
 Returns the "presumed" location of a SourceLocation specifies.
bool isInMainFile (SourceLocation Loc) const
 Returns whether the PresumedLoc for a given SourceLocation is in the main file.
bool isWrittenInSameFile (SourceLocation Loc1, SourceLocation Loc2) const
 Returns true if the spelling locations for both SourceLocations are part of the same file buffer.
bool isWrittenInMainFile (SourceLocation Loc) const
 Returns true if the spelling location for the given location is in the main file buffer.
bool isWrittenInBuiltinFile (SourceLocation Loc) const
 Returns whether Loc is located in a <built-in> file.
bool isWrittenInCommandLineFile (SourceLocation Loc) const
 Returns whether Loc is located in a <command line> file.
bool isWrittenInScratchSpace (SourceLocation Loc) const
 Returns whether Loc is located in a <scratch space> file.
bool isInPredefinedFile (SourceLocation Loc) const
 Returns whether Loc is located in a built-in or command line source.
bool isInSystemHeader (SourceLocation Loc) const
 Returns if a SourceLocation is in a system header.
bool isInExternCSystemHeader (SourceLocation Loc) const
 Returns if a SourceLocation is in an "extern C" system header.
bool isInSystemMacro (SourceLocation loc) const
 Returns whether Loc is expanded from a macro in a system header.
unsigned getFileIDSize (FileID FID) const
 The size of the SLocEntry that FID represents.
bool isInFileID (SourceLocation Loc, FileID FID, unsigned *RelativeOffset=nullptr) const
 Given a specific FileID, returns true if Loc is inside that FileID chunk and sets relative offset (offset of Loc from beginning of FileID) to relativeOffset.
unsigned getLineTableFilenameID (StringRef Str)
 Return the uniqued ID for the specified filename.
void AddLineNote (SourceLocation Loc, unsigned LineNo, int FilenameID, bool IsFileEntry, bool IsFileExit, SrcMgr::CharacteristicKind FileKind)
 Add a line note to the line table for the FileID and offset specified by Loc.
bool hasLineTable () const
 Determine if the source manager has a line table.
LineTableInfogetLineTable ()
 Retrieve the stored line table.
size_t getContentCacheSize () const
 Return the total amount of physical memory allocated by the ContentCache allocator.
MemoryBufferSizes getMemoryBufferSizes () const
 Return the amount of memory used by memory buffers, breaking down by heap-backed versus mmap'ed memory.
size_t getDataStructureSizes () const
 Return the amount of memory used for various side tables and data structures in the SourceManager.
SourceLocation translateFileLineCol (const FileEntry *SourceFile, unsigned Line, unsigned Col) const
 Get the source location for the given file:line:col triplet.
FileID translateFile (const FileEntry *SourceFile) const
 Get the FileID for the given file.
FileID translateFile (FileEntryRef SourceFile) const
SourceLocation translateLineCol (FileID FID, unsigned Line, unsigned Col) const
 Get the source location in FID for the given line:col.
SourceLocation getMacroArgExpandedLocation (SourceLocation Loc) const
 If Loc points inside a function macro argument, the returned location will be the macro location in which the argument was expanded.
bool isBeforeInTranslationUnit (SourceLocation LHS, SourceLocation RHS) const
 Determines the order of 2 source locations in the translation unit.
std::pair< bool, boolisInTheSameTranslationUnit (FileIDAndOffset &LOffs, FileIDAndOffset &ROffs) const
 Determines whether the two decomposed source location is in the same translation unit.
FileID getUniqueLoadedASTFileID (SourceLocation Loc) const
bool isInTheSameTranslationUnitImpl (const FileIDAndOffset &LOffs, const FileIDAndOffset &ROffs) const
 Determines whether the two decomposed source location is in the same TU.
bool isBeforeInSLocAddrSpace (SourceLocation LHS, SourceLocation RHS) const
 Determines the order of 2 source locations in the "source location address space".
bool isBeforeInSLocAddrSpace (SourceLocation LHS, SourceLocation::UIntTy RHS) const
 Determines the order of a source location and a source location offset in the "source location address space".
bool isPointWithin (SourceLocation Location, SourceLocation Start, SourceLocation End) const
 Return true if the Point is within Start and End.
fileinfo_iterator fileinfo_begin () const
fileinfo_iterator fileinfo_end () const
bool hasFileInfo (const FileEntry *File) const
void PrintStats () const
 Print statistics to stderr.
void dump () const
void noteSLocAddressSpaceUsage (DiagnosticsEngine &Diag, std::optional< unsigned > MaxNotes=32) const
unsigned local_sloc_entry_size () const
 Get the number of local SLocEntries we have.
const SrcMgr::SLocEntrygetLocalSLocEntry (unsigned Index) const
 Get a local SLocEntry. This is exposed for indexing.
SrcMgr::SLocEntrygetLocalSLocEntry (unsigned Index)
 Get a local SLocEntry. This is exposed for indexing.
unsigned loaded_sloc_entry_size () const
 Get the number of loaded SLocEntries we have.
const SrcMgr::SLocEntrygetLoadedSLocEntry (unsigned Index, bool *Invalid=nullptr) const
 Get a loaded SLocEntry. This is exposed for indexing.
SrcMgr::SLocEntrygetLoadedSLocEntry (unsigned Index, bool *Invalid=nullptr)
 Get a loaded SLocEntry. This is exposed for indexing.
const SrcMgr::SLocEntrygetSLocEntry (FileID FID, bool *Invalid=nullptr) const
SrcMgr::SLocEntrygetSLocEntry (FileID FID, bool *Invalid=nullptr)
SourceLocation::UIntTy getNextLocalOffset () const
void setExternalSLocEntrySource (ExternalSLocEntrySource *Source)
std::pair< int, SourceLocation::UIntTyAllocateLoadedSLocEntries (unsigned NumSLocEntries, SourceLocation::UIntTy TotalSize)
 Allocate a number of loaded SLocEntries, which will be actually loaded on demand from the external source.
bool isLoadedSourceLocation (SourceLocation Loc) const
 Returns true if Loc came from a PCH/Module.
bool isLocalSourceLocation (SourceLocation Loc) const
 Returns true if Loc did not come from a PCH/Module.
bool isLoadedFileID (FileID FID) const
 Returns true if FID came from a PCH/Module.
bool isLocalFileID (FileID FID) const
 Returns true if FID did not come from a PCH/Module.
SourceLocation getImmediateMacroCallerLoc (SourceLocation Loc) const
 Gets the location of the immediate macro caller, one level up the stack toward the initial macro typed into the source.
SourceLocation getTopMacroCallerLoc (SourceLocation Loc) const

Friends

class ASTReader
class ASTWriter

Detailed Description

This class handles loading and caching of source files into memory.

This object owns the MemoryBuffer objects for all of the loaded files and assigns unique FileID's for each unique #include chain.

The SourceManager can be queried for information about SourceLocation objects, turning them into either spelling or expansion locations. Spelling locations represent where the bytes corresponding to a token came from and expansion locations represent where the location is in the user's view. In the case of a macro expansion, for example, the spelling location indicates where the expanded token came from and the expansion location specifies where it was expanded.

Definition at line 663 of file SourceManager.h.

Member Typedef Documentation

◆ fileinfo_iterator

Initial value:
llvm::DenseMap<FileEntryRef, SrcMgr::ContentCache *>::const_iterator

Definition at line 1729 of file SourceManager.h.

Constructor & Destructor Documentation

◆ SourceManager() [1/2]

SourceManager::SourceManager ( DiagnosticsEngine & Diag,
FileManager & FileMgr,
bool UserFilesAreVolatile = false )

◆ SourceManager() [2/2]

clang::SourceManager::SourceManager ( const SourceManager & )
explicitdelete

References SourceManager().

◆ ~SourceManager()

SourceManager::~SourceManager ( )

Definition at line 311 of file SourceManager.cpp.

Member Function Documentation

◆ AddLineNote()

void SourceManager::AddLineNote ( SourceLocation Loc,
unsigned LineNo,
int FilenameID,
bool IsFileEntry,
bool IsFileExit,
SrcMgr::CharacteristicKind FileKind )

Add a line note to the line table for the FileID and offset specified by Loc.

AddLineNote - Add a line note to the line table for the FileID and offset specified by Loc.

If FilenameID is -1, it is considered to be unspecified.

Definition at line 266 of file SourceManager.cpp.

References getDecomposedExpansionLoc(), clang::SrcMgr::SLocEntry::getFile(), getLineTable(), getSLocEntry(), clang::Invalid, clang::SrcMgr::SLocEntry::isFile(), and clang::SrcMgr::FileInfo::setHasLineDirectives().

Referenced by ReadOriginalFileName().

◆ AllocateLoadedSLocEntries()

std::pair< int, SourceLocation::UIntTy > SourceManager::AllocateLoadedSLocEntries ( unsigned NumSLocEntries,
SourceLocation::UIntTy TotalSize )

Allocate a number of loaded SLocEntries, which will be actually loaded on demand from the external source.

NumSLocEntries will be allocated, which occupy a total of TotalSize space in the global source view. The lowest ID and the base offset of the entries will be returned.

Definition at line 457 of file SourceManager.cpp.

References int.

◆ bypassFileContentsOverride()

OptionalFileEntryRef SourceManager::bypassFileContentsOverride ( FileEntryRef File)

Bypass the overridden contents of a file.

This creates a new FileEntry and initializes the content cache for it. Returns std::nullopt if there is no such file in the filesystem.

This should be called before parsing has begun.

Definition at line 741 of file SourceManager.cpp.

References clang::File, and isFileOverridden().

◆ clearIDTables()

void SourceManager::clearIDTables ( )

Definition at line 329 of file SourceManager.cpp.

References createExpansionLoc().

Referenced by clang::CompilerInstance::ExecuteAction(), and SourceManager().

◆ createExpansionLoc()

SourceLocation SourceManager::createExpansionLoc ( SourceLocation SpellingLoc,
SourceLocation ExpansionLocStart,
SourceLocation ExpansionLocEnd,
unsigned Length,
bool ExpansionIsTokenRange = true,
int LoadedID = 0,
SourceLocation::UIntTy LoadedOffset = 0 )

Creates an expansion SLocEntry for a macro use.

Returns its start.

The macro body begins at SpellingLoc with length Length. The macro use spans [ExpansionLocStart, ExpansionLocEnd].

Definition at line 657 of file SourceManager.cpp.

References clang::SrcMgr::ExpansionInfo::create().

Referenced by clearIDTables(), and clang::ASTImporter::Import().

◆ createFileID() [1/3]

FileID SourceManager::createFileID ( const llvm::MemoryBufferRef & Buffer,
SrcMgr::CharacteristicKind FileCharacter = SrcMgr::C_User,
int LoadedID = 0,
SourceLocation::UIntTy LoadedOffset = 0,
SourceLocation IncludeLoc = SourceLocation() )

Create a new FileID that represents the specified memory buffer.

This does not take ownership of the MemoryBuffer. The memory buffer must outlive the SourceManager.

Definition at line 573 of file SourceManager.cpp.

References createFileID().

◆ createFileID() [2/3]

FileID SourceManager::createFileID ( FileEntryRef SourceFile,
SourceLocation IncludePos,
SrcMgr::CharacteristicKind FileCharacter,
int LoadedID = 0,
SourceLocation::UIntTy LoadedOffset = 0 )

◆ createFileID() [3/3]

FileID SourceManager::createFileID ( std::unique_ptr< llvm::MemoryBuffer > Buffer,
SrcMgr::CharacteristicKind FileCharacter = SrcMgr::C_User,
int LoadedID = 0,
SourceLocation::UIntTy LoadedOffset = 0,
SourceLocation IncludeLoc = SourceLocation() )

Create a new FileID that represents the specified memory buffer.

This does no caching of the buffer and takes ownership of the MemoryBuffer, so only pass a MemoryBuffer to this once.

Definition at line 559 of file SourceManager.cpp.

◆ createMacroArgExpansionLoc()

SourceLocation SourceManager::createMacroArgExpansionLoc ( SourceLocation SpellingLoc,
SourceLocation ExpansionLoc,
unsigned Length )

Creates an expansion SLocEntry for the substitution of an argument into a function-like macro's body.

Returns the start of the expansion.

The macro argument was written at SpellingLoc with length Length. ExpansionLoc is the parameter name in the (expanded) macro body.

Definition at line 650 of file SourceManager.cpp.

References clang::SrcMgr::ExpansionInfo::createForMacroArg().

Referenced by clang::ASTImporter::Import().

◆ createTokenSplitLoc()

SourceLocation SourceManager::createTokenSplitLoc ( SourceLocation SpellingLoc,
SourceLocation TokenStart,
SourceLocation TokenEnd )

Return a new SourceLocation that encodes that the token starting at TokenStart ends prematurely at TokenEnd.

Definition at line 667 of file SourceManager.cpp.

References clang::SrcMgr::ExpansionInfo::createForTokenSplit(), and getFileID().

◆ dump()

LLVM_DUMP_METHOD void SourceManager::dump ( ) const

Definition at line 2187 of file SourceManager.cpp.

References int, and clang::out.

◆ fileinfo_begin()

fileinfo_iterator clang::SourceManager::fileinfo_begin ( ) const
inline

Definition at line 1732 of file SourceManager.h.

Referenced by PrintStats().

◆ fileinfo_end()

fileinfo_iterator clang::SourceManager::fileinfo_end ( ) const
inline

Definition at line 1733 of file SourceManager.h.

Referenced by PrintStats().

◆ getBufferData()

StringRef SourceManager::getBufferData ( FileID FID,
bool * Invalid = nullptr ) const

Return a StringRef to the source buffer data for the specified FileID.

Parameters
FIDThe file ID whose contents will be returned.
InvalidIf non-NULL, will be set true if an error occurred.

Definition at line 765 of file SourceManager.cpp.

References getBufferDataOrNone(), and clang::Invalid.

◆ getBufferDataIfLoaded()

std::optional< StringRef > SourceManager::getBufferDataIfLoaded ( FileID FID) const

Return a StringRef to the source buffer data for the specified FileID, returning std::nullopt if it's not yet loaded.

Parameters
FIDThe file ID whose contents will be returned.

Definition at line 773 of file SourceManager.cpp.

References clang::SrcMgr::ContentCache::getBufferDataIfLoaded().

◆ getBufferDataOrNone()

std::optional< StringRef > SourceManager::getBufferDataOrNone ( FileID FID) const

Return a StringRef to the source buffer data for the specified FileID, returning std::nullopt if invalid.

Parameters
FIDThe file ID whose contents will be returned.

Definition at line 779 of file SourceManager.cpp.

References clang::SrcMgr::ContentCache::getBufferOrNone(), and getFileManager().

Referenced by getBufferData().

◆ getBufferName()

StringRef SourceManager::getBufferName ( SourceLocation Loc,
bool * Invalid = nullptr ) const

Return the filename or buffer identifier of the buffer the location is in.

Note that this name does not respect #line directives. Use getPresumedLoc for normal clients.

Definition at line 1459 of file SourceManager.cpp.

References getBufferOrNone(), getFileID(), clang::Invalid, and isInvalid().

◆ getBufferOrFake()

llvm::MemoryBufferRef clang::SourceManager::getBufferOrFake ( FileID FID,
SourceLocation Loc = SourceLocation() ) const
inline

Return the buffer for the specified FileID.

If there is an error opening this buffer the first time, this manufactures a temporary buffer and returns it.

Definition at line 1067 of file SourceManager.h.

References getBufferOrNone().

Referenced by clang::html::AddHeaderFooterInternalBuiltinCSS(), clang::html::AddLineNumbers(), clang::html::EscapeText(), and isInTheSameTranslationUnit().

◆ getBufferOrNone()

std::optional< llvm::MemoryBufferRef > clang::SourceManager::getBufferOrNone ( FileID FID,
SourceLocation Loc = SourceLocation() ) const
inline

Return the buffer for the specified FileID.

If there is an error opening this buffer the first time, return std::nullopt.

Definition at line 1055 of file SourceManager.h.

References getFileManager().

Referenced by adjustColumnPos(), clang::Preprocessor::EnterSourceFile(), getBufferName(), getBufferOrFake(), and getColumnNumber().

◆ getCharacterData()

const char * SourceManager::getCharacterData ( SourceLocation SL,
bool * Invalid = nullptr ) const

Return a pointer to the start of the specified location in the appropriate spelling MemoryBuffer.

getCharacterData - Return a pointer to the start of the specified location in the appropriate MemoryBuffer.

Parameters
InvalidIf non-NULL, will be set true if an error occurs.

Definition at line 1114 of file SourceManager.cpp.

References clang::SrcMgr::ContentCache::getBufferOrNone(), clang::SrcMgr::FileInfo::getContentCache(), getDecomposedSpellingLoc(), clang::SrcMgr::SLocEntry::getFile(), getFileManager(), getSLocEntry(), clang::Invalid, and clang::SrcMgr::SLocEntry::isFile().

Referenced by fixItNullability(), and isSameWidthConstantConversion().

◆ getColumnNumber()

unsigned SourceManager::getColumnNumber ( FileID FID,
unsigned FilePos,
bool * Invalid = nullptr ) const

Return the column # for the specified file position.

getColumnNumber - Return the column # for the specified file position.

This is significantly cheaper to compute than the line number. This returns zero if the column number isn't known. This may only be called on a file sloc, so you must choose a spelling or expansion location before calling this method.

this is significantly cheaper to compute than the line number.

Definition at line 1140 of file SourceManager.cpp.

References getBufferOrNone(), and clang::Invalid.

Referenced by getExpansionColumnNumber(), getPresumedLoc(), and getSpellingColumnNumber().

◆ getComposedLoc()

SourceLocation clang::SourceManager::getComposedLoc ( FileID FID,
unsigned Offset ) const
inline

Form a SourceLocation from a FileID and Offset pair.

Definition at line 1262 of file SourceManager.h.

Referenced by clang::ASTImporter::Import(), isInTheSameTranslationUnit(), and noteSLocAddressSpaceUsage().

◆ getContentCacheSize()

size_t clang::SourceManager::getContentCacheSize ( ) const
inline

Return the total amount of physical memory allocated by the ContentCache allocator.

Definition at line 1618 of file SourceManager.h.

◆ getDataStructureSizes()

size_t SourceManager::getDataStructureSizes ( ) const

Return the amount of memory used for various side tables and data structures in the SourceManager.

Definition at line 2354 of file SourceManager.cpp.

◆ getDecomposedExpansionLoc()

FileIDAndOffset clang::SourceManager::getDecomposedExpansionLoc ( SourceLocation Loc) const
inline

Decompose the specified location into a raw FileID + Offset pair.

If the location is an expansion record, walk through it until we find the final location expanded.

Definition at line 1288 of file SourceManager.h.

References getFileID(), and clang::SourceLocation::isFileID().

Referenced by AddLineNote(), getExpansionColumnNumber(), getExpansionLineNumber(), getFileCharacteristic(), getPresumedLoc(), and isInMainFile().

◆ getDecomposedIncludedLoc()

◆ getDecomposedLoc()

FileIDAndOffset clang::SourceManager::getDecomposedLoc ( SourceLocation Loc) const
inline

Decompose the specified location into a raw FileID + Offset pair.

The first element is the FileID, the second is the offset from the start of the buffer of the location.

Definition at line 1276 of file SourceManager.h.

References getFileID().

Referenced by getDecomposedIncludedLoc(), getFileOffset(), getImmediateSpellingLoc(), getMacroArgExpandedLocation(), getRangeSize(), getUniqueLoadedASTFileID(), clang::ASTImporter::Import(), isAtStartOfImmediateMacroExpansion(), isBeforeInTranslationUnit(), and loadModuleMapForModuleBuild().

◆ getDecomposedSpellingLoc()

FileIDAndOffset clang::SourceManager::getDecomposedSpellingLoc ( SourceLocation Loc) const
inline

Decompose the specified location into a raw FileID + Offset pair.

If the location is an expansion record, walk through it until we find its spelling record.

Definition at line 1305 of file SourceManager.h.

References getFileID(), and clang::SourceLocation::isFileID().

Referenced by getCharacterData(), getSpellingColumnNumber(), and getSpellingLineNumber().

◆ getDiagnostics()

DiagnosticsEngine & clang::SourceManager::getDiagnostics ( ) const
inline

Definition at line 856 of file SourceManager.h.

Referenced by clang::Rewriter::overwriteChangedFiles().

◆ getExpansionColumnNumber()

unsigned SourceManager::getExpansionColumnNumber ( SourceLocation Loc,
bool * Invalid = nullptr ) const

◆ getExpansionLineNumber()

unsigned SourceManager::getExpansionLineNumber ( SourceLocation Loc,
bool * Invalid = nullptr ) const

◆ getExpansionLoc()

◆ getExpansionRange() [1/3]

CharSourceRange clang::SourceManager::getExpansionRange ( CharSourceRange Range) const
inline

Given a CharSourceRange object, return the range of tokens or characters covered by the expansion in the ultimate file.

Definition at line 1234 of file SourceManager.h.

References clang::CharSourceRange::getEnd(), getExpansionRange(), and clang::CharSourceRange::setTokenRange().

◆ getExpansionRange() [2/3]

CharSourceRange SourceManager::getExpansionRange ( SourceLocation Loc) const

Given a SourceLocation object, return the range of tokens covered by the expansion in the ultimate file.

getExpansionRange - Given a SourceLocation object, return the range of tokens covered by the expansion in the ultimate file.

Definition at line 998 of file SourceManager.cpp.

References clang::CharSourceRange::getBegin(), clang::CharSourceRange::getEnd(), getImmediateExpansionRange(), clang::SourceLocation::isFileID(), clang::CharSourceRange::isTokenRange(), clang::CharSourceRange::setBegin(), clang::CharSourceRange::setEnd(), and clang::CharSourceRange::setTokenRange().

Referenced by clang::SourceLocExpr::EvaluateInContext(), getExpansionRange(), and getExpansionRange().

◆ getExpansionRange() [3/3]

CharSourceRange clang::SourceManager::getExpansionRange ( SourceRange Range) const
inline

Given a SourceRange object, return the range of tokens or characters covered by the expansion in the ultimate file.

Definition at line 1225 of file SourceManager.h.

References clang::CharSourceRange::getBegin(), clang::CharSourceRange::getEnd(), getExpansionRange(), and clang::CharSourceRange::isTokenRange().

◆ getFileCharacteristic()

SrcMgr::CharacteristicKind SourceManager::getFileCharacteristic ( SourceLocation Loc) const

Return the file characteristic of the specified source location, indicating whether this is a normal file, a system header, or an "implicit extern C" system header.

getFileCharacteristic - return the file characteristic of the specified source location, indicating whether this is a normal file, a system header, or an "implicit extern C" system header.

This state can be modified with flags on GNU linemarker directives like:

# 4 "foo.h" 3

which changes all source locations in the current file after that to be considered to be from a system header.

This state can be modified with flags on GNU linemarker directives like:

4 "foo.h" 3

which changes all source locations in the current file after that to be considered to be from a system header.

Definition at line 1430 of file SourceManager.cpp.

References clang::SrcMgr::C_User, clang::LineEntry::FileKind, getDecomposedExpansionLoc(), clang::SrcMgr::SLocEntry::getFile(), clang::SrcMgr::FileInfo::getFileCharacteristic(), clang::SrcMgr::FileInfo::hasLineDirectives(), and clang::SourceLocation::isValid().

Referenced by isInExternCSystemHeader(), and isInSystemHeader().

◆ getFileEntryForID()

const FileEntry * clang::SourceManager::getFileEntryForID ( FileID FID) const
inline

Returns the FileEntry record for the provided FileID.

Definition at line 1074 of file SourceManager.h.

References getFileEntryRefForID().

Referenced by isMainFile(), and noteSLocAddressSpaceUsage().

◆ getFileEntryForSLocEntry()

const FileEntry * clang::SourceManager::getFileEntryForSLocEntry ( const SrcMgr::SLocEntry & SLocEntry) const
inline

Returns the FileEntry record for the provided SLocEntry.

Definition at line 1095 of file SourceManager.h.

References clang::SrcMgr::FileInfo::getContentCache(), clang::SrcMgr::SLocEntry::getFile(), and clang::SrcMgr::ContentCache::OrigEntry.

◆ getFileEntryRefForID()

OptionalFileEntryRef clang::SourceManager::getFileEntryRefForID ( FileID FID) const
inline

◆ getFileID()

◆ getFileIDSize()

unsigned SourceManager::getFileIDSize ( FileID FID) const

◆ getFileLoc()

SourceLocation clang::SourceManager::getFileLoc ( SourceLocation Loc) const
inline

Given Loc, if it is a macro location return the expansion location or the spelling location, depending on if it comes from a macro argument or not.

Definition at line 1208 of file SourceManager.h.

References clang::SourceLocation::isFileID().

Referenced by noteSLocAddressSpaceUsage().

◆ getFileManager()

◆ getFilename()

StringRef SourceManager::getFilename ( SourceLocation SpellingLoc) const

Return the filename of the file containing a SourceLocation.

Definition at line 975 of file SourceManager.cpp.

References getFileEntryRefForID(), and getFileID().

Referenced by clang::tooling::DiagnosticMessage::DiagnosticMessage(), and clang::tooling::FileByteRange::FileByteRange().

◆ getFileOffset()

unsigned clang::SourceManager::getFileOffset ( SourceLocation SpellingLoc) const
inline

Returns the offset from the start of the file that the specified SourceLocation represents.

This is not very meaningful for a macro ID.

Definition at line 1325 of file SourceManager.h.

References getDecomposedLoc().

Referenced by clang::tooling::DiagnosticMessage::DiagnosticMessage(), and clang::tooling::FileByteRange::FileByteRange().

◆ getImmediateExpansionRange()

CharSourceRange SourceManager::getImmediateExpansionRange ( SourceLocation Loc) const

Return the start/end of the expansion information for an expansion location.

getImmediateExpansionRange - Loc is required to be an expansion location.

Precondition
Loc is required to be an expansion location.

Return the start/end of the expansion information.

Definition at line 984 of file SourceManager.cpp.

References clang::SrcMgr::SLocEntry::getExpansion(), clang::SrcMgr::ExpansionInfo::getExpansionLocRange(), getFileID(), getSLocEntry(), and clang::SourceLocation::isMacroID().

Referenced by CheckMoveOnConstruction(), DiagnoseNullConversion(), getExpansionRange(), GetFullTypeForDeclarator(), getImmediateMacroCallerLoc(), and handleObjCOwnershipTypeAttr().

◆ getImmediateMacroCallerLoc()

SourceLocation clang::SourceManager::getImmediateMacroCallerLoc ( SourceLocation Loc) const
inline

Gets the location of the immediate macro caller, one level up the stack toward the initial macro typed into the source.

Definition at line 1834 of file SourceManager.h.

References clang::CharSourceRange::getBegin(), getImmediateExpansionRange(), getImmediateSpellingLoc(), isMacroArgExpansion(), and clang::SourceLocation::isMacroID().

Referenced by isInSystemMacro().

◆ getImmediateSpellingLoc()

SourceLocation SourceManager::getImmediateSpellingLoc ( SourceLocation Loc) const

Given a SourceLocation object, return the spelling location referenced by the ID.

getImmediateSpellingLoc - Given a SourceLocation object, return the spelling location referenced by the ID.

This is the first level down towards the place where the characters that make up the lexed token can be found. This should not generally be used by clients.

Definition at line 967 of file SourceManager.cpp.

References getDecomposedLoc(), clang::SrcMgr::SLocEntry::getExpansion(), clang::SourceLocation::getLocWithOffset(), getSLocEntry(), clang::SrcMgr::ExpansionInfo::getSpellingLoc(), and clang::SourceLocation::isFileID().

Referenced by getImmediateMacroCallerLoc(), and getTopMacroCallerLoc().

◆ getIncludeLoc()

SourceLocation clang::SourceManager::getIncludeLoc ( FileID FID) const
inline

Returns the include location if FID is a #include'd file otherwise it returns an invalid location.

Definition at line 1175 of file SourceManager.h.

Referenced by clang::Sema::ActOnAnnotModuleEnd().

◆ getLineNumber()

unsigned SourceManager::getLineNumber ( FileID FID,
unsigned FilePos,
bool * Invalid = nullptr ) const

Given a SourceLocation, return the spelling line number for the position indicated.

getLineNumber - Given a SourceLocation, return the spelling line number for the position indicated.

This requires building and caching a table of line offsets for the MemoryBuffer, so this is not cheap: use only when about to emit a diagnostic.

Definition at line 1305 of file SourceManager.cpp.

References clang::SrcMgr::LineOffsetMapping::begin(), clang::SrcMgr::LineOffsetMapping::end(), clang::SrcMgr::LineOffsetMapping::get(), clang::SrcMgr::ContentCache::getBufferOrNone(), clang::SrcMgr::FileInfo::getContentCache(), clang::SrcMgr::SLocEntry::getFile(), getFileManager(), getSLocEntry(), clang::Invalid, clang::SrcMgr::SLocEntry::isFile(), clang::FileID::isInvalid(), and clang::SrcMgr::ContentCache::SourceLineCache.

Referenced by getExpansionLineNumber(), getPresumedLoc(), and getSpellingLineNumber().

◆ getLineTable()

LineTableInfo & SourceManager::getLineTable ( )

Retrieve the stored line table.

Definition at line 294 of file SourceManager.cpp.

Referenced by AddLineNote(), and getLineTableFilenameID().

◆ getLineTableFilenameID()

unsigned SourceManager::getLineTableFilenameID ( StringRef Str)

Return the uniqued ID for the specified filename.

getLineTableFilenameID - Return the uniqued ID for the specified filename.

Definition at line 259 of file SourceManager.cpp.

References getLineTable().

◆ getLoadedSLocEntry() [1/2]

SrcMgr::SLocEntry & clang::SourceManager::getLoadedSLocEntry ( unsigned Index,
bool * Invalid = nullptr )
inline

Get a loaded SLocEntry. This is exposed for indexing.

Definition at line 1772 of file SourceManager.h.

References clang::Invalid.

◆ getLoadedSLocEntry() [2/2]

const SrcMgr::SLocEntry & clang::SourceManager::getLoadedSLocEntry ( unsigned Index,
bool * Invalid = nullptr ) const
inline

Get a loaded SLocEntry. This is exposed for indexing.

Definition at line 1765 of file SourceManager.h.

References getLoadedSLocEntry(), clang::Invalid, and SourceManager().

Referenced by getLoadedSLocEntry(), and translateFile().

◆ getLocalSLocEntry() [1/2]

SrcMgr::SLocEntry & clang::SourceManager::getLocalSLocEntry ( unsigned Index)
inline

Get a local SLocEntry. This is exposed for indexing.

Definition at line 1756 of file SourceManager.h.

◆ getLocalSLocEntry() [2/2]

const SrcMgr::SLocEntry & clang::SourceManager::getLocalSLocEntry ( unsigned Index) const
inline

Get a local SLocEntry. This is exposed for indexing.

Definition at line 1751 of file SourceManager.h.

References getLocalSLocEntry(), and SourceManager().

Referenced by getLocalSLocEntry(), and translateFile().

◆ getLocForEndOfFile()

SourceLocation clang::SourceManager::getLocForEndOfFile ( FileID FID) const
inline

Return the source location corresponding to the last byte of the specified file.

Definition at line 1166 of file SourceManager.h.

References getFileIDSize().

◆ getLocForStartOfFile()

SourceLocation clang::SourceManager::getLocForStartOfFile ( FileID FID) const
inline

Return the source location corresponding to the first byte of the specified file.

Definition at line 1158 of file SourceManager.h.

Referenced by clang::html::AddHeaderFooterInternalBuiltinCSS(), ConvertBackendLocation(), getPresumedLoc(), and clang::ASTImporter::Import().

◆ getMacroArgExpandedLocation()

SourceLocation SourceManager::getMacroArgExpandedLocation ( SourceLocation Loc) const

If Loc points inside a function macro argument, the returned location will be the macro location in which the argument was expanded.

If.

If a macro argument is used multiple times, the expanded location will be at the first expansion of the argument. e.g. MY_MACRO(foo); ^ Passing a file location pointing at 'foo', will yield a macro location where 'foo' was expanded into.

  • Loc points inside a function macro argument, the returned location will be the macro location in which the argument was expanded. If a macro argument is used multiple times, the expanded location will be at the first expansion of the argument. e.g. MY_MACRO(foo); ^ Passing a file location pointing at 'foo', will yield a macro location where 'foo' was expanded into.

Definition at line 1877 of file SourceManager.cpp.

References getDecomposedLoc(), clang::SourceLocation::getLocWithOffset(), clang::SourceLocation::isFileID(), clang::FileID::isInvalid(), clang::SourceLocation::isInvalid(), and clang::SourceLocation::isValid().

◆ getMainFileID()

FileID clang::SourceManager::getMainFileID ( ) const
inline

Returns the FileID of the main source file.

Definition at line 892 of file SourceManager.h.

Referenced by clang::ASTImporter::Import(), isWrittenInMainFile(), prepareToBuildModule(), and ReadOriginalFileName().

◆ getMemoryBufferForFileOrFake()

llvm::MemoryBufferRef clang::SourceManager::getMemoryBufferForFileOrFake ( FileEntryRef File)
inline

Retrieve the memory buffer associated with the given file.

Returns a fake buffer if there isn't a real one.

Definition at line 983 of file SourceManager.h.

References clang::File, and getMemoryBufferForFileOrNone().

◆ getMemoryBufferForFileOrNone()

std::optional< llvm::MemoryBufferRef > SourceManager::getMemoryBufferForFileOrNone ( FileEntryRef File)

Retrieve the memory buffer associated with the given file.

Returns std::nullopt if the buffer is not valid.

Definition at line 710 of file SourceManager.cpp.

References clang::File, clang::SrcMgr::ContentCache::getBufferOrNone(), and getFileManager().

Referenced by getMemoryBufferForFileOrFake().

◆ getMemoryBufferSizes()

SourceManager::MemoryBufferSizes SourceManager::getMemoryBufferSizes ( ) const

Return the amount of memory used by memory buffers, breaking down by heap-backed versus mmap'ed memory.

Definition at line 2336 of file SourceManager.cpp.

◆ getModuleBuildStack()

ModuleBuildStack clang::SourceManager::getModuleBuildStack ( ) const
inline

Retrieve the module build stack.

Definition at line 872 of file SourceManager.h.

◆ getModuleImportLoc()

std::pair< SourceLocation, StringRef > clang::SourceManager::getModuleImportLoc ( SourceLocation Loc) const
inline

Definition at line 1185 of file SourceManager.h.

References getFileID().

◆ getNextLocalOffset()

SourceLocation::UIntTy clang::SourceManager::getNextLocalOffset ( ) const
inline

Definition at line 1793 of file SourceManager.h.

Referenced by getFileIDSize().

◆ getNonBuiltinFilenameForID()

std::optional< StringRef > SourceManager::getNonBuiltinFilenameForID ( FileID FID) const

Returns the filename for the provided FileID, unless it's a built-in buffer that's not represented by a filename.

Returns std::nullopt for non-files and built-in files.

Definition at line 758 of file SourceManager.cpp.

References clang::SrcMgr::ContentCache::OrigEntry.

◆ getNumCreatedFIDsForFileID()

unsigned clang::SourceManager::getNumCreatedFIDsForFileID ( FileID FID) const
inline

Get the number of FileIDs (files and macros) that were created during preprocessing of FID, including it.

Definition at line 1122 of file SourceManager.h.

◆ getOrCreateFileID()

FileID SourceManager::getOrCreateFileID ( FileEntryRef SourceFile,
SrcMgr::CharacteristicKind FileCharacter )

Get the FileID for SourceFile if it exists.

Otherwise, create a new FileID for the SourceFile.

Definition at line 585 of file SourceManager.cpp.

References createFileID(), and translateFile().

Referenced by prepareToBuildModule().

◆ getPreambleFileID()

FileID clang::SourceManager::getPreambleFileID ( ) const
inline

Get the file ID for the precompiled preamble if there is one.

Definition at line 911 of file SourceManager.h.

◆ getPresumedColumnNumber()

unsigned SourceManager::getPresumedColumnNumber ( SourceLocation Loc,
bool * Invalid = nullptr ) const

◆ getPresumedLineNumber()

unsigned SourceManager::getPresumedLineNumber ( SourceLocation Loc,
bool * Invalid = nullptr ) const

◆ getPresumedLoc()

PresumedLoc SourceManager::getPresumedLoc ( SourceLocation Loc,
bool UseLineDirectives = true ) const

Returns the "presumed" location of a SourceLocation specifies.

getPresumedLoc - This method returns the "presumed" location of a SourceLocation specifies.

A "presumed location" can be modified by #line or GNU line marker directives. This provides a view on the data that a user should see in diagnostics, for example.

Note that a presumed location is always given as the expansion point of an expansion location, not at the spelling location.

Returns
The presumed location of the specified SourceLocation. If the presumed location cannot be calculated (e.g., because Loc is invalid or the file containing Loc has changed on disk), returns an invalid presumed location.

A "presumed location" can be modified by #line or GNU line marker directives. This provides a view on the data that a user should see in diagnostics, for example.

Note that a presumed location is always given as the expansion point of an expansion location, not at the spelling location.

Definition at line 1476 of file SourceManager.cpp.

References clang::C, getColumnNumber(), clang::SrcMgr::FileInfo::getContentCache(), getDecomposedExpansionLoc(), clang::SrcMgr::SLocEntry::getFile(), getFileManager(), clang::SrcMgr::FileInfo::getIncludeLoc(), getLineNumber(), getLocForStartOfFile(), clang::SourceLocation::getLocWithOffset(), getSLocEntry(), clang::SrcMgr::FileInfo::hasLineDirectives(), clang::Invalid, clang::SrcMgr::SLocEntry::isFile(), and clang::SourceLocation::isInvalid().

Referenced by clang::CodeGen::CodeGenFunction::EmitCheckSourceLocation(), emitMappingInformation(), clang::CodeGen::CGOpenMPRuntime::emitUpdateLocation(), clang::SourceLocExpr::EvaluateInContext(), clang::AnalysisDeclContext::getFunctionName(), getIdentStringFromSourceLocation(), clang::CIRGen::CIRGenFunction::getLoc(), clang::CIRGen::CIRGenModule::getLoc(), getPresumedColumnNumber(), getPresumedLineNumber(), isInPredefinedFile(), isWrittenInBuiltinFile(), isWrittenInCommandLineFile(), and isWrittenInScratchSpace().

◆ getSLocEntry() [1/2]

SrcMgr::SLocEntry & clang::SourceManager::getSLocEntry ( FileID FID,
bool * Invalid = nullptr )
inline

Definition at line 1785 of file SourceManager.h.

References clang::Invalid.

◆ getSLocEntry() [2/2]

◆ getSpellingColumnNumber()

unsigned SourceManager::getSpellingColumnNumber ( SourceLocation Loc,
bool * Invalid = nullptr ) const

◆ getSpellingLineNumber()

unsigned SourceManager::getSpellingLineNumber ( SourceLocation Loc,
bool * Invalid = nullptr ) const

◆ getSpellingLoc()

SourceLocation clang::SourceManager::getSpellingLoc ( SourceLocation Loc) const
inline

Given a SourceLocation object, return the spelling location referenced by the ID.

This is the place where the characters that make up the lexed token can be found.

Definition at line 1246 of file SourceManager.h.

References clang::SourceLocation::isFileID().

Referenced by getRangeSize(), isInSystemMacro(), and shouldIgnoreDueToReservedName().

◆ getTopMacroCallerLoc()

SourceLocation SourceManager::getTopMacroCallerLoc ( SourceLocation Loc) const
Returns
Location of the top-level macro caller.

Definition at line 990 of file SourceManager.cpp.

References getImmediateSpellingLoc(), and isMacroArgExpansion().

Referenced by DiagnoseNullConversion().

◆ getUniqueLoadedASTFileID()

FileID SourceManager::getUniqueLoadedASTFileID ( SourceLocation Loc) const
Parameters
Loca source location in a loaded AST (of a PCH/Module file).
Returns
a FileID uniquely identifies the AST of a loaded module/PCH where Loc is at.

Definition at line 1936 of file SourceManager.cpp.

References getDecomposedLoc(), and isLoadedSourceLocation().

◆ hasFileInfo()

bool clang::SourceManager::hasFileInfo ( const FileEntry * File) const
inline

Definition at line 1734 of file SourceManager.h.

References clang::File.

◆ hasLineTable()

bool clang::SourceManager::hasLineTable ( ) const
inline

Determine if the source manager has a line table.

Definition at line 1607 of file SourceManager.h.

◆ initializeForReplay()

void SourceManager::initializeForReplay ( const SourceManager & Old)

Initialize this source manager suitably to replay the compilation described by Old.

Requires that Old outlive *this.

Definition at line 361 of file SourceManager.cpp.

References clang::Cache, clang::SrcMgr::ContentCache::OrigEntry, and SourceManager().

Referenced by clang::FrontendAction::BeginSourceFile().

◆ isAtEndOfImmediateMacroExpansion()

bool SourceManager::isAtEndOfImmediateMacroExpansion ( SourceLocation Loc,
SourceLocation * MacroEnd = nullptr ) const

Returns true if the given MacroID location points at the character end of the immediate macro expansion.

Parameters
MacroEndIf non-null and function returns true, it is set to the character end location of the immediate macro expansion.

Definition at line 1072 of file SourceManager.cpp.

References clang::SrcMgr::SLocEntry::getExpansion(), clang::SrcMgr::ExpansionInfo::getExpansionLocEnd(), clang::SrcMgr::ExpansionInfo::getExpansionLocStart(), getFileID(), clang::SourceLocation::getLocWithOffset(), getSLocEntry(), clang::Invalid, clang::SrcMgr::SLocEntry::isExpansion(), isInFileID(), clang::FileID::isInvalid(), clang::SrcMgr::ExpansionInfo::isMacroArgExpansion(), clang::SourceLocation::isMacroID(), and clang::SourceLocation::isValid().

◆ isAtStartOfImmediateMacroExpansion()

bool SourceManager::isAtStartOfImmediateMacroExpansion ( SourceLocation Loc,
SourceLocation * MacroBegin = nullptr ) const

Returns true if the given MacroID location points at the beginning of the immediate macro expansion.

Parameters
MacroBeginIf non-null and function returns true, it is set to the begin location of the immediate macro expansion.

Definition at line 1037 of file SourceManager.cpp.

References getDecomposedLoc(), clang::SrcMgr::SLocEntry::getExpansion(), clang::SrcMgr::ExpansionInfo::getExpansionLocStart(), getSLocEntry(), clang::Invalid, clang::SrcMgr::SLocEntry::isExpansion(), clang::FileID::isInvalid(), clang::SrcMgr::ExpansionInfo::isMacroArgExpansion(), clang::SourceLocation::isMacroID(), and clang::SourceLocation::isValid().

Referenced by CheckMoveOnConstruction().

◆ isBeforeInSLocAddrSpace() [1/2]

bool clang::SourceManager::isBeforeInSLocAddrSpace ( SourceLocation LHS,
SourceLocation RHS ) const
inline

Determines the order of 2 source locations in the "source location address space".

Definition at line 1701 of file SourceManager.h.

References isBeforeInSLocAddrSpace().

Referenced by isBeforeInSLocAddrSpace().

◆ isBeforeInSLocAddrSpace() [2/2]

bool clang::SourceManager::isBeforeInSLocAddrSpace ( SourceLocation LHS,
SourceLocation::UIntTy RHS ) const
inline

Determines the order of a source location and a source location offset in the "source location address space".

Note that we always consider source locations loaded from

Definition at line 1709 of file SourceManager.h.

◆ isBeforeInTranslationUnit()

bool SourceManager::isBeforeInTranslationUnit ( SourceLocation LHS,
SourceLocation RHS ) const

Determines the order of 2 source locations in the translation unit.

Returns
true if LHS source location comes before RHS, false otherwise.

Definition at line 2022 of file SourceManager.cpp.

References getDecomposedLoc(), isInTheSameTranslationUnit(), and clang::SourceLocation::isValid().

Referenced by clang::DeclSpec::Finish(), and isPointWithin().

◆ isFileOverridden()

bool clang::SourceManager::isFileOverridden ( const FileEntry * File) const
inline

Returns true if the file contents have been overridden.

Definition at line 1020 of file SourceManager.h.

References clang::File.

Referenced by bypassFileContentsOverride().

◆ isInExternCSystemHeader()

bool clang::SourceManager::isInExternCSystemHeader ( SourceLocation Loc) const
inline

Returns if a SourceLocation is in an "extern C" system header.

Definition at line 1551 of file SourceManager.h.

References clang::SrcMgr::C_ExternCSystem, and getFileCharacteristic().

◆ isInFileID()

bool clang::SourceManager::isInFileID ( SourceLocation Loc,
FileID FID,
unsigned * RelativeOffset = nullptr ) const
inline

Given a specific FileID, returns true if Loc is inside that FileID chunk and sets relative offset (offset of Loc from beginning of FileID) to relativeOffset.

Definition at line 1579 of file SourceManager.h.

References clang::SrcMgr::SLocEntry::getOffset(), and getSLocEntry().

Referenced by isAtEndOfImmediateMacroExpansion().

◆ isInMainFile()

bool SourceManager::isInMainFile ( SourceLocation Loc) const

Returns whether the PresumedLoc for a given SourceLocation is in the main file.

This computes the "presumed" location for a SourceLocation, then checks whether it came from a file other than the main file. This is different from isWrittenInMainFile() because it takes line marker directives into account.

Definition at line 1552 of file SourceManager.cpp.

References getDecomposedExpansionLoc(), clang::SrcMgr::SLocEntry::getFile(), clang::SrcMgr::FileInfo::getIncludeLoc(), clang::SrcMgr::FileInfo::hasLineDirectives(), and clang::SourceLocation::isInvalid().

Referenced by clang::ast_matchers::AST_POLYMORPHIC_MATCHER(), CheckUnreachable(), diagnoseUseOfInternalDeclInInlineFunction(), clang::Sema::GloballyUniqueObjectMightBeAccidentallyDuplicated(), and isMainFileLoc().

◆ isInPredefinedFile()

bool clang::SourceManager::isInPredefinedFile ( SourceLocation Loc) const
inline

Returns whether Loc is located in a built-in or command line source.

Definition at line 1535 of file SourceManager.h.

References clang::PresumedLoc::getFilename(), getPresumedLoc(), and clang::PresumedLoc::isInvalid().

◆ isInSameSLocAddrSpace()

bool clang::SourceManager::isInSameSLocAddrSpace ( SourceLocation LHS,
SourceLocation RHS,
SourceLocation::IntTy * RelativeOffset ) const
inline

Return true if both LHS and RHS are in the local source location address space or the loaded one.

If it's true and RelativeOffset is non-null, it will be set to the offset of RHS relative to LHS.

Definition at line 1395 of file SourceManager.h.

Referenced by isInTheSameTranslationUnit().

◆ isInSLocAddrSpace()

bool clang::SourceManager::isInSLocAddrSpace ( SourceLocation Loc,
SourceLocation Start,
unsigned Length,
SourceLocation::UIntTy * RelativeOffset = nullptr ) const
inline

Returns true if Loc is inside the [Start, +Length) chunk of the source location address space.

If it's true and RelativeOffset is non-null, it will be set to the relative offset of Loc inside the chunk.

Definition at line 1371 of file SourceManager.h.

◆ isInSystemHeader()

◆ isInSystemMacro()

bool clang::SourceManager::isInSystemMacro ( SourceLocation loc) const
inline

◆ isInTheSameTranslationUnit()

std::pair< bool, bool > SourceManager::isInTheSameTranslationUnit ( FileIDAndOffset & LOffs,
FileIDAndOffset & ROffs ) const

Determines whether the two decomposed source location is in the same translation unit.

As a byproduct, it also calculates the order of the source locations in case they are in the same TU.

Returns
Pair of bools the first component is true if the two locations are in the same TU. The second bool is true if the first is true and LOffs is before ROffs.

Definition at line 2045 of file SourceManager.cpp.

References getBufferOrFake(), clang::InBeforeInTUCacheEntry::getCachedResult(), getComposedLoc(), clang::InBeforeInTUCacheEntry::isCacheValid(), isInSameSLocAddrSpace(), isInTheSameTranslationUnitImpl(), MoveUpTranslationUnitIncludeHierarchy(), and clang::InBeforeInTUCacheEntry::setCommonLoc().

Referenced by isBeforeInTranslationUnit().

◆ isInTheSameTranslationUnitImpl()

bool SourceManager::isInTheSameTranslationUnitImpl ( const FileIDAndOffset & LOffs,
const FileIDAndOffset & ROffs ) const

Determines whether the two decomposed source location is in the same TU.

Definition at line 1954 of file SourceManager.cpp.

References isLoadedFileID().

Referenced by isInTheSameTranslationUnit().

◆ isLoadedFileID()

bool clang::SourceManager::isLoadedFileID ( FileID FID) const
inline

Returns true if FID came from a PCH/Module.

Definition at line 1822 of file SourceManager.h.

Referenced by isInTheSameTranslationUnitImpl(), and isLocalFileID().

◆ isLoadedSourceLocation()

bool clang::SourceManager::isLoadedSourceLocation ( SourceLocation Loc) const
inline

Returns true if Loc came from a PCH/Module.

Definition at line 1812 of file SourceManager.h.

Referenced by getUniqueLoadedASTFileID().

◆ isLocalFileID()

bool clang::SourceManager::isLocalFileID ( FileID FID) const
inline

Returns true if FID did not come from a PCH/Module.

Definition at line 1828 of file SourceManager.h.

References isLoadedFileID().

◆ isLocalSourceLocation()

bool clang::SourceManager::isLocalSourceLocation ( SourceLocation Loc) const
inline

Returns true if Loc did not come from a PCH/Module.

Definition at line 1817 of file SourceManager.h.

◆ isMacroArgExpansion()

bool SourceManager::isMacroArgExpansion ( SourceLocation Loc,
SourceLocation * StartLoc = nullptr ) const

Tests whether the given source location represents a macro argument's expansion into the function-like macro definition.

Parameters
StartLocIf non-null and function returns true, it is set to the start location of the macro argument expansion.

Such source locations only appear inside of the expansion locations representing where a particular function-like macro was expanded.

Definition at line 1016 of file SourceManager.cpp.

References clang::SrcMgr::SLocEntry::getExpansion(), clang::SrcMgr::ExpansionInfo::getExpansionLocStart(), getFileID(), getSLocEntry(), clang::SrcMgr::ExpansionInfo::isMacroArgExpansion(), and clang::SourceLocation::isMacroID().

Referenced by getImmediateMacroCallerLoc(), and getTopMacroCallerLoc().

◆ isMacroBodyExpansion()

bool SourceManager::isMacroBodyExpansion ( SourceLocation Loc) const

Tests whether the given source location represents the expansion of a macro body.

This is equivalent to testing whether the location is part of a macro expansion but not the expansion of an argument to a function-like macro.

Definition at line 1029 of file SourceManager.cpp.

References clang::SrcMgr::SLocEntry::getExpansion(), getFileID(), getSLocEntry(), clang::SrcMgr::ExpansionInfo::isMacroBodyExpansion(), and clang::SourceLocation::isMacroID().

Referenced by DiagnoseUnusedComparison().

◆ isMainFile()

bool SourceManager::isMainFile ( const FileEntry & SourceFile)

Returns true when the given FileEntry corresponds to the main file.

The main file should be set prior to calling this function.

Definition at line 354 of file SourceManager.cpp.

References getFileEntryForID(), and clang::FileEntry::getUID().

◆ isPointWithin()

bool clang::SourceManager::isPointWithin ( SourceLocation Location,
SourceLocation Start,
SourceLocation End ) const
inline

Return true if the Point is within Start and End.

Definition at line 1721 of file SourceManager.h.

References isBeforeInTranslationUnit().

◆ isWrittenInBuiltinFile()

bool clang::SourceManager::isWrittenInBuiltinFile ( SourceLocation Loc) const
inline

Returns whether Loc is located in a <built-in> file.

Definition at line 1508 of file SourceManager.h.

References clang::PresumedLoc::getFilename(), getPresumedLoc(), and clang::PresumedLoc::isInvalid().

Referenced by clang::ASTImporter::Import().

◆ isWrittenInCommandLineFile()

bool clang::SourceManager::isWrittenInCommandLineFile ( SourceLocation Loc) const
inline

Returns whether Loc is located in a <command line> file.

Definition at line 1517 of file SourceManager.h.

References clang::PresumedLoc::getFilename(), getPresumedLoc(), and clang::PresumedLoc::isInvalid().

◆ isWrittenInMainFile()

bool clang::SourceManager::isWrittenInMainFile ( SourceLocation Loc) const
inline

Returns true if the spelling location for the given location is in the main file buffer.

This check ignores line marker directives.

Definition at line 1503 of file SourceManager.h.

References getFileID(), and getMainFileID().

Referenced by clang::Sema::BuildModuleInclude(), and isInMainFile().

◆ isWrittenInSameFile()

bool clang::SourceManager::isWrittenInSameFile ( SourceLocation Loc1,
SourceLocation Loc2 ) const
inline

Returns true if the spelling locations for both SourceLocations are part of the same file buffer.

This check ignores line marker directives.

Definition at line 1495 of file SourceManager.h.

References getFileID().

◆ isWrittenInScratchSpace()

bool clang::SourceManager::isWrittenInScratchSpace ( SourceLocation Loc) const
inline

Returns whether Loc is located in a <scratch space> file.

Definition at line 1526 of file SourceManager.h.

References clang::PresumedLoc::getFilename(), getPresumedLoc(), and clang::PresumedLoc::isInvalid().

Referenced by isInSystemMacro().

◆ loaded_sloc_entry_size()

unsigned clang::SourceManager::loaded_sloc_entry_size ( ) const
inline

Get the number of loaded SLocEntries we have.

Definition at line 1762 of file SourceManager.h.

Referenced by translateFile().

◆ local_sloc_entry_size()

unsigned clang::SourceManager::local_sloc_entry_size ( ) const
inline

Get the number of local SLocEntries we have.

Definition at line 1748 of file SourceManager.h.

Referenced by getFileIDSize(), clang::PreprocessorLexer::PreprocessorLexer(), and translateFile().

◆ noteSLocAddressSpaceUsage()

void SourceManager::noteSLocAddressSpaceUsage ( DiagnosticsEngine & Diag,
std::optional< unsigned > MaxNotes = 32 ) const

◆ operator=()

SourceManager & clang::SourceManager::operator= ( const SourceManager & )
delete

References SourceManager().

◆ overrideFileContents() [1/3]

void SourceManager::overrideFileContents ( const FileEntry * SourceFile,
FileEntryRef NewFile )

Override the given source file with another one.

Parameters
SourceFilethe source file which will be overridden.
NewFilethe file whose contents will be used as the data instead of the contents of the given source file.

Definition at line 725 of file SourceManager.cpp.

References clang::FileEntry::getSize(), and clang::FileEntryRef::getSize().

◆ overrideFileContents() [2/3]

void clang::SourceManager::overrideFileContents ( FileEntryRef SourceFile,
const llvm::MemoryBufferRef & Buffer )
inline

Override the contents of the given source file by providing an already-allocated buffer.

Parameters
SourceFilethe source file whose contents will be overridden.
Bufferthe memory buffer whose contents will be used as the data in the given source file.

Definition at line 996 of file SourceManager.h.

References overrideFileContents().

Referenced by overrideFileContents().

◆ overrideFileContents() [3/3]

void SourceManager::overrideFileContents ( FileEntryRef SourceFile,
std::unique_ptr< llvm::MemoryBuffer > Buffer )

Override the contents of the given source file by providing an already-allocated buffer.

Parameters
SourceFilethe source file whose contents will be overridden.
Bufferthe memory buffer whose contents will be used as the data in the given source file.

Definition at line 715 of file SourceManager.cpp.

References clang::SrcMgr::ContentCache::BufferOverridden, and clang::SrcMgr::ContentCache::setBuffer().

◆ PrintStats()

void SourceManager::PrintStats ( ) const

Print statistics to stderr.

Definition at line 2157 of file SourceManager.cpp.

References bool, fileinfo_begin(), and fileinfo_end().

Referenced by clang::FrontendAction::EndSourceFile().

◆ pushModuleBuildStack()

void clang::SourceManager::pushModuleBuildStack ( StringRef moduleName,
FullSourceLoc importLoc )
inline

Push an entry to the module build stack.

Definition at line 883 of file SourceManager.h.

Referenced by prepareToBuildModule().

◆ setAllFilesAreTransient()

void clang::SourceManager::setAllFilesAreTransient ( bool Transient)
inline

Specify that all files that are read during this compilation are transient.

Definition at line 1042 of file SourceManager.h.

Referenced by clang::FrontendAction::BeginSourceFile().

◆ setExternalSLocEntrySource()

void clang::SourceManager::setExternalSLocEntrySource ( ExternalSLocEntrySource * Source)
inline

Definition at line 1795 of file SourceManager.h.

◆ setFileIsTransient()

void SourceManager::setFileIsTransient ( FileEntryRef SourceFile)

Specify that a file is transient.

Definition at line 753 of file SourceManager.cpp.

References clang::File.

Referenced by clang::FrontendAction::BeginSourceFile().

◆ setMainFileID()

void clang::SourceManager::setMainFileID ( FileID FID)
inline

Set the file ID for the main source file.

Definition at line 895 of file SourceManager.h.

◆ setModuleBuildStack()

void clang::SourceManager::setModuleBuildStack ( ModuleBuildStack stack)
inline

Set the module build stack.

Definition at line 877 of file SourceManager.h.

◆ setNumCreatedFIDsForFileID()

void clang::SourceManager::setNumCreatedFIDsForFileID ( FileID FID,
unsigned NumFIDs,
bool Force = false )
inline

Set the number of FileIDs (files and macros) that were created during preprocessing of FID, including it.

Definition at line 1130 of file SourceManager.h.

◆ setOverridenFilesKeepOriginalName()

void clang::SourceManager::setOverridenFilesKeepOriginalName ( bool value)
inline

Set true if the SourceManager should report the original file name for contents of files that were overridden by other files.

Defaults to true.

Definition at line 863 of file SourceManager.h.

◆ setPreambleFileID()

void clang::SourceManager::setPreambleFileID ( FileID Preamble)
inline

Set the file ID for the precompiled preamble.

Definition at line 905 of file SourceManager.h.

References clang::Preamble.

◆ translateFile() [1/2]

FileID SourceManager::translateFile ( const FileEntry * SourceFile) const

◆ translateFile() [2/2]

FileID clang::SourceManager::translateFile ( FileEntryRef SourceFile) const
inline

Definition at line 1654 of file SourceManager.h.

References clang::FileEntryRef::getFileEntry(), and translateFile().

◆ translateFileLineCol()

SourceLocation SourceManager::translateFileLineCol ( const FileEntry * SourceFile,
unsigned Line,
unsigned Col ) const

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

If the source file is included multiple times, the source location will be based upon the first inclusion.

If the source file is included multiple times, the source location will be based upon an arbitrary inclusion.

Definition at line 1601 of file SourceManager.cpp.

References clang::Line, translateFile(), and translateLineCol().

◆ translateLineCol()

◆ userFilesAreVolatile()

bool clang::SourceManager::userFilesAreVolatile ( ) const
inline

True if non-system source files should be treated as volatile (likely to change while trying to use them).

Definition at line 869 of file SourceManager.h.

◆ ASTReader

friend class ASTReader
friend

Definition at line 1852 of file SourceManager.h.

References ASTReader.

Referenced by ASTReader.

◆ ASTWriter

friend class ASTWriter
friend

Definition at line 1853 of file SourceManager.h.

References ASTWriter, clang::Invalid, and SourceManager().

Referenced by ASTWriter.


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