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

# User Rev Content
1 tim 1118 #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 tim 1119 string result;
51 tim 1118 char buffer[65535];
52    
53     for(i = visitorList.begin(); i != visitorList.end(); i++){
54     sprintf(buffer, "Priority = %d\n", (*i).second);
55 tim 1119 result += buffer;
56    
57     result += ((*i).first)->toString();
58 tim 1118 }
59    
60 tim 1119 return result;
61 tim 1118 }
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 *