diff options
Diffstat (limited to 'clang/include/clang/Analysis/CFG.h')
-rw-r--r-- | clang/include/clang/Analysis/CFG.h | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/clang/include/clang/Analysis/CFG.h b/clang/include/clang/Analysis/CFG.h index 43fb523c863a..9e32eb8e066a 100644 --- a/clang/include/clang/Analysis/CFG.h +++ b/clang/include/clang/Analysis/CFG.h @@ -1307,6 +1307,12 @@ public: iterator nodes_begin() { return iterator(Blocks.begin()); } iterator nodes_end() { return iterator(Blocks.end()); } + + llvm::iterator_range<iterator> nodes() { return {begin(), end()}; } + llvm::iterator_range<const_iterator> const_nodes() const { + return {begin(), end()}; + } + const_iterator nodes_begin() const { return const_iterator(Blocks.begin()); } const_iterator nodes_end() const { return const_iterator(Blocks.end()); } @@ -1315,6 +1321,13 @@ public: const_reverse_iterator rbegin() const { return Blocks.rbegin(); } const_reverse_iterator rend() const { return Blocks.rend(); } + llvm::iterator_range<reverse_iterator> reverse_nodes() { + return {rbegin(), rend()}; + } + llvm::iterator_range<const_reverse_iterator> const_reverse_nodes() const { + return {rbegin(), rend()}; + } + CFGBlock & getEntry() { return *Entry; } const CFGBlock & getEntry() const { return *Entry; } CFGBlock & getExit() { return *Exit; } @@ -1376,13 +1389,12 @@ public: // Member templates useful for various batch operations over CFGs. //===--------------------------------------------------------------------===// - template <typename CALLBACK> - void VisitBlockStmts(CALLBACK& O) const { + template <typename Callback> void VisitBlockStmts(Callback &O) const { for (const_iterator I = begin(), E = end(); I != E; ++I) for (CFGBlock::const_iterator BI = (*I)->begin(), BE = (*I)->end(); BI != BE; ++BI) { if (Optional<CFGStmt> stmt = BI->getAs<CFGStmt>()) - O(const_cast<Stmt*>(stmt->getStmt())); + O(const_cast<Stmt *>(stmt->getStmt())); } } |