diff options
Diffstat (limited to 'tools/libclang/CursorVisitor.h')
-rw-r--r-- | tools/libclang/CursorVisitor.h | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/tools/libclang/CursorVisitor.h b/tools/libclang/CursorVisitor.h index 88b70a4..7cf7508 100644 --- a/tools/libclang/CursorVisitor.h +++ b/tools/libclang/CursorVisitor.h @@ -1,4 +1,4 @@ -//===- CursorVisitor.h - CursorVisitor interface --------------------------===// +//===- CursorVisitor.h - CursorVisitor interface ----------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -32,7 +32,7 @@ public: NestedNameSpecifierLocVisitKind, DeclarationNameInfoVisitKind, MemberRefVisitKind, SizeOfPackExprPartsKind, - LambdaExprPartsKind }; + LambdaExprPartsKind, PostChildrenVisitKind }; protected: void *data[3]; CXCursor parent; @@ -46,7 +46,6 @@ protected: public: Kind getKind() const { return K; } const CXCursor &getParent() const { return parent; } - static bool classof(VisitorJob *VJ) { return true; } }; typedef SmallVector<VisitorJob, 10> VisitorWorkList; @@ -55,6 +54,13 @@ typedef SmallVector<VisitorJob, 10> VisitorWorkList; class CursorVisitor : public DeclVisitor<CursorVisitor, bool>, public TypeLocVisitor<CursorVisitor, bool> { +public: + /// \brief Callback called after child nodes of a cursor have been visited. + /// Return true to break visitation or false to continue. + typedef bool (*PostChildrenVisitorTy)(CXCursor cursor, + CXClientData client_data); + +private: /// \brief The translation unit we are traversing. CXTranslationUnit TU; ASTUnit *AU; @@ -69,6 +75,8 @@ class CursorVisitor : public DeclVisitor<CursorVisitor, bool>, /// \brief The visitor function. CXCursorVisitor Visitor; + PostChildrenVisitorTy PostChildrenVisitor; + /// \brief The opaque client data, to be passed along to the visitor. CXClientData ClientData; @@ -137,9 +145,11 @@ public: bool VisitPreprocessorLast, bool VisitIncludedPreprocessingEntries = false, SourceRange RegionOfInterest = SourceRange(), - bool VisitDeclsOnly = false) + bool VisitDeclsOnly = false, + PostChildrenVisitorTy PostChildrenVisitor = 0) : TU(TU), AU(static_cast<ASTUnit*>(TU->TUData)), - Visitor(Visitor), ClientData(ClientData), + Visitor(Visitor), PostChildrenVisitor(PostChildrenVisitor), + ClientData(ClientData), VisitPreprocessorLast(VisitPreprocessorLast), VisitIncludedEntities(VisitIncludedPreprocessingEntries), RegionOfInterest(RegionOfInterest), |