ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/CompositeVisitor.cpp
Revision: 1119
Committed: Mon Apr 19 17:44:48 2004 UTC (20 years, 2 months ago) by tim
File size: 1814 byte(s)
Log Message:
Dump2XYZ is almost working except atoms in rigidbody are double counted

File Contents

# Content
1 #include <cstring>
2 #include "CompositeVisitor.hpp"
3 CompositeVisitor::~CompositeVisitor(){
4 VisitorIterator i;
5 BaseVisitor* curVisitor;
6
7 for(curVisitor = beginVisitor(i); curVisitor; curVisitor = nextVisitor(i))
8 delete curVisitor;
9
10 visitorList.clear();
11
12 }
13 void CompositeVisitor::addVisitor(BaseVisitor* newVisitor, int priority){
14 VisitorIterator i;
15 int curPriority;
16
17 for(i = visitorList.begin(); i != visitorList.end(); i++){
18 curPriority = (*i).second;
19 //if new visitor has higher priority, just insert it before current visitor
20 if(priority > curPriority){
21 visitorList.insert(i, make_pair(newVisitor, priority));
22 }
23 }
24
25 //if new visitor has lowest priority, insert it at the end of the list
26 visitorList.insert(visitorList.end(), make_pair(newVisitor, priority));
27 }
28
29 BaseVisitor* CompositeVisitor::beginVisitor(VisitorIterator& i){
30 i = visitorList.begin();
31 return i != visitorList.end() ? (*i).first : NULL;
32 }
33
34 BaseVisitor* CompositeVisitor::nextVisitor(VisitorIterator& i){
35 ++i;
36 return i != visitorList.end() ? (*i).first : NULL;
37
38 }
39
40 void CompositeVisitor::internalVisit(StuntDouble* sd){
41 VisitorIterator i;
42 BaseVisitor* curVisitor;
43
44 for(curVisitor = beginVisitor(i); curVisitor; curVisitor = nextVisitor(i))
45 sd->accept(curVisitor);
46 }
47
48 const string CompositeVisitor::toString(){
49 VisitorIterator i;
50 string result;
51 char buffer[65535];
52
53 for(i = visitorList.begin(); i != visitorList.end(); i++){
54 sprintf(buffer, "Priority = %d\n", (*i).second);
55 result += buffer;
56
57 result += ((*i).first)->toString();
58 }
59
60 return result;
61 }
62
63 void CompositeVisitor::update(){
64 VisitorIterator i;
65 BaseVisitor* curVisitor;
66
67 for(curVisitor = beginVisitor(i); curVisitor; curVisitor = nextVisitor(i))
68 curVisitor->update();
69 }

Properties

Name Value
svn:executable *