|
| #define | UNARYOP_LIST() |
| |
| #define | BINOP_LIST() |
| |
| #define | CAO_LIST() |
| |
| #define | TRY_TO(CALL_EXPR) |
| |
| #define | ATTR_VISITOR_DECLS_ONLY |
| |
| #define | TRAVERSE_STMT_BASE(NAME, CLASS, VAR, QUEUE) |
| |
| #define | TRY_TO_TRAVERSE_OR_ENQUEUE_STMT(S) |
| |
| #define | ABSTRACT_STMT(STMT) |
| |
| #define | STMT(CLASS, PARENT) bool Traverse##CLASS(CLASS *S, DataRecursionQueue *Queue = nullptr); |
| |
| #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 | DEF_TRAVERSE_TMPL_INST(TMPLDECLKIND) bool TraverseTemplateInstantiations(TMPLDECLKIND##TemplateDecl *D); |
| |
| #define | OPENMP_CLAUSE(Name, Class) bool Visit##Class(Class *C); |
| |
| #define | DISPATCH_STMT(NAME, CLASS, VAR) return TRAVERSE_STMT_BASE(NAME, CLASS, VAR, Queue); |
| |
| #define | OPERATOR(NAME) |
| |
| #define | OPERATOR(NAME) |
| |
| #define | OPERATOR(NAME) |
| |
| #define | ABSTRACT_STMT(STMT) |
| |
| #define | STMT(CLASS, PARENT) |
| |
| #define | ABSTRACT_STMT(STMT) |
| |
| #define | STMT(CLASS, PARENT) |
| |
| #define | INITLISTEXPR(CLASS, PARENT) |
| |
| #define | DISPATCH(NAME, CLASS, VAR) return getDerived().Traverse##NAME(static_cast<CLASS *>(VAR)) |
| |
| #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_TMPL_DECL(TMPLDECLKIND) |
| |
| #define | DEF_TRAVERSE_TMPL_SPEC_DECL(TMPLDECLKIND) |
| |
| #define | DEF_TRAVERSE_TMPL_PART_SPEC_DECL(TMPLDECLKIND, DECLKIND) |
| |
| #define | DEF_TRAVERSE_STMT(STMT, CODE) |
| |
| #define | OPENMP_CLAUSE(Name, Class) |
| |
|
| | clang::DEF_TRAVERSE_TYPE (ComplexType,{TRY_TO(TraverseType(T->getElementType()));}) DEF_TRAVERSE_TYPE(PointerType |
| |
| | clang::DEF_TRAVERSE_TYPE (BlockPointerType,{TRY_TO(TraverseType(T->getPointeeType()));}) DEF_TRAVERSE_TYPE(LValueReferenceType |
| |
| | clang::DEF_TRAVERSE_TYPE (RValueReferenceType,{TRY_TO(TraverseType(T->getPointeeType()));}) DEF_TRAVERSE_TYPE(MemberPointerType |
| |
| | clang::TRY_TO (TraverseType(T->getPointeeType())) |
| |
| | clang::DEF_TRAVERSE_TYPE (AdjustedType,{TRY_TO(TraverseType(T->getOriginalType()));}) DEF_TRAVERSE_TYPE(DecayedType |
| |
| | clang::DEF_TRAVERSE_TYPE (ConstantArrayType,{TRY_TO(TraverseType(T->getElementType()));}) DEF_TRAVERSE_TYPE(IncompleteArrayType |
| |
| | clang::DEF_TRAVERSE_TYPE (VariableArrayType,{TRY_TO(TraverseType(T->getElementType()));TRY_TO(TraverseStmt(T->getSizeExpr()));}) DEF_TRAVERSE_TYPE(DependentSizedArrayType |
| |
| | clang::if (T->getSizeExpr()) TRY_TO(TraverseStmt(T-> getSizeExpr())) |
| |
| | clang::DEF_TRAVERSE_TYPE (DependentSizedExtVectorType,{if(T->getSizeExpr()) TRY_TO(TraverseStmt(T->getSizeExpr()));TRY_TO(TraverseType(T->getElementType()));}) DEF_TRAVERSE_TYPE(VectorType |
| |
| | clang::DEF_TRAVERSE_TYPE (ExtVectorType,{TRY_TO(TraverseType(T->getElementType()));}) DEF_TRAVERSE_TYPE(FunctionNoProtoType |
| |
| | clang::DEF_TRAVERSE_TYPE (FunctionProtoType,{TRY_TO(TraverseType(T->getReturnType()));for(const auto &A:T->param_types()){TRY_TO(TraverseType(A));}for(const auto &E:T->exceptions()){TRY_TO(TraverseType(E));}if(Expr *NE=T->getNoexceptExpr()) TRY_TO(TraverseStmt(NE));}) DEF_TRAVERSE_TYPE(TypeOfExprType |
| |
| | clang::DEF_TRAVERSE_TYPE (TypeOfType,{TRY_TO(TraverseType(T->getUnderlyingType()));}) DEF_TRAVERSE_TYPE(DecltypeType |
| |
| | clang::DEF_TRAVERSE_TYPE (UnaryTransformType,{TRY_TO(TraverseType(T->getBaseType()));TRY_TO(TraverseType(T->getUnderlyingType()));}) DEF_TRAVERSE_TYPE(AutoType |
| |
| | clang::DEF_TRAVERSE_TYPE (DeducedTemplateSpecializationType,{TRY_TO(TraverseTemplateName(T->getTemplateName()));TRY_TO(TraverseType(T->getDeducedType()));}) DEF_TRAVERSE_TYPE(SubstTemplateTypeParmType |
| |
| | clang::DEF_TRAVERSE_TYPE (SubstTemplateTypeParmPackType,{TRY_TO(TraverseTemplateArgument(T->getArgumentPack()));}) DEF_TRAVERSE_TYPE(TemplateSpecializationType |
| |
| | clang::TRY_TO (TraverseTemplateArguments(T->getArgs(), T->getNumArgs())) |
| |
| | clang::DEF_TRAVERSE_TYPE (AttributedType,{TRY_TO(TraverseType(T->getModifiedType()));}) DEF_TRAVERSE_TYPE(ParenType |
| |
| | clang::DEF_TRAVERSE_TYPE (ElaboratedType,{if(T->getQualifier()){TRY_TO(TraverseNestedNameSpecifier(T->getQualifier()));}TRY_TO(TraverseType(T->getNamedType()));}) DEF_TRAVERSE_TYPE(DependentNameType |
| |
| | clang::DEF_TRAVERSE_TYPE (DependentTemplateSpecializationType,{TRY_TO(TraverseNestedNameSpecifier(T->getQualifier()));TRY_TO(TraverseTemplateArguments(T->getArgs(), T->getNumArgs()));}) DEF_TRAVERSE_TYPE(PackExpansionType |
| |
| | clang::DEF_TRAVERSE_TYPE (ObjCObjectType,{if(T->getBaseType().getTypePtr()!=T) TRY_TO(TraverseType(T->getBaseType()));for(auto typeArg:T->getTypeArgsAsWritten()){TRY_TO(TraverseType(typeArg));}}) DEF_TRAVERSE_TYPE(ObjCObjectPointerType |
| |
| | clang::DEF_TRAVERSE_TYPE (AtomicType,{TRY_TO(TraverseType(T->getValueType()));}) DEF_TRAVERSE_TYPE(PipeType |
| |
| | clang::DEF_TRAVERSE_TYPELOC (ComplexType,{TRY_TO(TraverseType(TL.getTypePtr() ->getElementType()));}) DEF_TRAVERSE_TYPELOC(PointerType |
| |
| | clang::DEF_TRAVERSE_TYPELOC (BlockPointerType,{TRY_TO(TraverseTypeLoc(TL.getPointeeLoc()));}) DEF_TRAVERSE_TYPELOC(LValueReferenceType |
| |
| | clang::DEF_TRAVERSE_TYPELOC (RValueReferenceType,{TRY_TO(TraverseTypeLoc(TL.getPointeeLoc()));}) DEF_TRAVERSE_TYPELOC(MemberPointerType |
| |
| | clang::TRY_TO (TraverseTypeLoc(TL.getPointeeLoc())) |
| |
| | clang::DEF_TRAVERSE_TYPELOC (AdjustedType,{TRY_TO(TraverseTypeLoc(TL.getOriginalLoc()));}) DEF_TRAVERSE_TYPELOC(DecayedType |
| |
| | clang::DEF_TRAVERSE_TYPELOC (ConstantArrayType,{TRY_TO(TraverseTypeLoc(TL.getElementLoc()));return TraverseArrayTypeLocHelper(TL);}) DEF_TRAVERSE_TYPELOC(IncompleteArrayType |
| |
| return | clang::TraverseArrayTypeLocHelper (TL) |
| |
| | clang::DEF_TRAVERSE_TYPELOC (VariableArrayType,{TRY_TO(TraverseTypeLoc(TL.getElementLoc()));return TraverseArrayTypeLocHelper(TL);}) DEF_TRAVERSE_TYPELOC(DependentSizedArrayType |
| |
| | clang::DEF_TRAVERSE_TYPELOC (DependentSizedExtVectorType,{if(TL.getTypePtr() ->getSizeExpr()) TRY_TO(TraverseStmt(TL.getTypePtr() ->getSizeExpr()));TRY_TO(TraverseType(TL.getTypePtr() ->getElementType()));}) DEF_TRAVERSE_TYPELOC(VectorType |
| |
| | clang::DEF_TRAVERSE_TYPELOC (ExtVectorType,{TRY_TO(TraverseType(TL.getTypePtr() ->getElementType()));}) DEF_TRAVERSE_TYPELOC(FunctionNoProtoType |
| |
| | clang::DEF_TRAVERSE_TYPELOC (FunctionProtoType,{TRY_TO(TraverseTypeLoc(TL.getReturnLoc()));const FunctionProtoType *T=TL.getTypePtr();for(unsigned I=0, E=TL.getNumParams();I!=E;++I){if(TL.getParam(I)){TRY_TO(TraverseDecl(TL.getParam(I)));}else if(I< T->getNumParams()){TRY_TO(TraverseType(T->getParamType(I)));}}for(const auto &E:T->exceptions()){TRY_TO(TraverseType(E));}if(Expr *NE=T->getNoexceptExpr()) TRY_TO(TraverseStmt(NE));}) DEF_TRAVERSE_TYPELOC(TypeOfExprType |
| |
| | clang::DEF_TRAVERSE_TYPELOC (TypeOfType,{TRY_TO(TraverseTypeLoc(TL.getUnderlyingTInfo() ->getTypeLoc()));}) DEF_TRAVERSE_TYPELOC(DecltypeType |
| |
| | clang::DEF_TRAVERSE_TYPELOC (UnaryTransformType,{TRY_TO(TraverseTypeLoc(TL.getUnderlyingTInfo() ->getTypeLoc()));}) DEF_TRAVERSE_TYPELOC(AutoType |
| |
| | clang::DEF_TRAVERSE_TYPELOC (DeducedTemplateSpecializationType,{TRY_TO(TraverseTemplateName(TL.getTypePtr() ->getTemplateName()));TRY_TO(TraverseType(TL.getTypePtr() ->getDeducedType()));}) DEF_TRAVERSE_TYPELOC(SubstTemplateTypeParmType |
| |
| | clang::DEF_TRAVERSE_TYPELOC (SubstTemplateTypeParmPackType,{TRY_TO(TraverseTemplateArgument(TL.getTypePtr() ->getArgumentPack()));}) DEF_TRAVERSE_TYPELOC(TemplateSpecializationType |
| |
| | clang::for (unsigned I=0, E=TL.getNumArgs();I!=E;++I) |
| |
| | clang::DEF_TRAVERSE_TYPELOC (ParenType,{TRY_TO(TraverseTypeLoc(TL.getInnerLoc()));}) DEF_TRAVERSE_TYPELOC(AttributedType |
| |
| | clang::DEF_TRAVERSE_TYPELOC (ElaboratedType,{if(TL.getQualifierLoc()){TRY_TO(TraverseNestedNameSpecifierLoc(TL.getQualifierLoc()));}TRY_TO(TraverseTypeLoc(TL.getNamedTypeLoc()));}) DEF_TRAVERSE_TYPELOC(DependentNameType |
| |
| | clang::DEF_TRAVERSE_TYPELOC (DependentTemplateSpecializationType,{if(TL.getQualifierLoc()){TRY_TO(TraverseNestedNameSpecifierLoc(TL.getQualifierLoc()));}for(unsigned I=0, E=TL.getNumArgs();I!=E;++I){TRY_TO(TraverseTemplateArgumentLoc(TL.getArgLoc(I)));}}) DEF_TRAVERSE_TYPELOC(PackExpansionType |
| |
| | clang::DEF_TRAVERSE_TYPELOC (ObjCObjectType,{if(TL.getTypePtr() ->getBaseType().getTypePtr()!=TL.getTypePtr()) TRY_TO(TraverseTypeLoc(TL.getBaseLoc()));for(unsigned i=0, n=TL.getNumTypeArgs();i!=n;++i) TRY_TO(TraverseTypeLoc(TL.getTypeArgTInfo(i) ->getTypeLoc()));}) DEF_TRAVERSE_TYPELOC(ObjCObjectPointerType |
| |
| | clang::DEF_TRAVERSE_TYPELOC (AtomicType,{TRY_TO(TraverseTypeLoc(TL.getValueLoc()));}) DEF_TRAVERSE_TYPELOC(PipeType |
| |
| | clang::DEF_TRAVERSE_DECL (BlockDecl,{if(TypeSourceInfo *TInfo=D->getSignatureAsWritten()) TRY_TO(TraverseTypeLoc(TInfo->getTypeLoc()));TRY_TO(TraverseStmt(D->getBody()));for(const auto &I:D->captures()){if(I.hasCopyExpr()){TRY_TO(TraverseStmt(I.getCopyExpr()));}}ShouldVisitChildren=false;}) DEF_TRAVERSE_DECL(CapturedDecl |
| |
| | clang::DEF_TRAVERSE_DECL (FileScopeAsmDecl,{TRY_TO(TraverseStmt(D->getAsmString()));}) DEF_TRAVERSE_DECL(FriendDecl |
| |
| else | clang::TRY_TO (TraverseDecl(D->getFriendDecl())) |
| |
| | clang::DEF_TRAVERSE_DECL (FriendTemplateDecl,{if(D->getFriendType()) TRY_TO(TraverseTypeLoc(D->getFriendType() ->getTypeLoc()));else TRY_TO(TraverseDecl(D->getFriendDecl()));for(unsigned I=0, E=D->getNumTemplateParameters();I< E;++I){TemplateParameterList *TPL=D->getTemplateParameterList(I);for(TemplateParameterList::iterator ITPL=TPL->begin(), ETPL=TPL->end();ITPL!=ETPL;++ITPL){TRY_TO(TraverseDecl(*ITPL));}}}) DEF_TRAVERSE_DECL(ClassScopeFunctionSpecializationDecl |
| |
| | clang::if (D->hasExplicitTemplateArgs()) |
| |
| | clang::DEF_TRAVERSE_DECL (ObjCPropertyImplDecl,{}) DEF_TRAVERSE_DECL(StaticAssertDecl |
| |
| | clang::TRY_TO (TraverseStmt(D->getMessage())) |
| |
| | clang::DEF_TRAVERSE_DECL (TranslationUnitDecl,{}) DEF_TRAVERSE_DECL(NamespaceAliasDecl |
| |
| | clang::DEF_TRAVERSE_DECL (LabelDecl,{}) DEF_TRAVERSE_DECL(NamespaceDecl |
| |