123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- #pragma once
- #ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wunused-parameter"
- #endif
- //===--- ASTDumperUtils.h - Printing of AST nodes -------------------------===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- //
- // This file implements AST utilities for traversal down the tree.
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_CLANG_AST_ASTDUMPERUTILS_H
- #define LLVM_CLANG_AST_ASTDUMPERUTILS_H
- #include "llvm/Support/raw_ostream.h"
- namespace clang {
- /// Used to specify the format for printing AST dump information.
- enum ASTDumpOutputFormat {
- ADOF_Default,
- ADOF_JSON
- };
- // Colors used for various parts of the AST dump
- // Do not use bold yellow for any text. It is hard to read on white screens.
- struct TerminalColor {
- llvm::raw_ostream::Colors Color;
- bool Bold;
- };
- // Red - CastColor
- // Green - TypeColor
- // Bold Green - DeclKindNameColor, UndeserializedColor
- // Yellow - AddressColor, LocationColor
- // Blue - CommentColor, NullColor, IndentColor
- // Bold Blue - AttrColor
- // Bold Magenta - StmtColor
- // Cyan - ValueKindColor, ObjectKindColor
- // Bold Cyan - ValueColor, DeclNameColor
- // Decl kind names (VarDecl, FunctionDecl, etc)
- static const TerminalColor DeclKindNameColor = {llvm::raw_ostream::GREEN, true};
- // Attr names (CleanupAttr, GuardedByAttr, etc)
- static const TerminalColor AttrColor = {llvm::raw_ostream::BLUE, true};
- // Statement names (DeclStmt, ImplicitCastExpr, etc)
- static const TerminalColor StmtColor = {llvm::raw_ostream::MAGENTA, true};
- // Comment names (FullComment, ParagraphComment, TextComment, etc)
- static const TerminalColor CommentColor = {llvm::raw_ostream::BLUE, false};
- // Type names (int, float, etc, plus user defined types)
- static const TerminalColor TypeColor = {llvm::raw_ostream::GREEN, false};
- // Pointer address
- static const TerminalColor AddressColor = {llvm::raw_ostream::YELLOW, false};
- // Source locations
- static const TerminalColor LocationColor = {llvm::raw_ostream::YELLOW, false};
- // lvalue/xvalue
- static const TerminalColor ValueKindColor = {llvm::raw_ostream::CYAN, false};
- // bitfield/objcproperty/objcsubscript/vectorcomponent
- static const TerminalColor ObjectKindColor = {llvm::raw_ostream::CYAN, false};
- // contains-errors
- static const TerminalColor ErrorsColor = {llvm::raw_ostream::RED, true};
- // Null statements
- static const TerminalColor NullColor = {llvm::raw_ostream::BLUE, false};
- // Undeserialized entities
- static const TerminalColor UndeserializedColor = {llvm::raw_ostream::GREEN,
- true};
- // CastKind from CastExpr's
- static const TerminalColor CastColor = {llvm::raw_ostream::RED, false};
- // Value of the statement
- static const TerminalColor ValueColor = {llvm::raw_ostream::CYAN, true};
- // Decl names
- static const TerminalColor DeclNameColor = {llvm::raw_ostream::CYAN, true};
- // Indents ( `, -. | )
- static const TerminalColor IndentColor = {llvm::raw_ostream::BLUE, false};
- class ColorScope {
- llvm::raw_ostream &OS;
- const bool ShowColors;
- public:
- ColorScope(llvm::raw_ostream &OS, bool ShowColors, TerminalColor Color)
- : OS(OS), ShowColors(ShowColors) {
- if (ShowColors)
- OS.changeColor(Color.Color, Color.Bold);
- }
- ~ColorScope() {
- if (ShowColors)
- OS.resetColor();
- }
- };
- } // namespace clang
- #endif // LLVM_CLANG_AST_ASTDUMPERUTILS_H
- #ifdef __GNUC__
- #pragma GCC diagnostic pop
- #endif
|