--- trunk/OOPSE/libmdtools/CompositeVisitor.cpp 2004/04/19 03:52:27 1118 +++ trunk/OOPSE/libmdtools/CompositeVisitor.cpp 2004/04/19 20:54:58 1120 @@ -1,5 +1,7 @@ #include #include "CompositeVisitor.hpp" +#include "RigidBody.hpp" +#include "DirectionalAtom.hpp" CompositeVisitor::~CompositeVisitor(){ VisitorIterator i; BaseVisitor* curVisitor; @@ -37,24 +39,46 @@ BaseVisitor* CompositeVisitor::nextVisitor(VisitorIter } -void CompositeVisitor::internalVisit(StuntDouble* sd){ +void CompositeVisitor::internalVisit(Atom* atom){ VisitorIterator i; BaseVisitor* curVisitor; for(curVisitor = beginVisitor(i); curVisitor; curVisitor = nextVisitor(i)) - sd->accept(curVisitor); + atom->accept(curVisitor); } +void CompositeVisitor::internalVisit(RigidBody* rb){ + VisitorIterator i; + BaseVisitor* curVisitor; + vector myAtoms; + vector::iterator atomIter; + + myAtoms = rb->getAtoms(); + + for(curVisitor = beginVisitor(i); curVisitor; curVisitor = nextVisitor(i)){ + rb->accept(curVisitor); + + for(atomIter = myAtoms.begin(); atomIter != myAtoms.end(); ++atomIter) + (*atomIter)->accept(curVisitor); + } + + + +} + const string CompositeVisitor::toString(){ VisitorIterator i; + string result; char buffer[65535]; for(i = visitorList.begin(); i != visitorList.end(); i++){ sprintf(buffer, "Priority = %d\n", (*i).second); - strcat(buffer, (((*i).first)->toString()).c_str()); + result += buffer; + + result += ((*i).first)->toString(); } - return buffer; + return result; } void CompositeVisitor::update(){