clang 20.0.0git
ASTDumperUtils.h
Go to the documentation of this file.
1//===--- ASTDumperUtils.h - Printing of AST nodes -------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file implements AST utilities for traversal down the tree.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_CLANG_AST_ASTDUMPERUTILS_H
14#define LLVM_CLANG_AST_ASTDUMPERUTILS_H
15
16#include "llvm/Support/raw_ostream.h"
17
18namespace clang {
19
20/// Used to specify the format for printing AST dump information.
24};
25
26// Colors used for various parts of the AST dump
27// Do not use bold yellow for any text. It is hard to read on white screens.
28
30 llvm::raw_ostream::Colors Color;
31 bool Bold;
32};
33
34// Red - CastColor
35// Green - TypeColor
36// Bold Green - DeclKindNameColor, UndeserializedColor
37// Yellow - AddressColor, LocationColor
38// Blue - CommentColor, NullColor, IndentColor
39// Bold Blue - AttrColor
40// Bold Magenta - StmtColor
41// Cyan - ValueKindColor, ObjectKindColor
42// Bold Cyan - ValueColor, DeclNameColor
43
44// Decl kind names (VarDecl, FunctionDecl, etc)
45static const TerminalColor DeclKindNameColor = {llvm::raw_ostream::GREEN, true};
46// Attr names (CleanupAttr, GuardedByAttr, etc)
47static const TerminalColor AttrColor = {llvm::raw_ostream::BLUE, true};
48// Statement names (DeclStmt, ImplicitCastExpr, etc)
49static const TerminalColor StmtColor = {llvm::raw_ostream::MAGENTA, true};
50// Comment names (FullComment, ParagraphComment, TextComment, etc)
51static const TerminalColor CommentColor = {llvm::raw_ostream::BLUE, false};
52
53// Type names (int, float, etc, plus user defined types)
54static const TerminalColor TypeColor = {llvm::raw_ostream::GREEN, false};
55
56// Pointer address
57static const TerminalColor AddressColor = {llvm::raw_ostream::YELLOW, false};
58// Source locations
59static const TerminalColor LocationColor = {llvm::raw_ostream::YELLOW, false};
60
61// lvalue/xvalue
62static const TerminalColor ValueKindColor = {llvm::raw_ostream::CYAN, false};
63// bitfield/objcproperty/objcsubscript/vectorcomponent
64static const TerminalColor ObjectKindColor = {llvm::raw_ostream::CYAN, false};
65// contains-errors
66static const TerminalColor ErrorsColor = {llvm::raw_ostream::RED, true};
67
68// Null statements
69static const TerminalColor NullColor = {llvm::raw_ostream::BLUE, false};
70
71// Undeserialized entities
72static const TerminalColor UndeserializedColor = {llvm::raw_ostream::GREEN,
73 true};
74
75// CastKind from CastExpr's
76static const TerminalColor CastColor = {llvm::raw_ostream::RED, false};
77
78// Value of the statement
79static const TerminalColor ValueColor = {llvm::raw_ostream::CYAN, true};
80// Decl names
81static const TerminalColor DeclNameColor = {llvm::raw_ostream::CYAN, true};
82
83// Indents ( `, -. | )
84static const TerminalColor IndentColor = {llvm::raw_ostream::BLUE, false};
85
87 llvm::raw_ostream &OS;
88 const bool ShowColors;
89
90public:
91 ColorScope(llvm::raw_ostream &OS, bool ShowColors, TerminalColor Color)
92 : OS(OS), ShowColors(ShowColors) {
93 if (ShowColors)
94 OS.changeColor(Color.Color, Color.Bold);
95 }
97 if (ShowColors)
98 OS.resetColor();
99 }
100};
101
102} // namespace clang
103
104#endif // LLVM_CLANG_AST_ASTDUMPERUTILS_H
bool ShowColors
Definition: Logger.cpp:29
ColorScope(llvm::raw_ostream &OS, bool ShowColors, TerminalColor Color)
The JSON file list parser is used to communicate input to InstallAPI.
static const TerminalColor NullColor
static const TerminalColor ErrorsColor
static const TerminalColor CommentColor
ASTDumpOutputFormat
Used to specify the format for printing AST dump information.
@ ADOF_Default
static const TerminalColor DeclNameColor
static const TerminalColor AddressColor
static const TerminalColor IndentColor
static const TerminalColor StmtColor
static const TerminalColor UndeserializedColor
static const TerminalColor DeclKindNameColor
static const TerminalColor LocationColor
static const TerminalColor ValueKindColor
static const TerminalColor CastColor
static const TerminalColor AttrColor
static const TerminalColor TypeColor
static const TerminalColor ValueColor
static const TerminalColor ObjectKindColor
llvm::raw_ostream::Colors Color