summaryrefslogtreecommitdiff
path: root/include/Support/SCCIterator.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-08-31 19:55:31 +0000
committerChris Lattner <sabre@nondot.org>2003-08-31 19:55:31 +0000
commitff8fc078906da46b00aa102d724590b1b96e5526 (patch)
tree116184cb28fab9fc16a6cd75a05453ea62091518 /include/Support/SCCIterator.h
parent729d73d425430c285116af0d1ae523e95c3fa9eb (diff)
downloadllvm-ff8fc078906da46b00aa102d724590b1b96e5526.tar.gz
llvm-ff8fc078906da46b00aa102d724590b1b96e5526.tar.bz2
llvm-ff8fc078906da46b00aa102d724590b1b96e5526.tar.xz
ELIMINATE the SCC class completely. One less thing deriving from std::vector
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8272 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/Support/SCCIterator.h')
-rw-r--r--include/Support/SCCIterator.h34
1 files changed, 9 insertions, 25 deletions
diff --git a/include/Support/SCCIterator.h b/include/Support/SCCIterator.h
index 753dd55343..9daa6bd149 100644
--- a/include/Support/SCCIterator.h
+++ b/include/Support/SCCIterator.h
@@ -20,36 +20,20 @@
#include <vector>
#include <map>
-//--------------------------------------------------------------------------
-// class SCC - A simple representation of an SCC in a generic Graph.
-//--------------------------------------------------------------------------
-
+//===----------------------------------------------------------------------===//
+///
+/// TarjanSCC_iterator - Enumerate the SCCs of a directed graph, in
+/// reverse topological order of the SCC DAG.
+///
template<class GraphT, class GT = GraphTraits<GraphT> >
-struct SCC : public std::vector<typename GT::NodeType*> {
-
- typedef typename GT::NodeType NodeType;
+class TarjanSCC_iterator
+ : public forward_iterator<std::vector<typename GT::NodeType>, ptrdiff_t> {
+ typedef typename GT::NodeType NodeType;
typedef typename GT::ChildIteratorType ChildItTy;
-
- typedef std::vector<typename GT::NodeType*> super;
- typedef typename super::iterator iterator;
- typedef typename super::const_iterator const_iterator;
- typedef typename super::reverse_iterator reverse_iterator;
- typedef typename super::const_reverse_iterator const_reverse_iterator;
-};
-
-//--------------------------------------------------------------------------
-// class TarjanSCC_iterator: Enumerate the SCCs of a directed graph, in
-// reverse topological order of the SCC DAG.
-//--------------------------------------------------------------------------
-
-template<class GraphT, class GT = GraphTraits<GraphT> >
-class TarjanSCC_iterator : public forward_iterator<SCC<GraphT, GT>, ptrdiff_t> {
- typedef SCC<GraphT, GT> SccTy;
+ typedef std::vector<NodeType*> SccTy;
typedef forward_iterator<SccTy, ptrdiff_t> super;
typedef typename super::reference reference;
typedef typename super::pointer pointer;
- typedef typename GT::NodeType NodeType;
- typedef typename GT::ChildIteratorType ChildItTy;
// The visit counters used to detect when a complete SCC is on the stack.
// visitNum is the global counter.