clang API Documentation
#include "clang/AST/Attr.h"#include "clang/AST/Decl.h"#include "clang/AST/DeclCXX.h"#include "clang/AST/DeclFriend.h"#include "clang/AST/DeclObjC.h"#include "clang/AST/DeclOpenMP.h"#include "clang/AST/DeclTemplate.h"#include "clang/AST/Expr.h"#include "clang/AST/ExprCXX.h"#include "clang/AST/ExprObjC.h"#include "clang/AST/NestedNameSpecifier.h"#include "clang/AST/Stmt.h"#include "clang/AST/StmtCXX.h"#include "clang/AST/StmtObjC.h"#include "clang/AST/StmtOpenMP.h"#include "clang/AST/TemplateBase.h"#include "clang/AST/TemplateName.h"#include "clang/AST/Type.h"#include "clang/AST/TypeLoc.h"#include "clang/AST/AttrVisitor.inc"#include "clang/AST/StmtNodes.inc"#include "clang/AST/TypeNodes.def"#include "clang/AST/TypeLocNodes.def"#include "clang/AST/DeclNodes.inc"#include "clang/Basic/OpenMPKinds.def"

Go to the source code of this file.
Classes | |
| class | clang::RecursiveASTVisitor< Derived > |
| A class that does preorder depth-first traversal on the entire Clang AST and visits each node. More... | |
| class | clang::RecursiveASTVisitor< Derived >::NewQueueRAII |
| class | clang::RecursiveASTVisitor< Derived >::StmtQueueAction |
Namespaces | |
| namespace | clang |
Defines | |
| #define | UNARYOP_LIST() |
| #define | BINOP_LIST() |
| #define | CAO_LIST() |
| #define | RecursiveASTVisitor DataRecursiveASTVisitor |
| #define | TRY_TO(CALL_EXPR) |
| #define | ATTR_VISITOR_DECLS_ONLY |
| #define | ABSTRACT_STMT(STMT) |
| #define | STMT(CLASS, PARENT) bool Traverse##CLASS(CLASS *S); |
| #define | STMT(CLASS, PARENT) |
| #define | OPERATOR(NAME) |
| #define | GENERAL_BINOP_FALLBACK(NAME, BINOP_TYPE) |
| #define | OPERATOR(NAME) GENERAL_BINOP_FALLBACK(NAME, BinaryOperator) |
| #define | OPERATOR(NAME) GENERAL_BINOP_FALLBACK(NAME##Assign, CompoundAssignOperator) |
| #define | ABSTRACT_TYPE(CLASS, BASE) |
| #define | TYPE(CLASS, BASE) bool Traverse##CLASS##Type(CLASS##Type *T); |
| #define | TYPE(CLASS, BASE) |
| #define | ABSTRACT_TYPELOC(CLASS, BASE) |
| #define | TYPELOC(CLASS, BASE) bool Traverse##CLASS##TypeLoc(CLASS##TypeLoc TL); |
| #define | TYPE(CLASS, BASE) |
| #define | ABSTRACT_DECL(DECL) |
| #define | DECL(CLASS, BASE) bool Traverse##CLASS##Decl(CLASS##Decl *D); |
| #define | DECL(CLASS, BASE) |
| #define | OPENMP_CLAUSE(Name, Class) bool Visit##Class(Class *C); |
| #define | DISPATCH(NAME, CLASS, VAR) return getDerived().Traverse##NAME(static_cast<CLASS *>(VAR)) |
| #define | DISPATCH_STMT(NAME, CLASS, VAR) |
| #define | OPERATOR(NAME) |
| #define | OPERATOR(NAME) |
| #define | OPERATOR(NAME) |
| #define | ABSTRACT_STMT(STMT) |
| #define | STMT(CLASS, PARENT) |
| #define | ABSTRACT_TYPE(CLASS, BASE) |
| #define | TYPE(CLASS, BASE) |
| #define | ABSTRACT_TYPELOC(CLASS, BASE) |
| #define | TYPELOC(CLASS, BASE) |
| #define | VISITORCLASS RecursiveASTVisitor |
| #define | ABSTRACT_DECL(DECL) |
| #define | DECL(CLASS, BASE) |
| #define | DEF_TRAVERSE_TYPE(TYPE, CODE) |
| #define | DEF_TRAVERSE_TYPELOC(TYPE, CODE) |
| #define | DEF_TRAVERSE_DECL(DECL, CODE) |
| #define | DEF_TRAVERSE_STMT(STMT, CODE) |
| #define | OPENMP_CLAUSE(Name, Class) |
Functions | |
| clang::DEF_TRAVERSE_TYPE (ComplexType,{TRY_TO(TraverseType(T->getElementType()));}) DEF_TRAVERSE_TYPE(PointerType | |
| #define ABSTRACT_DECL | ( | DECL | ) |
Definition at line 394 of file DataRecursiveASTVisitor.h.
| #define ABSTRACT_DECL | ( | DECL | ) |
Definition at line 394 of file DataRecursiveASTVisitor.h.
| #define ABSTRACT_STMT | ( | STMT | ) |
Definition at line 266 of file DataRecursiveASTVisitor.h.
| #define ABSTRACT_STMT | ( | STMT | ) |
Definition at line 266 of file DataRecursiveASTVisitor.h.
| #define ABSTRACT_TYPE | ( | CLASS, | |
| BASE | |||
| ) |
Definition at line 340 of file DataRecursiveASTVisitor.h.
| #define ABSTRACT_TYPE | ( | CLASS, | |
| BASE | |||
| ) |
Definition at line 340 of file DataRecursiveASTVisitor.h.
| #define ABSTRACT_TYPELOC | ( | CLASS, | |
| BASE | |||
| ) |
Definition at line 361 of file DataRecursiveASTVisitor.h.
| #define ABSTRACT_TYPELOC | ( | CLASS, | |
| BASE | |||
| ) |
Definition at line 361 of file DataRecursiveASTVisitor.h.
| #define ATTR_VISITOR_DECLS_ONLY |
Definition at line 259 of file DataRecursiveASTVisitor.h.
| #define BINOP_LIST | ( | ) |
OPERATOR(PtrMemD) OPERATOR(PtrMemI) OPERATOR(Mul) OPERATOR(Div) \ OPERATOR(Rem) OPERATOR(Add) OPERATOR(Sub) OPERATOR(Shl) OPERATOR(Shr) \ OPERATOR(LT) OPERATOR(GT) OPERATOR(LE) OPERATOR(GE) OPERATOR(EQ) \ OPERATOR(NE) OPERATOR(And) OPERATOR(Xor) OPERATOR(Or) OPERATOR(LAnd) \ OPERATOR(LOr) OPERATOR(Assign) OPERATOR(Comma)
Definition at line 48 of file DataRecursiveASTVisitor.h.
Referenced by clang::RecursiveASTVisitor< Derived >::TraverseStmt().
| #define CAO_LIST | ( | ) |
Definition at line 402 of file DataRecursiveASTVisitor.h.
| #define DECL | ( | CLASS, | |
| BASE | |||
| ) |
bool WalkUpFrom##CLASS##Decl(CLASS##Decl *D) { \ TRY_TO(WalkUpFrom##BASE(D)); \ TRY_TO(Visit##CLASS##Decl(D)); \ return true; \ } \ bool Visit##CLASS##Decl(CLASS##Decl *D) { return true; }
Definition at line 402 of file DataRecursiveASTVisitor.h.
| #define DECL | ( | CLASS, | |
| BASE | |||
| ) |
case Decl::CLASS: \ if (!getDerived().Traverse##CLASS##Decl(static_cast<CLASS##Decl *>(D))) \ return false; \ break;
Definition at line 402 of file DataRecursiveASTVisitor.h.
| #define DEF_TRAVERSE_DECL | ( | DECL, | |
| CODE | |||
| ) |
| #define DEF_TRAVERSE_STMT | ( | STMT, | |
| CODE | |||
| ) |
| #define DEF_TRAVERSE_TYPE | ( | TYPE, | |
| CODE | |||
| ) |
template <typename Derived> \ bool RecursiveASTVisitor<Derived>::Traverse##TYPE(TYPE *T) { \ TRY_TO(WalkUpFrom##TYPE(T)); \ { CODE; } \ return true; \ }
Definition at line 809 of file DataRecursiveASTVisitor.h.
| #define DEF_TRAVERSE_TYPELOC | ( | TYPE, | |
| CODE | |||
| ) |
| #define DISPATCH | ( | NAME, | |
| CLASS, | |||
| VAR | |||
| ) | return getDerived().Traverse##NAME(static_cast<CLASS *>(VAR)) |
Definition at line 466 of file DataRecursiveASTVisitor.h.
| #define DISPATCH_STMT | ( | NAME, | |
| CLASS, | |||
| VAR | |||
| ) |
TRY_TO(Traverse##NAME(static_cast<CLASS *>(VAR))); \ break
| #define GENERAL_BINOP_FALLBACK | ( | NAME, | |
| BINOP_TYPE | |||
| ) |
bool TraverseBin##NAME(BINOP_TYPE *S) { \ TRY_TO(WalkUpFromBin##NAME(S)); \ StmtQueueAction StmtQueue(*this); \ StmtQueue.queue(S->getLHS()); \ StmtQueue.queue(S->getRHS()); \ return true; \ } \ bool WalkUpFromBin##NAME(BINOP_TYPE *S) { \ TRY_TO(WalkUpFrom##BINOP_TYPE(S)); \ TRY_TO(VisitBin##NAME(S)); \ return true; \ } \ bool VisitBin##NAME(BINOP_TYPE *S) { return true; }
Definition at line 306 of file DataRecursiveASTVisitor.h.
| #define OPENMP_CLAUSE | ( | Name, | |
| Class | |||
| ) | bool Visit##Class(Class *C); |
Definition at line 429 of file DataRecursiveASTVisitor.h.
| #define OPENMP_CLAUSE | ( | Name, | |
| Class | |||
| ) |
case OMPC_##Name: \ TRY_TO(Visit##Class(static_cast<Class *>(C))); \ break;
Definition at line 429 of file DataRecursiveASTVisitor.h.
| #define OPERATOR | ( | NAME | ) |
bool TraverseUnary##NAME(UnaryOperator *S) { \ TRY_TO(WalkUpFromUnary##NAME(S)); \ StmtQueueAction StmtQueue(*this); \ StmtQueue.queue(S->getSubExpr()); \ return true; \ } \ bool WalkUpFromUnary##NAME(UnaryOperator *S) { \ TRY_TO(WalkUpFromUnaryOperator(S)); \ TRY_TO(VisitUnary##NAME(S)); \ return true; \ } \ bool VisitUnary##NAME(UnaryOperator *S) { return true; }
Definition at line 329 of file DataRecursiveASTVisitor.h.
| #define OPERATOR | ( | NAME | ) | GENERAL_BINOP_FALLBACK(NAME, BinaryOperator) |
Definition at line 329 of file DataRecursiveASTVisitor.h.
| #define OPERATOR | ( | NAME | ) | GENERAL_BINOP_FALLBACK(NAME##Assign, CompoundAssignOperator) |
Definition at line 329 of file DataRecursiveASTVisitor.h.
| #define OPERATOR | ( | NAME | ) |
case BO_##NAME: \ DISPATCH_STMT(Bin##NAME, BinaryOperator, S);
Definition at line 329 of file DataRecursiveASTVisitor.h.
| #define OPERATOR | ( | NAME | ) |
case BO_##NAME##Assign: \ DISPATCH_STMT(Bin##NAME##Assign, CompoundAssignOperator, S);
Definition at line 329 of file DataRecursiveASTVisitor.h.
| #define OPERATOR | ( | NAME | ) |
case UO_##NAME: \ DISPATCH_STMT(Unary##NAME, UnaryOperator, S);
Definition at line 329 of file DataRecursiveASTVisitor.h.
| #define RecursiveASTVisitor DataRecursiveASTVisitor |
Definition at line 64 of file DataRecursiveASTVisitor.h.
Definition at line 274 of file DataRecursiveASTVisitor.h.
| #define STMT | ( | CLASS, | |
| PARENT | |||
| ) |
bool WalkUpFrom##CLASS(CLASS *S) { \ TRY_TO(WalkUpFrom##PARENT(S)); \ TRY_TO(Visit##CLASS(S)); \ return true; \ } \ bool Visit##CLASS(CLASS *S) { return true; }
Definition at line 274 of file DataRecursiveASTVisitor.h.
| #define STMT | ( | CLASS, | |
| PARENT | |||
| ) |
case Stmt::CLASS##Class: \ DISPATCH_STMT(CLASS, CLASS, S);
Definition at line 274 of file DataRecursiveASTVisitor.h.
| #define TRY_TO | ( | CALL_EXPR | ) |
do { \ if (!getDerived().CALL_EXPR) \ return false; \ } while (0)
Definition at line 70 of file DataRecursiveASTVisitor.h.
Referenced by clang::RecursiveASTVisitor< Derived >::TraverseConstructorInitializer(), clang::RecursiveASTVisitor< Derived >::TraverseDeclarationNameInfo(), clang::RecursiveASTVisitor< Derived >::TraverseLambdaCapture(), clang::RecursiveASTVisitor< Derived >::TraverseNestedNameSpecifier(), clang::RecursiveASTVisitor< Derived >::TraverseNestedNameSpecifierLoc(), clang::RecursiveASTVisitor< Derived >::TraverseTemplateArgumentLoc(), clang::RecursiveASTVisitor< Derived >::TraverseTemplateArguments(), and clang::RecursiveASTVisitor< Derived >::TraverseTemplateName().
Definition at line 382 of file DataRecursiveASTVisitor.h.
| #define TYPE | ( | CLASS, | |
| BASE | |||
| ) |
bool WalkUpFrom##CLASS##Type(CLASS##Type *T) { \ TRY_TO(WalkUpFrom##BASE(T)); \ TRY_TO(Visit##CLASS##Type(T)); \ return true; \ } \ bool Visit##CLASS##Type(CLASS##Type *T) { return true; }
Definition at line 382 of file DataRecursiveASTVisitor.h.
| #define TYPE | ( | CLASS, | |
| BASE | |||
| ) |
bool WalkUpFrom##CLASS##TypeLoc(CLASS##TypeLoc TL) { \ TRY_TO(WalkUpFrom##BASE##Loc(TL)); \ TRY_TO(Visit##CLASS##TypeLoc(TL)); \ return true; \ } \ bool Visit##CLASS##TypeLoc(CLASS##TypeLoc TL) { return true; }
Definition at line 382 of file DataRecursiveASTVisitor.h.
| #define TYPE | ( | CLASS, | |
| BASE | |||
| ) |
case Type::CLASS: \
DISPATCH(CLASS##Type, CLASS##Type, const_cast<Type *>(T.getTypePtr()));
Definition at line 382 of file DataRecursiveASTVisitor.h.
Definition at line 362 of file DataRecursiveASTVisitor.h.
| #define TYPELOC | ( | CLASS, | |
| BASE | |||
| ) |
case TypeLoc::CLASS: \
return getDerived().Traverse##CLASS##TypeLoc(TL.castAs<CLASS##TypeLoc>());
Definition at line 362 of file DataRecursiveASTVisitor.h.
| #define UNARYOP_LIST | ( | ) |
OPERATOR(PostInc) OPERATOR(PostDec) OPERATOR(PreInc) OPERATOR(PreDec) \ OPERATOR(AddrOf) OPERATOR(Deref) OPERATOR(Plus) OPERATOR(Minus) \ OPERATOR(Not) OPERATOR(LNot) OPERATOR(Real) OPERATOR(Imag) \ OPERATOR(Extension)
Definition at line 41 of file DataRecursiveASTVisitor.h.
Referenced by clang::RecursiveASTVisitor< Derived >::TraverseStmt().
| #define VISITORCLASS RecursiveASTVisitor |
Definition at line 578 of file DataRecursiveASTVisitor.h.