Do not use a class before it is defined.
[oota-llvm.git] / lib / Target / SparcV9 / InstrSched / InstrScheduling.cpp
index 2a2ef27a29f586c705028b2041ba3e88833fa0f9..a50439de7f66fe5d236c1d038ffe8d480b01c6e6 100644 (file)
@@ -111,10 +111,7 @@ public:
   
   inline bool operator!=(const _Self& x) const { return !operator==(x); }
   
-  inline _NodeType* operator*() const {
-    assert(cycleNum < S.groups.size());
-    return (*S.groups[cycleNum])[slotNum];
-  }
+  inline _NodeType* operator*() const;
   inline _NodeType* operator->() const { return operator*(); }
   
          _Self& operator++();                          // Preincrement
@@ -201,11 +198,17 @@ public: // accessor functions to query chosen schedule
   }
   
 private:
-  friend class iterator;
-  friend class const_iterator;
+  friend class ScheduleIterator<SchedGraphNode>;
+  friend class ScheduleIterator<const SchedGraphNode>;
   /*ctor*/     InstrSchedule   ();     // Disable: DO NOT IMPLEMENT.
 };
 
+template<class NodeType>
+inline NodeType *ScheduleIterator<NodeType>::operator*() const {
+  assert(cycleNum < S.groups.size());
+  return (*S.groups[cycleNum])[slotNum];
+}
+
 
 /*ctor*/
 InstrSchedule::InstrSchedule(unsigned int _nslots, unsigned int _numNodes)