ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/CompositeVisitor.hpp
Revision: 1120
Committed: Mon Apr 19 20:54:58 2004 UTC (20 years, 2 months ago) by tim
File size: 961 byte(s)
Log Message:
fixed a bug in CompositeVisitor which cause the double counting problem

File Contents

# User Rev Content
1 tim 1118 #ifndef _COMPOSITEVISITOR_H_
2     #define _COMPOSITEVISITOR_H_
3    
4     #include <list>
5     #include "BaseVisitor.hpp"
6     #include "StuntDouble.hpp"
7     using namespace std;
8    
9     typedef list<pair<BaseVisitor*, int> >::iterator VisitorIterator;
10    
11     class CompositeVisitor: public BaseVisitor{
12     public:
13     CompositeVisitor() : BaseVisitor() { visitorName = "CompositeVisitor";}
14     ~CompositeVisitor();
15    
16     virtual void visit(Atom* atom) {internalVisit(atom);}
17 tim 1120 virtual void visit(DirectionalAtom* datom) {internalVisit((Atom*)datom);}
18 tim 1118 virtual void visit(RigidBody* rb) {internalVisit(rb);}
19    
20     virtual void update();
21    
22     void addVisitor(BaseVisitor* v, int priority = 0);
23     BaseVisitor* beginVisitor(VisitorIterator& i);
24     BaseVisitor* nextVisitor(VisitorIterator& i);
25    
26     const string toString();
27     protected:
28 tim 1120 void internalVisit(Atom* sd);
29     void internalVisit(RigidBody* sd);
30 tim 1118 list<pair<BaseVisitor*, int> > visitorList;
31     };
32    
33     #endif //_COMPOSITEVISITOR_H_

Properties

Name Value
svn:executable *