17 #include "llvm/Support/raw_ostream.h" 19 using namespace clang;
30 OS << Message <<
'\n';
39 OS <<
"<invalid loc>";
63 LLVM_DUMP_METHOD std::string 64 SourceLocation::printToString(const SourceManager &SM) const { 66 llvm::raw_string_ostream OS(S); 71 LLVM_DUMP_METHOD void SourceLocation::dump(const SourceManager &SM) const { 72 print(llvm::errs(), SM); 75 //===----------------------------------------------------------------------===// 77 //===----------------------------------------------------------------------===// 79 FileID FullSourceLoc::getFileID() const { 81 return SrcMgr->getFileID(*this); 85 FullSourceLoc FullSourceLoc::getExpansionLoc() const { 87 return FullSourceLoc(SrcMgr->getExpansionLoc(*this), *SrcMgr); 90 FullSourceLoc FullSourceLoc::getSpellingLoc() const { 92 return FullSourceLoc(SrcMgr->getSpellingLoc(*this), *SrcMgr); 95 FullSourceLoc FullSourceLoc::getFileLoc() const { 97 return FullSourceLoc(SrcMgr->getFileLoc(*this), *SrcMgr); 100 std::pair<FullSourceLoc, FullSourceLoc> 101 FullSourceLoc::getImmediateExpansionRange() const { 103 std::pair<SourceLocation, SourceLocation> Range = 104 SrcMgr->getImmediateExpansionRange(*this); 105 return std::make_pair(FullSourceLoc(Range.first, *SrcMgr), 106 FullSourceLoc(Range.second, *SrcMgr)); 109 PresumedLoc FullSourceLoc::getPresumedLoc(bool UseLineDirectives) const { 111 return PresumedLoc(); 113 return SrcMgr->getPresumedLoc(*this, UseLineDirectives); 116 bool FullSourceLoc::isMacroArgExpansion(FullSourceLoc *StartLoc) const { 118 return SrcMgr->isMacroArgExpansion(*this, StartLoc); 121 FullSourceLoc FullSourceLoc::getImmediateMacroCallerLoc() const { 123 return FullSourceLoc(SrcMgr->getImmediateMacroCallerLoc(*this), *SrcMgr); 126 std::pair<FullSourceLoc, StringRef> FullSourceLoc::getModuleImportLoc() const { 128 return std::make_pair(FullSourceLoc(), StringRef()); 130 std::pair<SourceLocation, StringRef> ImportLoc = 131 SrcMgr->getModuleImportLoc(*this); 132 return std::make_pair(FullSourceLoc(ImportLoc.first, *SrcMgr), 136 unsigned FullSourceLoc::getFileOffset() const { 138 return SrcMgr->getFileOffset(*this); 141 unsigned FullSourceLoc::getLineNumber(bool *Invalid) const { 143 return SrcMgr->getLineNumber(getFileID(), getFileOffset(), Invalid); 146 unsigned FullSourceLoc::getColumnNumber(bool *Invalid) const { 148 return SrcMgr->getColumnNumber(getFileID(), getFileOffset(), Invalid); 151 std::pair<FullSourceLoc, FullSourceLoc> 152 FullSourceLoc::getExpansionRange() const { 154 std::pair<SourceLocation, SourceLocation> Range = 155 SrcMgr->getExpansionRange(*this); 156 return std::make_pair(FullSourceLoc(Range.first, *SrcMgr), 157 FullSourceLoc(Range.second, *SrcMgr)); 160 const FileEntry *FullSourceLoc::getFileEntry() const { 162 return SrcMgr->getFileEntryForID(getFileID()); 165 unsigned FullSourceLoc::getExpansionLineNumber(bool *Invalid) const { 167 return SrcMgr->getExpansionLineNumber(*this, Invalid); 170 unsigned FullSourceLoc::getExpansionColumnNumber(bool *Invalid) const { 172 return SrcMgr->getExpansionColumnNumber(*this, Invalid); 175 unsigned FullSourceLoc::getSpellingLineNumber(bool *Invalid) const { 177 return SrcMgr->getSpellingLineNumber(*this, Invalid); 180 unsigned FullSourceLoc::getSpellingColumnNumber(bool *Invalid) const { 182 return SrcMgr->getSpellingColumnNumber(*this, Invalid); 185 bool FullSourceLoc::isInSystemHeader() const { 187 return SrcMgr->isInSystemHeader(*this); 190 bool FullSourceLoc::isBeforeInTranslationUnitThan(SourceLocation Loc) const { 192 return SrcMgr->isBeforeInTranslationUnit(*this, Loc); 195 LLVM_DUMP_METHOD void FullSourceLoc::dump() const { 196 SourceLocation::dump(*SrcMgr); 199 const char *FullSourceLoc::getCharacterData(bool *Invalid) const { 201 return SrcMgr->getCharacterData(*this, Invalid); 204 StringRef FullSourceLoc::getBufferData(bool *Invalid) const { 206 return SrcMgr->getBuffer(SrcMgr->getFileID(*this), Invalid)->getBuffer(); 209 std::pair<FileID, unsigned> FullSourceLoc::getDecomposedLoc() const { 210 return SrcMgr->getDecomposedLoc(*this); Defines the SourceManager interface.
Defines the PrettyStackTraceEntry class, which is used to make crashes give more contextual informati...
void print(raw_ostream &OS) const override
void print(raw_ostream &OS, const SourceManager &SM) const
SourceLocation getExpansionLoc(SourceLocation Loc) const
Given a SourceLocation object Loc, return the expansion location referenced by the ID...
SourceLocation getSpellingLoc(SourceLocation Loc) const
Given a SourceLocation object, return the spelling location referenced by the ID. ...
bool isInvalid() const
Return true if this object is invalid or uninitialized.
unsigned getLine() const
Return the presumed line number of this location.
Represents an unpacked "presumed" location which can be presented to the user.
const char * getFilename() const
Return the presumed filename of this location.
unsigned getColumn() const
Return the presumed column number of this location.
Dataflow Directional Tag Classes.
bool isValid() const
Return true if this is a valid SourceLocation object.
PresumedLoc getPresumedLoc(SourceLocation Loc, bool UseLineDirectives=true) const
Returns the "presumed" location of a SourceLocation specifies.
Defines the clang::SourceLocation class and associated facilities.
This class handles loading and caching of source files into memory.