clang: include/clang/AST/TextNodeDumper.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13#ifndef LLVM_CLANG_AST_TEXTNODEDUMPER_H

14#define LLVM_CLANG_AST_TEXTNODEDUMPER_H

15

29

31

33

35 raw_ostream &OS;

36 const bool ShowColors;

37

38

39 llvm::SmallVector<std::function<void(bool IsLastChild)>, 32> Pending;

40

41

42 bool TopLevel = true;

43

44

45 bool FirstChild = true;

46

47

48 std::string Prefix;

49

50public:

51

52 template void AddChild(Fn DoAddChild) {

53 return AddChild("", DoAddChild);

54 }

55

56

57

58 template void AddChild(StringRef Label, Fn DoAddChild) {

59

60

61 if (TopLevel) {

62 TopLevel = false;

63 DoAddChild();

64 while (!Pending.empty()) {

65 Pending.back()(true);

66 Pending.pop_back();

67 }

68 Prefix.clear();

69 OS << "\n";

70 TopLevel = true;

71 return;

72 }

73

74 auto DumpWithIndent = [this, DoAddChild,

75 Label(Label.str())](bool IsLastChild) {

76

77

78

79

80

81

82

83

84

85

86

87

88 {

89 OS << '\n';

91 OS << Prefix << (IsLastChild ? '`' : '|') << '-';

92 if (Label.empty())

93 OS << Label << ": ";

94

95 this->Prefix.push_back(IsLastChild ? ' ' : '|');

96 this->Prefix.push_back(' ');

97 }

98

99 FirstChild = true;

100 unsigned Depth = Pending.size();

101

102 DoAddChild();

103

104

105

106 while (Depth < Pending.size()) {

107 Pending.back()(true);

108 this->Pending.pop_back();

109 }

110

111

112 this->Prefix.resize(Prefix.size() - 2);

113 };

114

115 if (FirstChild) {

116 Pending.push_back(std::move(DumpWithIndent));

117 } else {

118 Pending.back()(false);

119 Pending.back() = std::move(DumpWithIndent);

120 }

121 FirstChild = false;

122 }

123

126};

127

131 const comments::FullComment *>,

138 raw_ostream &OS;

139 const bool ShowColors;

140

141

142

143 const char *LastLocFilename = "";

144 unsigned LastLocLine = ~0U;

145

146

147

148

149

152

153

155

157

158 const char *getCommandName(unsigned CommandID);

160

163 unsigned),

164 unsigned NumChildren, StringRef LabelSingular,

165 StringRef LabelPlurial);

166

167public:

170

172

174

176 const Decl *From = nullptr, StringRef Label = {});

177

179

181

183

185

187

189

191

193

195

197

199

201

203

219

221

223 const comments::FullComment *);

225 const comments::FullComment *);

227 const comments::FullComment *);

229 const comments::FullComment *);

231 const comments::FullComment *);

233 const comments::FullComment *FC);

235 const comments::FullComment *FC);

237 const comments::FullComment *);

238 void

240 const comments::FullComment *);

242 const comments::FullComment *);

243

244

245#include "clang/AST/AttrTextNodeDump.inc"

246

256

309 void

324

341 void

345 const DeducedTemplateSpecializationType *T);

350

352

407 void

426};

427

428}

429

430#endif

Defines the clang::ASTContext interface.

Defines the clang::Expr interface and subclasses for C++ expressions.

Defines Expressions and AST nodes for C++2a concepts.

C Language Family Type Representation.

APValue - This class implements a discriminated union of [uninitialized] [APSInt] [APFloat],...

Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...

Attr - This represents one attribute.

A class which contains all the information about a particular captured value.

Represents a C++ base or member initializer.

A reference to a concept and its template args, as it appears in the code.

A simple visitor class that helps create attribute visitors.

A simple visitor class that helps create declaration visitors.

ConstStmtVisitor - This class implements a simple visitor for Stmt subclasses.

A simple visitor class that helps create template argument visitors.

Decl - This represents one declaration (or definition), e.g.

llvm::PointerUnion< BlockDecl *, CompoundLiteralExpr * > CleanupObject

The type of objects that are kept in the cleanup.

Represents difference between two FPOptions values.

AssociationTy< true > ConstAssociation

Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...

This represents a decl that may have a name.

Represents a C++ nested name specifier, such as "\::std::vector::".

This is a basic class for representing single OpenMP clause.

This is the base type for all OpenACC Clauses.

A (possibly-)qualified type.

Encodes a location in the source.

This class handles loading and caching of source files into memory.

A trivial tuple used to represent a source range.

Stmt - This represents one statement.

Represents a template argument.

Represents a C++ template name within the type system.

void VisitCXXFunctionalCastExpr(const CXXFunctionalCastExpr *Node)

void VisitEnumDecl(const EnumDecl *D)

void VisitExprWithCleanups(const ExprWithCleanups *Node)

void visitInlineCommandComment(const comments::InlineCommandComment *C, const comments::FullComment *)

void VisitCXXStaticCastExpr(const CXXStaticCastExpr *Node)

void visitVerbatimBlockComment(const comments::VerbatimBlockComment *C, const comments::FullComment *)

void dumpPointer(const void *Ptr)

void VisitDeclarationTemplateArgument(const TemplateArgument &TA)

void VisitOpenACCLoopConstruct(const OpenACCLoopConstruct *S)

void VisitLinkageSpecDecl(const LinkageSpecDecl *D)

void VisitVectorType(const VectorType *T)

void VisitCoawaitExpr(const CoawaitExpr *Node)

void VisitUnaryOperator(const UnaryOperator *Node)

void dumpAccessSpecifier(AccessSpecifier AS)

void VisitHLSLOutArgExpr(const HLSLOutArgExpr *E)

void VisitDeducedTemplateSpecializationType(const DeducedTemplateSpecializationType *T)

void VisitObjCSelectorExpr(const ObjCSelectorExpr *Node)

void VisitCXXOperatorCallExpr(const CXXOperatorCallExpr *Node)

void VisitCXXUnresolvedConstructExpr(const CXXUnresolvedConstructExpr *Node)

void VisitPragmaCommentDecl(const PragmaCommentDecl *D)

void VisitDependentScopeDeclRefExpr(const DependentScopeDeclRefExpr *Node)

void VisitImportDecl(const ImportDecl *D)

void VisitUsingEnumDecl(const UsingEnumDecl *D)

void VisitOMPCapturedExprDecl(const OMPCapturedExprDecl *D)

void VisitUnresolvedUsingType(const UnresolvedUsingType *T)

void VisitObjCProtocolExpr(const ObjCProtocolExpr *Node)

void VisitIntegralTemplateArgument(const TemplateArgument &TA)

void VisitObjCCategoryDecl(const ObjCCategoryDecl *D)

void VisitIndirectFieldDecl(const IndirectFieldDecl *D)

void VisitNullTemplateArgument(const TemplateArgument &TA)

void VisitPackTemplateArgument(const TemplateArgument &TA)

void VisitUsingType(const UsingType *T)

void VisitInjectedClassNameType(const InjectedClassNameType *T)

void VisitBinaryOperator(const BinaryOperator *Node)

void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr *Node)

void VisitObjCInterfaceDecl(const ObjCInterfaceDecl *D)

void VisitBlockDecl(const BlockDecl *D)

void VisitCXXDeleteExpr(const CXXDeleteExpr *Node)

void VisitObjCBoxedExpr(const ObjCBoxedExpr *Node)

void VisitNullPtrTemplateArgument(const TemplateArgument &TA)

void VisitVarTemplateDecl(const VarTemplateDecl *D)

void VisitSubstTemplateTypeParmPackType(const SubstTemplateTypeParmPackType *T)

void VisitConceptSpecializationExpr(const ConceptSpecializationExpr *Node)

void VisitCXXDeductionGuideDecl(const CXXDeductionGuideDecl *D)

void VisitPredefinedExpr(const PredefinedExpr *Node)

void dumpType(QualType T)

void VisitObjCEncodeExpr(const ObjCEncodeExpr *Node)

void VisitHLSLBufferDecl(const HLSLBufferDecl *D)

void VisitUnresolvedUsingValueDecl(const UnresolvedUsingValueDecl *D)

void VisitNamespaceAliasDecl(const NamespaceAliasDecl *D)

void VisitObjCMessageExpr(const ObjCMessageExpr *Node)

void dumpSourceRange(SourceRange R)

void VisitMemberExpr(const MemberExpr *Node)

void VisitOpenACCDataConstruct(const OpenACCDataConstruct *S)

void dumpBareTemplateName(TemplateName TN)

void VisitOpenACCConstructStmt(const OpenACCConstructStmt *S)

void VisitCompoundStmt(const CompoundStmt *Node)

void VisitConstantExpr(const ConstantExpr *Node)

void VisitObjCIvarRefExpr(const ObjCIvarRefExpr *Node)

void VisitOpenACCAsteriskSizeExpr(const OpenACCAsteriskSizeExpr *S)

void VisitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *Node)

void VisitConstructorUsingShadowDecl(const ConstructorUsingShadowDecl *D)

void VisitWhileStmt(const WhileStmt *Node)

void VisitCharacterLiteral(const CharacterLiteral *Node)

void VisitAccessSpecDecl(const AccessSpecDecl *D)

void VisitFunctionType(const FunctionType *T)

void VisitObjCImplementationDecl(const ObjCImplementationDecl *D)

void VisitReturnStmt(const ReturnStmt *Node)

void VisitTypeLoc(TypeLoc TL)

void VisitAutoType(const AutoType *T)

void VisitObjCInterfaceType(const ObjCInterfaceType *T)

void visitVerbatimLineComment(const comments::VerbatimLineComment *C, const comments::FullComment *)

void VisitTypedefDecl(const TypedefDecl *D)

void VisitUnaryExprOrTypeTraitExpr(const UnaryExprOrTypeTraitExpr *Node)

void visitParamCommandComment(const comments::ParamCommandComment *C, const comments::FullComment *FC)

void VisitIntegerLiteral(const IntegerLiteral *Node)

void VisitObjCProtocolDecl(const ObjCProtocolDecl *D)

void VisitGotoStmt(const GotoStmt *Node)

void VisitDependentSizedExtVectorType(const DependentSizedExtVectorType *T)

void VisitFriendDecl(const FriendDecl *D)

void VisitSwitchStmt(const SwitchStmt *Node)

void VisitCXXBindTemporaryExpr(const CXXBindTemporaryExpr *Node)

void VisitEmbedExpr(const EmbedExpr *S)

void VisitFunctionTemplateDecl(const FunctionTemplateDecl *D)

void VisitTemplateTemplateParmDecl(const TemplateTemplateParmDecl *D)

void VisitUsingDecl(const UsingDecl *D)

void VisitConstantArrayType(const ConstantArrayType *T)

void VisitTypeTemplateArgument(const TemplateArgument &TA)

void VisitObjCPropertyDecl(const ObjCPropertyDecl *D)

void VisitObjCCategoryImplDecl(const ObjCCategoryImplDecl *D)

void VisitObjCSubscriptRefExpr(const ObjCSubscriptRefExpr *Node)

void VisitArrayType(const ArrayType *T)

void visitHTMLEndTagComment(const comments::HTMLEndTagComment *C, const comments::FullComment *)

void VisitObjCAtCatchStmt(const ObjCAtCatchStmt *Node)

void visitTextComment(const comments::TextComment *C, const comments::FullComment *)

void VisitLifetimeExtendedTemporaryDecl(const LifetimeExtendedTemporaryDecl *D)

void VisitCXXRecordDecl(const CXXRecordDecl *D)

void VisitTemplateTemplateArgument(const TemplateArgument &TA)

void dumpCleanupObject(const ExprWithCleanups::CleanupObject &C)

void VisitOpenACCExitDataConstruct(const OpenACCExitDataConstruct *S)

void VisitCaseStmt(const CaseStmt *Node)

void VisitRValueReferenceType(const ReferenceType *T)

void VisitPackExpansionType(const PackExpansionType *T)

void VisitConceptDecl(const ConceptDecl *D)

void VisitOpenACCEnterDataConstruct(const OpenACCEnterDataConstruct *S)

void VisitCallExpr(const CallExpr *Node)

void VisitCapturedDecl(const CapturedDecl *D)

void VisitOpenACCWaitConstruct(const OpenACCWaitConstruct *S)

void VisitBuiltinTemplateDecl(const BuiltinTemplateDecl *D)

void VisitObjCPropertyRefExpr(const ObjCPropertyRefExpr *Node)

void VisitOMPDeclareReductionDecl(const OMPDeclareReductionDecl *D)

void VisitCoreturnStmt(const CoreturnStmt *Node)

void VisitSizeOfPackExpr(const SizeOfPackExpr *Node)

void VisitDeclRefExpr(const DeclRefExpr *Node)

void VisitLabelStmt(const LabelStmt *Node)

void VisitOpenACCUpdateConstruct(const OpenACCUpdateConstruct *S)

void Visit(const comments::Comment *C, const comments::FullComment *FC)

void dumpNestedNameSpecifier(const NestedNameSpecifier *NNS)

void VisitLabelDecl(const LabelDecl *D)

void VisitUnaryTransformType(const UnaryTransformType *T)

void VisitStringLiteral(const StringLiteral *Str)

void VisitOMPRequiresDecl(const OMPRequiresDecl *D)

void dumpBareType(QualType T, bool Desugar=true)

void VisitTemplateSpecializationType(const TemplateSpecializationType *T)

void VisitOpenACCInitConstruct(const OpenACCInitConstruct *S)

void VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D)

void VisitCompoundAssignOperator(const CompoundAssignOperator *Node)

void VisitCXXThisExpr(const CXXThisExpr *Node)

void dumpName(const NamedDecl *ND)

void dumpTemplateName(TemplateName TN, StringRef Label={})

void VisitArrayTypeTraitExpr(const ArrayTypeTraitExpr *Node)

void VisitObjCIvarDecl(const ObjCIvarDecl *D)

void VisitFieldDecl(const FieldDecl *D)

void dumpDeclRef(const Decl *D, StringRef Label={})

void VisitRecordDecl(const RecordDecl *D)

void VisitCXXNewExpr(const CXXNewExpr *Node)

void VisitObjCBoolLiteralExpr(const ObjCBoolLiteralExpr *Node)

void VisitCastExpr(const CastExpr *Node)

void VisitObjCTypeParamDecl(const ObjCTypeParamDecl *D)

void VisitSubstTemplateTypeParmType(const SubstTemplateTypeParmType *T)

void VisitExpressionTraitExpr(const ExpressionTraitExpr *Node)

void VisitAddrLabelExpr(const AddrLabelExpr *Node)

void VisitUnresolvedUsingTypenameDecl(const UnresolvedUsingTypenameDecl *D)

void VisitCXXDependentScopeMemberExpr(const CXXDependentScopeMemberExpr *Node)

void visitBlockCommandComment(const comments::BlockCommandComment *C, const comments::FullComment *)

void VisitExpressionTemplateArgument(const TemplateArgument &TA)

void VisitTypeAliasDecl(const TypeAliasDecl *D)

void VisitVarDecl(const VarDecl *D)

void VisitFixedPointLiteral(const FixedPointLiteral *Node)

void VisitOMPIteratorExpr(const OMPIteratorExpr *Node)

void VisitUsingDirectiveDecl(const UsingDirectiveDecl *D)

void VisitObjCMethodDecl(const ObjCMethodDecl *D)

void VisitObjCPropertyImplDecl(const ObjCPropertyImplDecl *D)

void VisitUsingShadowDecl(const UsingShadowDecl *D)

void VisitNamespaceDecl(const NamespaceDecl *D)

void VisitTypeAliasTemplateDecl(const TypeAliasTemplateDecl *D)

void VisitOpenACCHostDataConstruct(const OpenACCHostDataConstruct *S)

void VisitCXXBoolLiteralExpr(const CXXBoolLiteralExpr *Node)

void VisitIfStmt(const IfStmt *Node)

void VisitCXXConstructExpr(const CXXConstructExpr *Node)

void VisitFunctionProtoType(const FunctionProtoType *T)

void dumpTemplateArgument(const TemplateArgument &TA)

void dumpLocation(SourceLocation Loc)

void VisitDependentSizedArrayType(const DependentSizedArrayType *T)

void VisitOpenACCCombinedConstruct(const OpenACCCombinedConstruct *S)

void VisitOMPExecutableDirective(const OMPExecutableDirective *D)

void VisitImplicitCastExpr(const ImplicitCastExpr *Node)

void VisitCXXDefaultArgExpr(const CXXDefaultArgExpr *Node)

void VisitCXXNamedCastExpr(const CXXNamedCastExpr *Node)

void VisitTagType(const TagType *T)

void VisitTemplateExpansionTemplateArgument(const TemplateArgument &TA)

void VisitSYCLUniqueStableNameExpr(const SYCLUniqueStableNameExpr *Node)

void VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *D)

void VisitOpenACCSetConstruct(const OpenACCSetConstruct *S)

void VisitFunctionDecl(const FunctionDecl *D)

void visitTParamCommandComment(const comments::TParamCommandComment *C, const comments::FullComment *FC)

void VisitTypeTraitExpr(const TypeTraitExpr *Node)

void dumpBareDeclRef(const Decl *D)

void VisitExtVectorElementExpr(const ExtVectorElementExpr *Node)

void visitVerbatimBlockLineComment(const comments::VerbatimBlockLineComment *C, const comments::FullComment *)

void VisitOpenACCShutdownConstruct(const OpenACCShutdownConstruct *S)

void VisitFloatingLiteral(const FloatingLiteral *Node)

void VisitInitListExpr(const InitListExpr *ILE)

void VisitRequiresExpr(const RequiresExpr *Node)

void VisitVariableArrayType(const VariableArrayType *T)

void VisitGenericSelectionExpr(const GenericSelectionExpr *E)

void VisitTemplateTypeParmType(const TemplateTypeParmType *T)

void VisitCXXDefaultInitExpr(const CXXDefaultInitExpr *Node)

void visitHTMLStartTagComment(const comments::HTMLStartTagComment *C, const comments::FullComment *)

void VisitEnumConstantDecl(const EnumConstantDecl *D)

void dumpConceptReference(const ConceptReference *R)

void VisitPragmaDetectMismatchDecl(const PragmaDetectMismatchDecl *D)

void dumpTemplateSpecializationKind(TemplateSpecializationKind TSK)

void VisitAtomicExpr(const AtomicExpr *AE)

void VisitObjCCompatibleAliasDecl(const ObjCCompatibleAliasDecl *D)

void VisitClassTemplateDecl(const ClassTemplateDecl *D)

void VisitBindingDecl(const BindingDecl *D)

void VisitTypedefType(const TypedefType *T)

void AddChild(StringRef Label, Fn DoAddChild)

Add a child of the current node with an optional label.

TextTreeStructure(raw_ostream &OS, bool ShowColors)

void AddChild(Fn DoAddChild)

Add a child of the current node. Calls DoAddChild without arguments.

Base wrapper for a particular "section" of type source info.

The base class of the type hierarchy.

A static requirement that can be used in a requires-expression to check properties of types and expre...

The JSON file list parser is used to communicate input to InstallAPI.

static const TerminalColor IndentColor

const FunctionProtoType * T

TemplateSpecializationKind

Describes the kind of template specialization that a particular template specialization declaration r...

AccessSpecifier

A C++ access specifier (public, private, protected), plus the special value "none" which means differ...

Describes how types, statements, expressions, and declarations should be printed.