ELIMINATE the SCC class completely. One less thing deriving from std::vector
authorChris Lattner <sabre@nondot.org>
Sun, 31 Aug 2003 19:55:31 +0000 (19:55 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 31 Aug 2003 19:55:31 +0000 (19:55 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8272 91177308-0d34-0410-b5e6-96231b3b80d8

include/Support/SCCIterator.h
include/llvm/ADT/SCCIterator.h

index 753dd55343c1b6812fd5d47900bfae7f73349275..9daa6bd149cec5909b00ad0aaf4e2ca9b5cbd9e1 100644 (file)
 #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.
index 753dd55343c1b6812fd5d47900bfae7f73349275..9daa6bd149cec5909b00ad0aaf4e2ca9b5cbd9e1 100644 (file)
 #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.