mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-18 16:03:17 +00:00
give the SourceMgr object a cookie.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100504 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8f0f480a10
commit
214aa8a2cf
@ -35,7 +35,8 @@ public:
|
||||
/// DiagHandlerTy - Clients that want to handle their own diagnostics in a
|
||||
/// custom way can register a function pointer+context as a diagnostic
|
||||
/// handler. It gets called each time PrintMessage is invoked.
|
||||
typedef void (*DiagHandlerTy)(const SMDiagnostic&, void *Context);
|
||||
typedef void (*DiagHandlerTy)(const SMDiagnostic&, void *Context,
|
||||
unsigned LocCookie);
|
||||
private:
|
||||
struct SrcBuffer {
|
||||
/// Buffer - The memory buffer for the file.
|
||||
@ -59,6 +60,7 @@ private:
|
||||
|
||||
DiagHandlerTy DiagHandler;
|
||||
void *DiagContext;
|
||||
unsigned DiagLocCookie;
|
||||
|
||||
SourceMgr(const SourceMgr&); // DO NOT IMPLEMENT
|
||||
void operator=(const SourceMgr&); // DO NOT IMPLEMENT
|
||||
@ -71,10 +73,12 @@ public:
|
||||
}
|
||||
|
||||
/// setDiagHandler - Specify a diagnostic handler to be invoked every time
|
||||
/// PrintMessage is called.
|
||||
void setDiagHandler(DiagHandlerTy DH, void *Ctx = 0) {
|
||||
/// PrintMessage is called. Ctx and Cookie are passed into the handler when
|
||||
/// it is invoked.
|
||||
void setDiagHandler(DiagHandlerTy DH, void *Ctx = 0, unsigned Cookie = 0) {
|
||||
DiagHandler = DH;
|
||||
DiagContext = Ctx;
|
||||
DiagLocCookie = Cookie;
|
||||
}
|
||||
|
||||
const SrcBuffer &getBufferInfo(unsigned i) const {
|
||||
|
@ -178,7 +178,8 @@ void SourceMgr::PrintMessage(SMLoc Loc, const std::string &Msg,
|
||||
const char *Type, bool ShowLine) const {
|
||||
// Report the message with the diagnostic handler if present.
|
||||
if (DiagHandler) {
|
||||
DiagHandler(GetMessage(Loc, Msg, Type, ShowLine), DiagContext);
|
||||
DiagHandler(GetMessage(Loc, Msg, Type, ShowLine),
|
||||
DiagContext, DiagLocCookie);
|
||||
return;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user