diff options
author | dim <dim@FreeBSD.org> | 2012-12-02 13:20:44 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2012-12-02 13:20:44 +0000 |
commit | 056abd2059c65a3e908193aeae16fad98017437c (patch) | |
tree | 2732d02d7d51218d6eed98ac7fcfc5b8794896b5 /tools/libclang/CursorVisitor.h | |
parent | cc73504950eb7b5dff2dded9bedd67bc36d64641 (diff) | |
download | FreeBSD-src-056abd2059c65a3e908193aeae16fad98017437c.zip FreeBSD-src-056abd2059c65a3e908193aeae16fad98017437c.tar.gz |
Vendor import of clang release_32 branch r168974 (effectively, 3.2 RC2):
http://llvm.org/svn/llvm-project/cfe/branches/release_32@168974
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), |