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