ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/CallbackFunctor.cpp
(Generate patch)

Comparing trunk/OOPSE/libmdtools/CallbackFunctor.cpp (file contents):
Revision 1233 by tim, Thu Jun 3 21:51:55 2004 UTC vs.
Revision 1234 by tim, Fri Jun 4 03:15:31 2004 UTC

# Line 4 | Line 4 | CallbackFunctor:: CallbackFunctor(SimInfo* rhs) : info
4   #include "ConstraintPair.hpp"
5  
6   CallbackFunctor:: CallbackFunctor(SimInfo* rhs) : info(rhs){
7 <  registerFunction(KeyType(typeid(ConstraintElement), typeid(ConstraintElement)), &CallbackFunctor::constrainAtomAtom);
8 <  registerFunction(KeyType(typeid(ConstraintElement), typeid(ConstraintRigidBody)), &CallbackFunctor::constrainAtomRigidBody);
9 <  registerFunction(KeyType(typeid(ConstraintRigidBody), typeid(ConstraintElement)), &CallbackFunctor::constrainRigidBodyAtom);
7 >  registerFunction(KeyType(typeid(ConstraintAtom), typeid(ConstraintAtom)), &CallbackFunctor::constrainAtomAtom);
8 >  registerFunction(KeyType(typeid(ConstraintAtom), typeid(ConstraintRigidBody)), &CallbackFunctor::constrainAtomRigidBody);
9 >  registerFunction(KeyType(typeid(ConstraintRigidBody), typeid(ConstraintAtom)), &CallbackFunctor::constrainRigidBodyAtom);
10    registerFunction(KeyType(typeid(ConstraintRigidBody), typeid(ConstraintRigidBody)), &CallbackFunctor::constrainRigidBodyRigidBody);  
11   }
12   void CallbackFunctor::registerFunction(const KeyType& key, MappedType f){
# Line 17 | Line 17 | int CallbackFunctor::operator()(ConstraintPair* consPa
17    DoubleDispatchMap::iterator foundResult;
18    curPair = consPair;
19    
20 <  foundResult = ddMap.find(KeyType(typeid(consPair->firstElem), typeid(consPair->secondElem)));
20 >  //typeid must operate on reference, otherwise it return the type_info of base class  
21 >  foundResult = ddMap.find(KeyType(typeid(*(consPair->firstElem)), typeid(*(consPair->secondElem))));
22    
23    if(foundResult != ddMap.end()){
24      return (this->*(foundResult->second))(consPair->firstElem, consPair->secondElem);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines