clang  3.7.0
Classes | Public Types | Public Member Functions | Friends | List of all members
clang::SourceManager Class Reference

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

#include <SourceManager.h>

Inheritance diagram for clang::SourceManager:
[legend]
Collaboration diagram for clang::SourceManager:
[legend]

Classes

struct  MemoryBufferSizes
 

Public Types

typedef llvm::DenseMap< const
FileEntry
*, SrcMgr::ContentCache * >
::const_iterator 
fileinfo_iterator
 

Public Member Functions

 SourceManager (DiagnosticsEngine &Diag, FileManager &FileMgr, bool UserFilesAreVolatile=false)
 
 ~SourceManager ()
 
void clearIDTables ()
 
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. Defaults to true. More...
 
bool userFilesAreVolatile () const
 True if non-system source files should be treated as volatile (likely to change while trying to use them). More...
 
ModuleBuildStack getModuleBuildStack () const
 Retrieve the module build stack. More...
 
void setModuleBuildStack (ModuleBuildStack stack)
 Set the module build stack. More...
 
void pushModuleBuildStack (StringRef moduleName, FullSourceLoc importLoc)
 Push an entry to the module build stack. More...
 
FileID getMainFileID () const
 Returns the FileID of the main source file. More...
 
void setMainFileID (FileID FID)
 Set the file ID for the main source file. More...
 
void setPreambleFileID (FileID Preamble)
 Set the file ID for the precompiled preamble. More...
 
FileID getPreambleFileID () const
 Get the file ID for the precompiled preamble if there is one. More...
 
FileID createFileID (const FileEntry *SourceFile, SourceLocation IncludePos, SrcMgr::CharacteristicKind FileCharacter, int LoadedID=0, unsigned LoadedOffset=0)
 Create a new FileID that represents the specified file being #included from the specified IncludePosition. More...
 
FileID createFileID (std::unique_ptr< llvm::MemoryBuffer > Buffer, SrcMgr::CharacteristicKind FileCharacter=SrcMgr::C_User, int LoadedID=0, unsigned LoadedOffset=0, SourceLocation IncludeLoc=SourceLocation())
 Create a new FileID that represents the specified memory buffer. More...
 
SourceLocation createMacroArgExpansionLoc (SourceLocation Loc, SourceLocation ExpansionLoc, unsigned TokLength)
 Return a new SourceLocation that encodes the fact that a token from SpellingLoc should actually be referenced from ExpansionLoc, and that it represents the expansion of a macro argument into the function-like macro body. More...
 
SourceLocation createExpansionLoc (SourceLocation Loc, SourceLocation ExpansionLocStart, SourceLocation ExpansionLocEnd, unsigned TokLength, int LoadedID=0, unsigned LoadedOffset=0)
 Return a new SourceLocation that encodes the fact that a token from SpellingLoc should actually be referenced from ExpansionLoc. More...
 
llvm::MemoryBuffer * getMemoryBufferForFile (const FileEntry *File, bool *Invalid=nullptr)
 Retrieve the memory buffer associated with the given file. More...
 
void overrideFileContents (const FileEntry *SourceFile, llvm::MemoryBuffer *Buffer, bool DoNotFree)
 Override the contents of the given source file by providing an already-allocated buffer. More...
 
void overrideFileContents (const FileEntry *SourceFile, std::unique_ptr< llvm::MemoryBuffer > Buffer)
 
void overrideFileContents (const FileEntry *SourceFile, const FileEntry *NewFile)
 Override the given source file with another one. More...
 
bool isFileOverridden (const FileEntry *File)
 Returns true if the file contents have been overridden. More...
 
void disableFileContentsOverride (const FileEntry *File)
 Disable overridding the contents of a file, previously enabled with overrideFileContents. More...
 
llvm::MemoryBuffer * getBuffer (FileID FID, SourceLocation Loc, bool *Invalid=nullptr) const
 Return the buffer for the specified FileID. More...
 
llvm::MemoryBuffer * getBuffer (FileID FID, bool *Invalid=nullptr) const
 
const FileEntrygetFileEntryForID (FileID FID) const
 Returns the FileEntry record for the provided FileID. More...
 
const FileEntrygetFileEntryForSLocEntry (const SrcMgr::SLocEntry &sloc) const
 Returns the FileEntry record for the provided SLocEntry. More...
 
StringRef getBufferData (FileID FID, bool *Invalid=nullptr) const
 Return a StringRef to the source buffer data for the specified FileID. More...
 
unsigned getNumCreatedFIDsForFileID (FileID FID) const
 Get the number of FileIDs (files and macros) that were created during preprocessing of FID, including it. More...
 
void setNumCreatedFIDsForFileID (FileID FID, unsigned NumFIDs) const
 Set the number of FileIDs (files and macros) that were created during preprocessing of FID, including it. More...
 
FileID getFileID (SourceLocation SpellingLoc) const
 Return the FileID for a SourceLocation. More...
 
StringRef getFilename (SourceLocation SpellingLoc) const
 Return the filename of the file containing a SourceLocation. More...
 
SourceLocation getLocForStartOfFile (FileID FID) const
 Return the source location corresponding to the first byte of the specified file. More...
 
SourceLocation getLocForEndOfFile (FileID FID) const
 Return the source location corresponding to the last byte of the specified file. More...
 
SourceLocation getIncludeLoc (FileID FID) const
 Returns the include location if FID is a #include'd file otherwise it returns an invalid location. More...
 
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. More...
 
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. More...
 
std::pair< SourceLocation,
SourceLocation
getImmediateExpansionRange (SourceLocation Loc) const
 Return the start/end of the expansion information for an expansion location. More...
 
std::pair< SourceLocation,
SourceLocation
getExpansionRange (SourceLocation Loc) const
 Given a SourceLocation object, return the range of tokens covered by the expansion in the ultimate file. More...
 
SourceRange getExpansionRange (SourceRange Range) const
 Given a SourceRange object, return the range of tokens covered by the expansion in the ultimate file. More...
 
SourceLocation getSpellingLoc (SourceLocation Loc) const
 Given a SourceLocation object, return the spelling location referenced by the ID. More...
 
SourceLocation getImmediateSpellingLoc (SourceLocation Loc) const
 Given a SourceLocation object, return the spelling location referenced by the ID. More...
 
std::pair< FileID, unsignedgetDecomposedLoc (SourceLocation Loc) const
 Decompose the specified location into a raw FileID + Offset pair. More...
 
std::pair< FileID, unsignedgetDecomposedExpansionLoc (SourceLocation Loc) const
 Decompose the specified location into a raw FileID + Offset pair. More...
 
std::pair< FileID, unsignedgetDecomposedSpellingLoc (SourceLocation Loc) const
 Decompose the specified location into a raw FileID + Offset pair. More...
 
std::pair< FileID, unsignedgetDecomposedIncludedLoc (FileID FID) const
 Returns the "included/expanded in" decomposed location of the given FileID. More...
 
unsigned getFileOffset (SourceLocation SpellingLoc) const
 Returns the offset from the start of the file that the specified SourceLocation represents. More...
 
bool isMacroArgExpansion (SourceLocation Loc) const
 Tests whether the given source location represents a macro argument's expansion into the function-like macro definition. More...
 
bool isMacroBodyExpansion (SourceLocation Loc) const
 Tests whether the given source location represents the expansion of a macro body. More...
 
bool isAtStartOfImmediateMacroExpansion (SourceLocation Loc, SourceLocation *MacroBegin=nullptr) const
 Returns true if the given MacroID location points at the beginning of the immediate macro expansion. More...
 
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. More...
 
bool isInSLocAddrSpace (SourceLocation Loc, SourceLocation Start, unsigned Length, unsigned *RelativeOffset=nullptr) const
 Returns true if Loc is inside the [Start, +Length) chunk of the source location address space. More...
 
bool isInSameSLocAddrSpace (SourceLocation LHS, SourceLocation RHS, int *RelativeOffset) const
 Return true if both LHS and RHS are in the local source location address space or the loaded one. More...
 
const char * getCharacterData (SourceLocation SL, bool *Invalid=nullptr) const
 Return a pointer to the start of the specified location in the appropriate spelling MemoryBuffer. More...
 
unsigned getColumnNumber (FileID FID, unsigned FilePos, bool *Invalid=nullptr) const
 Return the column # for the specified file position. More...
 
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. More...
 
unsigned getSpellingLineNumber (SourceLocation Loc, bool *Invalid=nullptr) const
 
unsigned getExpansionLineNumber (SourceLocation Loc, bool *Invalid=nullptr) const
 
unsigned getPresumedLineNumber (SourceLocation Loc, bool *Invalid=nullptr) const
 
const char * getBufferName (SourceLocation Loc, bool *Invalid=nullptr) const
 Return the filename or buffer identifier of the buffer the location is in. More...
 
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. More...
 
PresumedLoc getPresumedLoc (SourceLocation Loc, bool UseLineDirectives=true) const
 Returns the "presumed" location of a SourceLocation specifies. More...
 
bool isInMainFile (SourceLocation Loc) const
 Returns whether the PresumedLoc for a given SourceLocation is in the main file. More...
 
bool isWrittenInSameFile (SourceLocation Loc1, SourceLocation Loc2) const
 Returns true if the spelling locations for both SourceLocations are part of the same file buffer. More...
 
bool isWrittenInMainFile (SourceLocation Loc) const
 Returns true if the spelling location for the given location is in the main file buffer. More...
 
bool isInSystemHeader (SourceLocation Loc) const
 Returns if a SourceLocation is in a system header. More...
 
bool isInExternCSystemHeader (SourceLocation Loc) const
 Returns if a SourceLocation is in an "extern C" system header. More...
 
bool isInSystemMacro (SourceLocation loc)
 Returns whether Loc is expanded from a macro in a system header. More...
 
unsigned getFileIDSize (FileID FID) const
 The size of the SLocEntry that FID represents. More...
 
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. More...
 
unsigned getLineTableFilenameID (StringRef Str)
 Return the uniqued ID for the specified filename. More...
 
void AddLineNote (SourceLocation Loc, unsigned LineNo, int FilenameID)
 Add a line note to the line table for the FileID and offset specified by Loc. More...
 
void AddLineNote (SourceLocation Loc, unsigned LineNo, int FilenameID, bool IsFileEntry, bool IsFileExit, bool IsSystemHeader, bool IsExternCHeader)
 AddLineNote - Add a GNU line marker to the line table. More...
 
bool hasLineTable () const
 Determine if the source manager has a line table. More...
 
LineTableInfogetLineTable ()
 Retrieve the stored line table. More...
 
size_t getContentCacheSize () const
 Return the total amount of physical memory allocated by the ContentCache allocator. More...
 
MemoryBufferSizes getMemoryBufferSizes () const
 Return the amount of memory used by memory buffers, breaking down by heap-backed versus mmap'ed memory. More...
 
size_t getDataStructureSizes () const
 Return the amount of memory used for various side tables and data structures in the SourceManager. More...
 
SourceLocation translateFileLineCol (const FileEntry *SourceFile, unsigned Line, unsigned Col) const
 Get the source location for the given file:line:col triplet. More...
 
FileID translateFile (const FileEntry *SourceFile) const
 Get the FileID for the given file. More...
 
SourceLocation translateLineCol (FileID FID, unsigned Line, unsigned Col) const
 Get the source location in FID for the given line:col. Returns null location if FID is not a file SLocEntry. More...
 
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. 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. More...
 
bool isBeforeInTranslationUnit (SourceLocation LHS, SourceLocation RHS) const
 Determines the order of 2 source locations in the translation unit. More...
 
bool isBeforeInSLocAddrSpace (SourceLocation LHS, SourceLocation RHS) const
 Determines the order of 2 source locations in the "source location address space". More...
 
bool isBeforeInSLocAddrSpace (SourceLocation LHS, unsigned RHS) const
 Determines the order of a source location and a source location offset in the "source location address space". More...
 
fileinfo_iterator fileinfo_begin () const
 
fileinfo_iterator fileinfo_end () const
 
bool hasFileInfo (const FileEntry *File) const
 
void PrintStats () const
 Print statistics to stderr. More...
 
unsigned local_sloc_entry_size () const
 Get the number of local SLocEntries we have. More...
 
const SrcMgr::SLocEntrygetLocalSLocEntry (unsigned Index, bool *Invalid=nullptr) const
 Get a local SLocEntry. This is exposed for indexing. More...
 
unsigned loaded_sloc_entry_size () const
 Get the number of loaded SLocEntries we have. More...
 
const SrcMgr::SLocEntrygetLoadedSLocEntry (unsigned Index, bool *Invalid=nullptr) const
 Get a loaded SLocEntry. This is exposed for indexing. More...
 
const SrcMgr::SLocEntrygetSLocEntry (FileID FID, bool *Invalid=nullptr) const
 
unsigned getNextLocalOffset () const
 
void setExternalSLocEntrySource (ExternalSLocEntrySource *Source)
 
std::pair< int, unsignedAllocateLoadedSLocEntries (unsigned NumSLocEntries, unsigned TotalSize)
 Allocate a number of loaded SLocEntries, which will be actually loaded on demand from the external source. More...
 
bool isLoadedSourceLocation (SourceLocation Loc) const
 Returns true if Loc came from a PCH/Module. More...
 
bool isLocalSourceLocation (SourceLocation Loc) const
 Returns true if Loc did not come from a PCH/Module. More...
 
bool isLoadedFileID (FileID FID) const
 Returns true if FID came from a PCH/Module. More...
 
bool isLocalFileID (FileID FID) const
 Returns true if FID did not come from a PCH/Module. More...
 
SourceLocation getImmediateMacroCallerLoc (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 539 of file SourceManager.h.

Member Typedef Documentation

typedef llvm::DenseMap<const FileEntry*, SrcMgr::ContentCache*>::const_iterator clang::SourceManager::fileinfo_iterator

Definition at line 1455 of file SourceManager.h.

Constructor & Destructor Documentation

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

Definition at line 376 of file SourceManager.cpp.

Member Function Documentation

void SourceManager::AddLineNote ( SourceLocation  Loc,
unsigned  LineNo,
int  FilenameID 
)

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.

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 291 of file SourceManager.cpp.

References clang::SrcMgr::SLocEntry::getFile(), and clang::SrcMgr::SLocEntry::isFile().

Referenced by clang::Preprocessor::HandlePragmaSystemHeader().

void SourceManager::AddLineNote ( SourceLocation  Loc,
unsigned  LineNo,
int  FilenameID,
bool  IsFileEntry,
bool  IsFileExit,
bool  IsSystemHeader,
bool  IsExternCHeader 
)

AddLineNote - Add a GNU line marker to the line table.

Definition at line 311 of file SourceManager.cpp.

References clang::SrcMgr::C_ExternCSystem, clang::SrcMgr::C_System, clang::SrcMgr::C_User, clang::SrcMgr::SLocEntry::getFile(), and clang::SrcMgr::SLocEntry::isFile().

std::pair< int, unsigned > SourceManager::AllocateLoadedSLocEntries ( unsigned  NumSLocEntries,
unsigned  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 484 of file SourceManager.cpp.

void SourceManager::clearIDTables ( )
SourceLocation SourceManager::createExpansionLoc ( SourceLocation  Loc,
SourceLocation  ExpansionLocStart,
SourceLocation  ExpansionLocEnd,
unsigned  TokLength,
int  LoadedID = 0,
unsigned  LoadedOffset = 0 
)

Return a new SourceLocation that encodes the fact that a token from SpellingLoc should actually be referenced from ExpansionLoc.

Definition at line 602 of file SourceManager.cpp.

References clang::serialized_diags::create().

Referenced by clearIDTables(), clang::Lexer::Create_PragmaLexer(), clang::Preprocessor::CreateString(), clang::TokenLexer::Init(), clang::TokenLexer::Lex(), and clang::ASTReader::ReadSLocEntry().

FileID clang::SourceManager::createFileID ( const FileEntry SourceFile,
SourceLocation  IncludePos,
SrcMgr::CharacteristicKind  FileCharacter,
int  LoadedID = 0,
unsigned  LoadedOffset = 0 
)
inline
FileID clang::SourceManager::createFileID ( std::unique_ptr< llvm::MemoryBuffer >  Buffer,
SrcMgr::CharacteristicKind  FileCharacter = SrcMgr::C_User,
int  LoadedID = 0,
unsigned  LoadedOffset = 0,
SourceLocation  IncludeLoc = SourceLocation() 
)
inline

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 777 of file SourceManager.h.

References createFileID().

SourceLocation SourceManager::createMacroArgExpansionLoc ( SourceLocation  Loc,
SourceLocation  ExpansionLoc,
unsigned  TokLength 
)

Return a new SourceLocation that encodes the fact that a token from SpellingLoc should actually be referenced from ExpansionLoc, and that it represents the expansion of a macro argument into the function-like macro body.

Definition at line 593 of file SourceManager.cpp.

Referenced by updateConsecutiveMacroArgTokens().

void SourceManager::disableFileContentsOverride ( const FileEntry File)

Disable overridding the contents of a file, previously enabled with overrideFileContents.

This should be called before parsing has begun.

Definition at line 666 of file SourceManager.cpp.

References isFileOverridden().

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

Definition at line 1456 of file SourceManager.h.

Referenced by PrintStats().

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

Definition at line 1457 of file SourceManager.h.

Referenced by PrintStats().

llvm::MemoryBuffer* clang::SourceManager::getBuffer ( FileID  FID,
SourceLocation  Loc,
bool Invalid = nullptr 
) const
inline
llvm::MemoryBuffer* clang::SourceManager::getBuffer ( FileID  FID,
bool Invalid = nullptr 
) const
inline
StringRef SourceManager::getBufferData ( FileID  FID,
bool Invalid = nullptr 
) const
const char * 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.

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 1426 of file SourceManager.cpp.

References getBuffer(), getFileID(), and isInvalid().

Referenced by clang::Preprocessor::CheckMacroName(), clang::CodeGen::CodeGenModule::EmitAnnotationUnit(), and clang::Preprocessor::EnterSourceFile().

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

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.

getColumnNumber - Return the column # for the specified file position. this is significantly cheaper to compute than the line number.

Definition at line 1117 of file SourceManager.cpp.

References getBuffer().

Referenced by buildFixItInsertionLine(), clang::TextDiagnostic::emitDiagnosticLoc(), getExpansionColumnNumber(), getPresumedLoc(), and getSpellingColumnNumber().

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

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

Definition at line 1375 of file SourceManager.h.

size_t SourceManager::getDataStructureSizes ( ) const

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

Definition at line 2158 of file SourceManager.cpp.

std::pair<FileID, unsigned> 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 1095 of file SourceManager.h.

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

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

std::pair< FileID, unsigned > SourceManager::getDecomposedIncludedLoc ( FileID  FID) const
std::pair<FileID, unsigned> clang::SourceManager::getDecomposedLoc ( SourceLocation  Loc) const
inline
std::pair<FileID, unsigned> 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 1114 of file SourceManager.h.

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

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

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

Definition at line 703 of file SourceManager.h.

Referenced by clang::ASTContext::getDiagnostics(), and ParseDirective().

unsigned SourceManager::getExpansionColumnNumber ( SourceLocation  Loc,
bool Invalid = nullptr 
) const
unsigned SourceManager::getExpansionLineNumber ( SourceLocation  Loc,
bool Invalid = nullptr 
) const
SourceLocation clang::SourceManager::getExpansionLoc ( SourceLocation  Loc) const
inline
std::pair< SourceLocation, SourceLocation > 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 983 of file SourceManager.cpp.

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

Referenced by clang::TextDiagnostic::emitDiagnosticLoc(), getExpansionRange(), getLengthOnSingleLine(), clang::html::HighlightMacros(), ReportEvent(), and clang::arcmt::writeARCDiagsToPlist().

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

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

Definition at line 1052 of file SourceManager.h.

References clang::SourceRange::getBegin(), clang::SourceRange::getEnd(), and getExpansionRange().

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.

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.

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.

Definition at line 1396 of file SourceManager.cpp.

References clang::SrcMgr::C_User, clang::LineEntry::FileKind, clang::LineTableInfo::FindNearestLineEntry(), getDecomposedExpansionLoc(), clang::SrcMgr::SLocEntry::getFile(), clang::SrcMgr::FileInfo::getFileCharacteristic(), getSLocEntry(), clang::SrcMgr::FileInfo::hasLineDirectives(), clang::SrcMgr::SLocEntry::isFile(), and clang::SourceLocation::isInvalid().

Referenced by clang::Preprocessor::HandleEndOfFile(), isInExternCSystemHeader(), and isInSystemHeader().

const FileEntry* clang::SourceManager::getFileEntryForID ( FileID  FID) const
inline
const FileEntry* clang::SourceManager::getFileEntryForSLocEntry ( const SrcMgr::SLocEntry sloc) const
inline

Returns the FileEntry record for the provided SLocEntry.

Definition at line 906 of file SourceManager.h.

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

FileID clang::SourceManager::getFileID ( SourceLocation  SpellingLoc) const
inline

Return the FileID for a SourceLocation.

This is a very hot method that is used for all SourceManager queries that start with a SourceLocation object. It is responsible for finding the entry in SLocEntryTable which contains the specified location.

Definition at line 954 of file SourceManager.h.

Referenced by clang::markup::AddFID(), clang::tooling::Replacement::apply(), clang::ast_matchers::AST_POLYMORPHIC_MATCHER_P(), checkConfigMacro(), checkObjCUnusedIvar(), clang::Lexer::Create_PragmaLexer(), clang::TextDiagnostic::emitDiagnosticLoc(), getBufferName(), clang::ModuleMap::getContainingModuleMapFile(), getDecomposedExpansionLoc(), getDecomposedLoc(), getDecomposedSpellingLoc(), clang::markup::GetFID(), getFilename(), getImmediateExpansionRange(), getImmediateMacroName(), clang::Lexer::getImmediateMacroName(), getLengthOnSingleLine(), clang::Preprocessor::getModuleForLocation(), getModuleImportLoc(), getNullabilityCompletenessCheckFileID(), clang::LogDiagnosticPrinter::HandleDiagnostic(), clang::VerifyDiagnosticConsumer::HandleDiagnostic(), clang::ento::PathDiagnosticConsumer::HandlePathDiagnostic(), clang::html::HighlightMacros(), clang::html::HighlightRange(), highlightRange(), clang::ModuleMap::inferModuleFromLocation(), isAtEndOfImmediateMacroExpansion(), IsFromSameFile(), isMacroArgExpansion(), isMacroBodyExpansion(), isWrittenInMainFile(), isWrittenInSameFile(), clang::Lexer::makeFileCharRange(), mapDiagnosticRanges(), ParseDirective(), PrintUnexpected(), Scan(), and shouldIgnoreMacro().

unsigned SourceManager::getFileIDSize ( FileID  FID) const

The size of the SLocEntry that FID represents.

Definition at line 1536 of file SourceManager.cpp.

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

Referenced by getLocForEndOfFile().

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 1033 of file SourceManager.h.

References clang::SourceLocation::isFileID().

Referenced by clang::ASTUnit::addFileLevelDecl(), clang::SanitizerBlacklist::isBlacklistedLocation(), isPreprocessedEntityIfInFileID(), clang::ASTReader::isPreprocessedEntityInFileID(), and makeStandaloneDiagnostic().

FileManager& clang::SourceManager::getFileManager ( ) const
inline
StringRef clang::SourceManager::getFilename ( SourceLocation  SpellingLoc) const
inline
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 1135 of file SourceManager.h.

References getDecomposedLoc().

Referenced by getLengthOnSingleLine(), clang::html::HighlightRange(), makeStandaloneDiagnostic(), makeStandaloneRange(), clang::RewriteMacrosInInput(), and clang::html::SyntaxHighlight().

std::pair< SourceLocation, SourceLocation > SourceManager::getImmediateExpansionRange ( SourceLocation  Loc) const

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

Precondition
Loc is required to be an expansion location.

getImmediateExpansionRange - Loc is required to be an expansion location. Return the start/end of the expansion information.

Definition at line 974 of file SourceManager.cpp.

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

Referenced by clang::edit::EditedSource::canInsertInOffset(), checkAllAtProps(), CheckMoveOnConstruction(), clang::Sema::DiagnoseAbsenceOfOverrideControl(), getExpansionRange(), GetFullTypeForDeclarator(), getImmediateMacroCallerLoc(), getImmediateMacroName(), clang::Lexer::getImmediateMacroName(), handleObjCOwnershipTypeAttr(), and mapDiagnosticRanges().

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 1537 of file SourceManager.h.

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

Referenced by getTopMostMacro(), IsFromSameFile(), and IsInAnyMacroBody().

SourceLocation SourceManager::getImmediateSpellingLoc ( SourceLocation  Loc) const

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.

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 963 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(), clang::Lexer::makeFileCharRange(), and mapDiagnosticRanges().

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 997 of file SourceManager.h.

References clang::SrcMgr::SLocEntry::getFile(), clang::SrcMgr::FileInfo::getIncludeLoc(), getSLocEntry(), and clang::SrcMgr::SLocEntry::isFile().

Referenced by clang::Preprocessor::HandleEndOfFile(), and clang::ModuleMap::inferModuleFromLocation().

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

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.

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.

SourceLineCache for it on demand.

Definition at line 1275 of file SourceManager.cpp.

References ComputeLineNumbers(), clang::SrcMgr::FileInfo::getContentCache(), clang::SrcMgr::SLocEntry::getFile(), getSLocEntry(), clang::SrcMgr::SLocEntry::isFile(), and clang::FileID::isInvalid().

Referenced by buildFixItInsertionLine(), clang::TextDiagnostic::emitDiagnosticLoc(), getExpansionLineNumber(), getPresumedLoc(), clang::ASTContext::getRawCommentForDeclNoCache(), getSpellingLineNumber(), clang::Rewriter::IncreaseIndentation(), and clang::Rewriter::InsertText().

LineTableInfo & SourceManager::getLineTable ( )

Retrieve the stored line table.

Definition at line 356 of file SourceManager.cpp.

unsigned SourceManager::getLineTableFilenameID ( StringRef  Name)

Return the uniqued ID for the specified filename.

getLineTableFilenameID - Return the uniqued ID for the specified filename.

Definition at line 281 of file SourceManager.cpp.

Referenced by clang::Preprocessor::HandlePragmaSystemHeader().

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 1480 of file SourceManager.h.

Referenced by translateFile().

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

Get a local SLocEntry. This is exposed for indexing.

Definition at line 1470 of file SourceManager.h.

Referenced by translateFile().

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

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

Definition at line 985 of file SourceManager.h.

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

Referenced by clang::ASTUnit::getEndOfPreambleFileID().

SourceLocation clang::SourceManager::getLocForStartOfFile ( FileID  FID) const
inline
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 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.

If.

  • 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 1919 of file SourceManager.cpp.

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

Referenced by clang::ASTUnit::getLocation().

FileID clang::SourceManager::getMainFileID ( ) const
inline
llvm::MemoryBuffer * SourceManager::getMemoryBufferForFile ( const FileEntry File,
bool Invalid = nullptr 
)

Retrieve the memory buffer associated with the given file.

Parameters
InvalidIf non-NULL, will be set true if an error occurs while retrieving the memory buffer.

Definition at line 636 of file SourceManager.cpp.

Referenced by clang::Preprocessor::SetCodeCompletionPoint().

SourceManager::MemoryBufferSizes SourceManager::getMemoryBufferSizes ( ) const

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

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

Definition at line 2140 of file SourceManager.cpp.

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

Retrieve the module build stack.

Definition at line 719 of file SourceManager.h.

Referenced by clang::GenerateModuleAction::BeginSourceFileAction(), compileModuleImpl(), and clang::CompilerInstance::loadModule().

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

Definition at line 1497 of file SourceManager.h.

Referenced by getFileIDSize(), and clang::TokenLexer::Init().

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 923 of file SourceManager.h.

References clang::SrcMgr::SLocEntry::getFile(), getSLocEntry(), and clang::SrcMgr::SLocEntry::isFile().

FileID clang::SourceManager::getPreambleFileID ( ) const
inline
unsigned SourceManager::getPresumedColumnNumber ( SourceLocation  Loc,
bool Invalid = nullptr 
) const
unsigned SourceManager::getPresumedLineNumber ( SourceLocation  Loc,
bool Invalid = nullptr 
) const
PresumedLoc SourceManager::getPresumedLoc ( SourceLocation  Loc,
bool  UseLineDirectives = true 
) const

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.

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.

Definition at line 1441 of file SourceManager.cpp.

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

Referenced by clang::DoPrintPreprocessedInput(), clang::CodeGen::CodeGenModule::EmitAnnotationLineNo(), clang::CodeGen::CodeGenModule::EmitAnnotationUnit(), getPresumedColumnNumber(), getPresumedLineNumber(), clang::LogDiagnosticPrinter::HandleDiagnostic(), clang::Preprocessor::HandlePragmaSystemHeader(), clang::SourceLocation::print(), ReadLineMarkerFlags(), and clang::CodeGen::CGDebugInfo::setLocation().

const SrcMgr::SLocEntry& clang::SourceManager::getSLocEntry ( FileID  FID,
bool Invalid = nullptr 
) const
inline
unsigned SourceManager::getSpellingColumnNumber ( SourceLocation  Loc,
bool Invalid = nullptr 
) const
unsigned SourceManager::getSpellingLineNumber ( SourceLocation  Loc,
bool Invalid = nullptr 
) const

Definition at line 1369 of file SourceManager.cpp.

References getDecomposedSpellingLoc(), getLineNumber(), and isInvalid().

Referenced by ParseDirective().

SourceLocation clang::SourceManager::getSpellingLoc ( SourceLocation  Loc) const
inline
bool clang::SourceManager::hasFileInfo ( const FileEntry File) const
inline

Definition at line 1458 of file SourceManager.h.

Referenced by clang::Preprocessor::HandleEndOfFile().

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

Determine if the source manager has a line table.

Definition at line 1364 of file SourceManager.h.

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 1049 of file SourceManager.cpp.

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

Referenced by clang::Lexer::isAtEndOfMacroExpansion().

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 1014 of file SourceManager.cpp.

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

Referenced by CheckMoveOnConstruction(), and clang::Lexer::isAtStartOfMacroExpansion().

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 1435 of file SourceManager.h.

Referenced by clang::TokenLexer::Lex().

bool clang::SourceManager::isBeforeInSLocAddrSpace ( SourceLocation  LHS,
unsigned  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 1443 of file SourceManager.h.

bool SourceManager::isBeforeInTranslationUnit ( SourceLocation  LHS,
SourceLocation  RHS 
) const
bool clang::SourceManager::isFileOverridden ( const FileEntry File)
inline

Returns true if the file contents have been overridden.

Definition at line 837 of file SourceManager.h.

Referenced by disableFileContentsOverride().

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

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

Definition at line 1319 of file SourceManager.h.

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

bool clang::SourceManager::isInFileID ( SourceLocation  Loc,
FileID  FID,
unsigned RelativeOffset = nullptr 
) const
inline
bool SourceManager::isInMainFile ( SourceLocation  Loc) const
bool clang::SourceManager::isInSameSLocAddrSpace ( SourceLocation  LHS,
SourceLocation  RHS,
int *  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 1201 of file SourceManager.h.

Referenced by isEmptyARCMTMacroStatement(), and updateConsecutiveMacroArgTokens().

bool clang::SourceManager::isInSLocAddrSpace ( SourceLocation  Loc,
SourceLocation  Start,
unsigned  Length,
unsigned 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 1176 of file SourceManager.h.

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

Returns whether Loc is expanded from a macro in a system header.

Definition at line 1324 of file SourceManager.h.

References getSpellingLoc(), isInSystemHeader(), and clang::SourceLocation::isMacroID().

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

bool clang::SourceManager::isLoadedFileID ( FileID  FID) const
inline
bool clang::SourceManager::isLoadedSourceLocation ( SourceLocation  Loc) const
inline

Returns true if Loc came from a PCH/Module.

Definition at line 1515 of file SourceManager.h.

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

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

Definition at line 1531 of file SourceManager.h.

References isLoadedFileID().

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

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

Definition at line 1520 of file SourceManager.h.

Referenced by clang::ASTUnit::addFileLevelDecl().

bool SourceManager::isMacroArgExpansion ( SourceLocation  Loc) const

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

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

Definition at line 998 of file SourceManager.cpp.

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

Referenced by clang::edit::EditedSource::canInsertInOffset(), clang::Lexer::GetBeginningOfToken(), getImmediateMacroCallerLoc(), getImmediateMacroName(), clang::ASTContext::getRawCommentForDeclNoCache(), and mapDiagnosticRanges().

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 1006 of file SourceManager.cpp.

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

Referenced by DiagnoseUnusedComparison(), clang::Sema::DiagnoseUnusedExprResult(), and IsInAnyMacroBody().

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 1309 of file SourceManager.h.

References getFileID(), and getMainFileID().

Referenced by clang::Sema::ActOnModuleInclude(), IsFromSameFile(), and clang::RewriteMacrosInInput().

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 1301 of file SourceManager.h.

References getFileID().

Referenced by IsFromSameFile(), and removePunyEdges().

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

Get the number of loaded SLocEntries we have.

Definition at line 1477 of file SourceManager.h.

Referenced by translateFile().

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

Get the number of local SLocEntries we have.

Definition at line 1467 of file SourceManager.h.

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

void SourceManager::overrideFileContents ( const FileEntry SourceFile,
llvm::MemoryBuffer *  Buffer,
bool  DoNotFree 
)

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.
DoNotFreeIf true, then the buffer will not be freed when the source manager is destroyed.

Definition at line 643 of file SourceManager.cpp.

Referenced by clang::tooling::applyAllReplacements(), compileModuleImpl(), clang::index::SimpleFormatContext::createInMemoryFile(), InitializeFileRemapping(), clang::CompilerInstance::InitializeSourceManager(), overrideFileContents(), clang::ASTReader::ReadSLocEntry(), clang::format::reformat(), and clang::Preprocessor::SetCodeCompletionPoint().

void clang::SourceManager::overrideFileContents ( const FileEntry SourceFile,
std::unique_ptr< llvm::MemoryBuffer >  Buffer 
)
inline

Definition at line 822 of file SourceManager.h.

References overrideFileContents().

void SourceManager::overrideFileContents ( const FileEntry SourceFile,
const FileEntry 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 655 of file SourceManager.cpp.

References clang::FileEntry::getSize().

void SourceManager::PrintStats ( ) const

Print statistics to stderr.

Definition at line 2108 of file SourceManager.cpp.

References fileinfo_begin(), and fileinfo_end().

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

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

Push an entry to the module build stack.

Definition at line 730 of file SourceManager.h.

Referenced by clang::GenerateModuleAction::BeginSourceFileAction(), and compileModuleImpl().

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

Definition at line 1499 of file SourceManager.h.

Referenced by clang::ASTReader::ASTReader().

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

Set the file ID for the main source file.

Definition at line 742 of file SourceManager.h.

Referenced by clang::CompilerInstance::InitializeSourceManager(), and clang::ASTReader::ReadAST().

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

Set the module build stack.

Definition at line 724 of file SourceManager.h.

Referenced by compileModuleImpl().

void clang::SourceManager::setNumCreatedFIDsForFileID ( FileID  FID,
unsigned  NumFIDs 
) const
inline

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

Definition at line 934 of file SourceManager.h.

References clang::SrcMgr::SLocEntry::getFile(), getSLocEntry(), and clang::SrcMgr::SLocEntry::isFile().

Referenced by clang::Preprocessor::HandleEndOfFile().

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 710 of file SourceManager.h.

Referenced by InitializeFileRemapping().

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

Set the file ID for the precompiled preamble.

Definition at line 747 of file SourceManager.h.

References clang::FileID::isInvalid().

Referenced by clang::ASTReader::ReadAST().

FileID SourceManager::translateFile ( const FileEntry SourceFile) const
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 1578 of file SourceManager.cpp.

References translateFile(), and translateLineCol().

Referenced by clang::tooling::Replacement::apply(), clang::CodeGenAction::ExecuteAction(), clang::ASTUnit::getLocation(), and ParseDirective().

SourceLocation SourceManager::translateLineCol ( FileID  FID,
unsigned  Line,
unsigned  Col 
) const

Get the source location in FID for the given line:col. Returns null location if FID is not a file SLocEntry.

Get the source location in.

  • FID for the given line:col. Returns null location if
  • FID is not a file SLocEntry.

Definition at line 1707 of file SourceManager.cpp.

References ComputeLineNumbers(), clang::SrcMgr::FileInfo::getContentCache(), clang::SrcMgr::SLocEntry::getFile(), clang::SourceLocation::getLocWithOffset(), clang::SrcMgr::SLocEntry::getOffset(), getSLocEntry(), clang::SrcMgr::SLocEntry::isFile(), and clang::FileID::isInvalid().

Referenced by ParseDirective(), and translateFileLineCol().

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 716 of file SourceManager.h.

Friends And Related Function Documentation

friend class ASTReader
friend

Definition at line 1643 of file SourceManager.h.

friend class ASTWriter
friend

Definition at line 1644 of file SourceManager.h.


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