diff options
author | Chris Lattner <sabre@nondot.org> | 2003-08-31 19:55:31 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-08-31 19:55:31 +0000 |
commit | ff8fc078906da46b00aa102d724590b1b96e5526 (patch) | |
tree | 116184cb28fab9fc16a6cd75a05453ea62091518 /include/Support/SCCIterator.h | |
parent | 729d73d425430c285116af0d1ae523e95c3fa9eb (diff) | |
download | external_llvm-ff8fc078906da46b00aa102d724590b1b96e5526.zip external_llvm-ff8fc078906da46b00aa102d724590b1b96e5526.tar.gz external_llvm-ff8fc078906da46b00aa102d724590b1b96e5526.tar.bz2 |
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.h | 34 |
1 files changed, 9 insertions, 25 deletions
diff --git a/include/Support/SCCIterator.h b/include/Support/SCCIterator.h index 753dd55..9daa6bd 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. |