16 #ifndef LLVM_SUPPORT_SOURCEMGR_H
17 #define LLVM_SUPPORT_SOURCEMGR_H
58 std::vector<SrcBuffer> Buffers;
62 std::vector<std::string> IncludeDirectories;
66 mutable void *LineNoCache;
72 void operator=(const
SourceMgr&) LLVM_DELETED_FUNCTION;
74 SourceMgr() : LineNoCache(0), DiagHandler(0), DiagContext(0) {}
78 IncludeDirectories = Dirs;
92 assert(i < Buffers.size() &&
"Invalid Buffer ID!");
97 assert(i < Buffers.size() &&
"Invalid Buffer ID!");
98 return Buffers[i].Buffer;
102 return Buffers.size();
106 assert(i < Buffers.size() &&
"Invalid Buffer ID!");
107 return Buffers[i].IncludeLoc;
115 NB.IncludeLoc = IncludeLoc;
116 Buffers.push_back(NB);
117 return Buffers.size() - 1;
125 std::string &IncludedFile);
139 std::pair<unsigned, unsigned>
151 bool ShowColors =
true)
const;
157 bool ShowColors =
true)
const;
187 : Range(Loc, Loc), Text(Insertion.str()) {
193 : Range(R), Text(Replacement.str()) {
205 return Text < Other.Text;
215 std::string Filename;
216 int LineNo, ColumnNo;
218 std::string Message, LineContents;
219 std::vector<std::pair<unsigned, unsigned> > Ranges;
225 : SM(0), LineNo(0), ColumnNo(0), Kind(
SourceMgr::DK_Error) {}
228 : SM(0), Filename(filename), LineNo(-1), ColumnNo(-1), Kind(Knd),
235 ArrayRef<std::pair<unsigned,unsigned> > Ranges,
251 FixIts.push_back(Hint);
259 bool ShowColors =
true)
const;
void PrintIncludeStack(SMLoc IncludeLoc, raw_ostream &OS) const
const char * getPointer() const
SMFixIt(SMLoc Loc, const Twine &Insertion)
void * getDiagContext() const
void addFixIt(const SMFixIt &Hint)
StringRef getLineContents() const
size_t AddIncludeFile(const std::string &Filename, SMLoc IncludeLoc, std::string &IncludedFile)
StringRef getMessage() const
StringRef getFilename() const
StringRef getText() const
void(* DiagHandlerTy)(const SMDiagnostic &, void *Context)
ArrayRef< SMFixIt > getFixIts() const
const SrcBuffer & getBufferInfo(unsigned i) const
Represents a single fixit, a replacement of one range of text with another.
ArrayRef< std::pair< unsigned, unsigned > > getRanges() const
SourceMgr::DiagKind getKind() const
bool operator<(const SMFixIt &Other) const
SMLoc getParentIncludeLoc(unsigned i) const
#define LLVM_DELETED_FUNCTION
unsigned FindLineNumber(SMLoc Loc, int BufferID=-1) const
void print(const char *ProgName, raw_ostream &S, bool ShowColors=true) const
const MemoryBuffer * getMemoryBuffer(unsigned i) const
int FindBufferContainingLoc(SMLoc Loc) const
std::pair< unsigned, unsigned > getLineAndColumn(SMLoc Loc, int BufferID=-1) const
void setDiagHandler(DiagHandlerTy DH, void *Ctx=0)
size_t getNumBuffers() const
void setIncludeDirs(const std::vector< std::string > &Dirs)
SMDiagnostic(StringRef filename, SourceMgr::DiagKind Knd, StringRef Msg)
SMDiagnostic GetMessage(SMLoc Loc, DiagKind Kind, const Twine &Msg, ArrayRef< SMRange > Ranges=None, ArrayRef< SMFixIt > FixIts=None) const
const SourceMgr * getSourceMgr() const
const StringRef filename(StringRef path)
Get filename.
void PrintMessage(raw_ostream &OS, SMLoc Loc, DiagKind Kind, const Twine &Msg, ArrayRef< SMRange > Ranges=None, ArrayRef< SMFixIt > FixIts=None, bool ShowColors=true) const
Represents a location in source code.
size_t AddNewSourceBuffer(MemoryBuffer *F, SMLoc IncludeLoc)
SMFixIt(SMRange R, const Twine &Replacement)
DiagHandlerTy getDiagHandler() const