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.