clang API Documentation

Public Member Functions | Static Public Member Functions | Protected Member Functions
clang::TextDiagnostic Class Reference

Class to encapsulate the logic for formatting and printing a textual diagnostic message. More...

#include <TextDiagnostic.h>

Inheritance diagram for clang::TextDiagnostic:
Inheritance graph
[legend]
Collaboration diagram for clang::TextDiagnostic:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 TextDiagnostic (raw_ostream &OS, const LangOptions &LangOpts, const DiagnosticOptions &DiagOpts)
virtual ~TextDiagnostic ()

Static Public Member Functions

static void printDiagnosticLevel (raw_ostream &OS, DiagnosticsEngine::Level Level, bool ShowColors)
 Print the diagonstic level to a raw_ostream.
static void printDiagnosticMessage (raw_ostream &OS, DiagnosticsEngine::Level Level, StringRef Message, unsigned CurrentColumn, unsigned Columns, bool ShowColors)
 Pretty-print a diagnostic message to a raw_ostream.

Protected Member Functions

virtual void emitDiagnosticMessage (SourceLocation Loc, PresumedLoc PLoc, DiagnosticsEngine::Level Level, StringRef Message, ArrayRef< CharSourceRange > Ranges, const SourceManager *SM, DiagOrStoredDiag D)
virtual void emitDiagnosticLoc (SourceLocation Loc, PresumedLoc PLoc, DiagnosticsEngine::Level Level, ArrayRef< CharSourceRange > Ranges, const SourceManager &SM)
 Print out the file/line/column information and include trace.
virtual void emitCodeContext (SourceLocation Loc, DiagnosticsEngine::Level Level, SmallVectorImpl< CharSourceRange > &Ranges, ArrayRef< FixItHint > Hints, const SourceManager &SM)
virtual void emitBasicNote (StringRef Message)
virtual void emitIncludeLocation (SourceLocation Loc, PresumedLoc PLoc, const SourceManager &SM)

Detailed Description

Class to encapsulate the logic for formatting and printing a textual diagnostic message.

This class provides an interface for building and emitting a textual diagnostic, including all of the macro backtraces, caret diagnostics, FixIt Hints, and code snippets. In the presence of macros this involves a recursive process, synthesizing notes for each macro expansion.

The purpose of this class is to isolate the implementation of printing beautiful text diagnostics from any particular interfaces. The Clang DiagnosticClient is implemented through this class as is diagnostic printing coming out of libclang.

Definition at line 37 of file TextDiagnostic.h.


Constructor & Destructor Documentation

TextDiagnostic::TextDiagnostic ( raw_ostream &  OS,
const LangOptions LangOpts,
const DiagnosticOptions DiagOpts 
)

Definition at line 604 of file TextDiagnostic.cpp.

TextDiagnostic::~TextDiagnostic ( ) [virtual]

Definition at line 609 of file TextDiagnostic.cpp.


Member Function Documentation

void TextDiagnostic::emitBasicNote ( StringRef  Message) [protected, virtual]

Implements clang::DiagnosticRenderer.

Definition at line 797 of file TextDiagnostic.cpp.

virtual void clang::TextDiagnostic::emitCodeContext ( SourceLocation  Loc,
DiagnosticsEngine::Level  Level,
SmallVectorImpl< CharSourceRange > &  Ranges,
ArrayRef< FixItHint Hints,
const SourceManager SM 
) [inline, protected, virtual]

Implements clang::DiagnosticRenderer.

Definition at line 93 of file TextDiagnostic.h.

void TextDiagnostic::emitDiagnosticLoc ( SourceLocation  Loc,
PresumedLoc  PLoc,
DiagnosticsEngine::Level  Level,
ArrayRef< CharSourceRange Ranges,
const SourceManager SM 
) [protected, virtual]
void TextDiagnostic::emitDiagnosticMessage ( SourceLocation  Loc,
PresumedLoc  PLoc,
DiagnosticsEngine::Level  Level,
StringRef  Message,
ArrayRef< CharSourceRange Ranges,
const SourceManager SM,
DiagOrStoredDiag  D 
) [protected, virtual]
void TextDiagnostic::emitIncludeLocation ( SourceLocation  Loc,
PresumedLoc  PLoc,
const SourceManager SM 
) [protected, virtual]
void TextDiagnostic::printDiagnosticLevel ( raw_ostream &  OS,
DiagnosticsEngine::Level  Level,
bool  ShowColors 
) [static]

Print the diagonstic level to a raw_ostream.

This is a static helper that handles colorizing the level and formatting it into an arbitrary output stream. This is used internally by the TextDiagnostic emission code, but it can also be used directly by consumers that don't have a source manager or other state that the full TextDiagnostic logic requires.

Definition at line 635 of file TextDiagnostic.cpp.

References clang::DiagnosticsEngine::Error, errorColor, clang::DiagnosticsEngine::Fatal, fatalColor, clang::DiagnosticsEngine::Ignored, clang::DiagnosticsEngine::Note, noteColor, clang::DiagnosticsEngine::Warning, and warningColor.

Referenced by emitDiagnosticMessage(), and clang::TextDiagnosticPrinter::HandleDiagnostic().

void TextDiagnostic::printDiagnosticMessage ( raw_ostream &  OS,
DiagnosticsEngine::Level  Level,
StringRef  Message,
unsigned  CurrentColumn,
unsigned  Columns,
bool  ShowColors 
) [static]

Pretty-print a diagnostic message to a raw_ostream.

This is a static helper to handle the line wrapping, colorizing, and rendering of a diagnostic message to a particular ostream. It is publically visible so that clients which do not have sufficient state to build a complete TextDiagnostic object can still get consistent formatting of their diagnostic messages.

Parameters:
OSWhere the message is printed
LevelUsed to colorizing the message
MessageThe text actually printed
CurrentColumnThe starting column of the first line, accounting for any prefix.
ColumnsThe number of columns to use in line-wrapping, 0 disables all line-wrapping.
ShowColorsEnable colorizing of the message.

Definition at line 664 of file TextDiagnostic.cpp.

References clang::DiagnosticsEngine::Error, clang::DiagnosticsEngine::Fatal, printWordWrapped(), savedColor, and clang::DiagnosticsEngine::Warning.

Referenced by emitDiagnosticMessage(), and clang::TextDiagnosticPrinter::HandleDiagnostic().


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