ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/ConstraintIterator.hpp
(Generate patch)

Comparing trunk/OOPSE/libmdtools/ConstraintIterator.hpp (file contents):
Revision 1232 by tim, Thu Jun 3 21:51:55 2004 UTC vs.
Revision 1250 by gezelter, Fri Jun 4 21:00:20 2004 UTC

# Line 1 | Line 1
1 < #ifndef _CONSTRAINT_ITERATOR_H_
1 > #ifndef _CONSTRAINT_ITERATOR_H_
2   #define _CONSTRAINT_ITERATOR_H_
3   #include <list>
4   #include <vector>
5  
6 < using namespace std;
7 < //abstract iterator class
6 > using namespace std;
7 > //abstract iterator class
8   template<class Item> class IteratorBase{
9    public:
10      virtual ~IteratorBase(){}
11      virtual void first() = 0;
12      virtual void next() = 0;
13 <    virtual bool isEnd() = 0;
13 >    virtual bool isEnd() = 0;
14  
15 <    virtual Item* currentItem() =0;
15 >    virtual Item* currentItem() =0;
16  
17    protected:
18      IteratorBase() {};
# Line 22 | Line 22 | template <class Item> class ConstraintIterator{
22    public:
23      ConstraintIterator(list<vector<Item*> >& aContainer) : container(aContainer){}
24      
25 <    virtual void first(){
26 <      listIter = container.begin();
27 <      //the construction of the container will guarantee every vector in list will contain at least one element
28 <      //so we don't need to worry about the empty vector problem
29 <      //while (listIter->empty())
30 <      //  ++listIter;
31 <
32 <      vectorIter = listIter->begin();
33 <    }
34 <    
35 <    virtual void next(){
36 <      ++vectorIter;
37 <      if (vectorIter == listIter->end()){
38 <
39 <        //do{
40 <        //++listIter;
41 <        //}while(listIter->empty())
42 <        ++listIter;
43 <        if (listIter != container.end())
44 <          vectorIter = listIter->begin();
45 <      }
46 <    }
47 <    
48 <    virtual bool isEnd(){
49 <      return listIter == container.end();
50 <    }
25 >    virtual void first(){
26 >      listIter = container.begin();
27 >      //the construction of the container will guarantee every vector in list will contain at least one element
28 >      //so we don't need to worry about the empty vector problem
29 >      //while (listIter->empty())
30 >      //  ++listIter;
31  
32 <    Item* currentItem(){
33 <      return listIter ==container.end() ? NULL : *vectorIter;
34 <    }
32 >      vectorIter = listIter->begin();
33 >    }
34 >    
35 >    virtual void next(){
36 >      ++vectorIter;
37 >      if (vectorIter == listIter->end()){
38  
39 +        //do{
40 +        //++listIter;
41 +        //}while(listIter->empty())
42 +        ++listIter;
43 +        if (listIter != container.end())
44 +          vectorIter = listIter->begin();
45 +      }
46 +    }
47 +    
48 +    virtual bool isEnd(){
49 +      return listIter == container.end();
50 +    }
51 +
52 +    Item* currentItem(){
53 +      return listIter ==container.end() ? NULL : *vectorIter;
54 +    }
55 +
56    private:
57 <    list<vector<Item*> >& container;
58 <
59 <    list<vector<Item*> >::iterator listIter;
60 <    vector<Item*>::iterator vectorIter;
57 >    list<vector<Item*> >& container;
58  
59 +    list<vector<Item*> >::iterator listIter;
60 +    vector<Item*>::iterator vectorIter;
61   };
62  
63   typedef ConstraintIterator<ConstraintPair> ConstraintPairIterator;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines