15f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer//===--- TextDiagnosticBuffer.h - Buffer Text Diagnostics -------*- C++ -*-===// 25f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// 35f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// The LLVM Compiler Infrastructure 45f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// 50bc735ffcfb223c0186419547abaa5c84482663eChris Lattner// This file is distributed under the University of Illinois Open Source 60bc735ffcfb223c0186419547abaa5c84482663eChris Lattner// License. See LICENSE.TXT for details. 75f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// 85f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer//===----------------------------------------------------------------------===// 95f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// 105f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// This is a concrete diagnostic client, which buffers the diagnostic messages. 115f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// 125f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer//===----------------------------------------------------------------------===// 135f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 14d37ee16367bbf8058799148d958cbf4fbabc9fb7Daniel Dunbar#ifndef LLVM_CLANG_FRONTEND_TEXT_DIAGNOSTIC_BUFFER_H_ 15d37ee16367bbf8058799148d958cbf4fbabc9fb7Daniel Dunbar#define LLVM_CLANG_FRONTEND_TEXT_DIAGNOSTIC_BUFFER_H_ 165f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 177bfaaaecb3113f955db31e8d8a51acffd1bc0c27Nico Weber#include "clang/Basic/Diagnostic.h" 185f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include <vector> 195f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 205f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencernamespace clang { 215f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 225f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerclass Preprocessor; 235f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerclass SourceManager; 245f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 2578ad0b98848c17a0a11847fa1d456e2dfec8aa2fDavid Blaikieclass TextDiagnosticBuffer : public DiagnosticConsumer { 265f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerpublic: 275f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer typedef std::vector<std::pair<SourceLocation, std::string> > DiagList; 285f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer typedef DiagList::iterator iterator; 295f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer typedef DiagList::const_iterator const_iterator; 305f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerprivate: 316bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines DiagList Errors, Warnings, Remarks, Notes; 325f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerpublic: 335f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer const_iterator err_begin() const { return Errors.begin(); } 345f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer const_iterator err_end() const { return Errors.end(); } 355f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 365f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer const_iterator warn_begin() const { return Warnings.begin(); } 375f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer const_iterator warn_end() const { return Warnings.end(); } 385f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 396bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines const_iterator remark_begin() const { return Remarks.begin(); } 406bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines const_iterator remark_end() const { return Remarks.end(); } 416bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 42233f74b29b2864d5984e13f3ae10a21404ef82e8Douglas Gregor const_iterator note_begin() const { return Notes.begin(); } 43233f74b29b2864d5984e13f3ae10a21404ef82e8Douglas Gregor const_iterator note_end() const { return Notes.end(); } 44233f74b29b2864d5984e13f3ae10a21404ef82e8Douglas Gregor 45651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines void HandleDiagnostic(DiagnosticsEngine::Level DiagLevel, 46651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines const Diagnostic &Info) override; 47c238955f09f3bce9386e6553d5d12f79e8cc2b08Daniel Dunbar 48c238955f09f3bce9386e6553d5d12f79e8cc2b08Daniel Dunbar /// FlushDiagnostics - Flush the buffered diagnostics to an given 49c238955f09f3bce9386e6553d5d12f79e8cc2b08Daniel Dunbar /// diagnostic engine. 50d6471f7c1921c7802804ce3ff6fe9768310f72b9David Blaikie void FlushDiagnostics(DiagnosticsEngine &Diags) const; 515f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer}; 525f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 535f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer} // end namspace clang 545f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 555f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#endif 56