clang  19.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 
18 namespace clang {
19 
20 /// Used to specify the format for printing AST dump information.
23  ADOF_JSON
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 
29 struct TerminalColor {
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)
45 static const TerminalColor DeclKindNameColor = {llvm::raw_ostream::GREEN, true};
46 // Attr names (CleanupAttr, GuardedByAttr, etc)
47 static const TerminalColor AttrColor = {llvm::raw_ostream::BLUE, true};
48 // Statement names (DeclStmt, ImplicitCastExpr, etc)
49 static const TerminalColor StmtColor = {llvm::raw_ostream::MAGENTA, true};
50 // Comment names (FullComment, ParagraphComment, TextComment, etc)
51 static const TerminalColor CommentColor = {llvm::raw_ostream::BLUE, false};
52 
53 // Type names (int, float, etc, plus user defined types)
54 static const TerminalColor TypeColor = {llvm::raw_ostream::GREEN, false};
55 
56 // Pointer address
57 static const TerminalColor AddressColor = {llvm::raw_ostream::YELLOW, false};
58 // Source locations
59 static const TerminalColor LocationColor = {llvm::raw_ostream::YELLOW, false};
60 
61 // lvalue/xvalue
62 static const TerminalColor ValueKindColor = {llvm::raw_ostream::CYAN, false};
63 // bitfield/objcproperty/objcsubscript/vectorcomponent
64 static const TerminalColor ObjectKindColor = {llvm::raw_ostream::CYAN, false};
65 // contains-errors
66 static const TerminalColor ErrorsColor = {llvm::raw_ostream::RED, true};
67 
68 // Null statements
69 static const TerminalColor NullColor = {llvm::raw_ostream::BLUE, false};
70 
71 // Undeserialized entities
72 static const TerminalColor UndeserializedColor = {llvm::raw_ostream::GREEN,
73  true};
74 
75 // CastKind from CastExpr's
76 static const TerminalColor CastColor = {llvm::raw_ostream::RED, false};
77 
78 // Value of the statement
79 static const TerminalColor ValueColor = {llvm::raw_ostream::CYAN, true};
80 // Decl names
81 static const TerminalColor DeclNameColor = {llvm::raw_ostream::CYAN, true};
82 
83 // Indents ( `, -. | )
84 static const TerminalColor IndentColor = {llvm::raw_ostream::BLUE, false};
85 
86 class ColorScope {
87  llvm::raw_ostream &OS;
88  const bool ShowColors;
89 
90 public:
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