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

Comparing trunk/OOPSE/libmdtools/StuntDouble.cpp (file contents):
Revision 1108 by tim, Wed Apr 14 15:37:41 2004 UTC vs.
Revision 1253 by gezelter, Tue Jun 8 16:49:46 2004 UTC

# Line 24 | Line 24
24        quotes above are from Spaceballs...)
25  
26   */
27 +
28 + StuntDouble::~StuntDouble(){
29 +  map<string, GenericData*>::iterator iter;
30 +
31 +  for(iter = properties.begin(); iter != properties.end(); ++iter ){
32 +    delete iter->second;
33 +    properties.erase(iter);
34 +  }
35 +    
36 + }
37  
38   int StuntDouble::getObjType(){
39    return objType;
# Line 128 | Line 138 | void StuntDouble::setVel(double vel[3]){
138   }
139  
140   void StuntDouble::setVel(double vel[3]){
141 +
142    switch (objType)
143      {
144      case OT_ATOM :
# Line 520 | Line 531 | void StuntDouble::getEulerAngles(double eulers[3]){
531                 objType );
532        painCave.isFatal = 1;
533        simError();    
534 +  }
535 + }
536 +
537 + double StuntDouble::getZangle(){
538 +  switch (objType)
539 +    {
540 +    case OT_ATOM:
541 +      sprintf( painCave.errMsg,
542 +               "StuntDouble::getZangle was called for a regular atom.\n"
543 +               "\tRegular Atoms don't have zAngles.  Be smarter.\n");
544 +      painCave.isFatal = 0;
545 +      simError();
546 +      // Return zeros.
547 +      return 0;
548 +      break;
549 +    case OT_DATOM:
550 +      return ((DirectionalAtom*)this)->getZangle();
551 +    break;
552 +    case OT_RIGIDBODY:
553 +      return ((RigidBody*)this)->getZangle();
554 +    break;
555 +    default:
556 +      sprintf( painCave.errMsg,
557 +               "Unrecognized ObjType (%d) in StuntDouble::getZangle.\n",
558 +               objType );
559 +      painCave.isFatal = 1;
560 +      simError();    
561 +      return 0;
562    }
563   }
564 +
565 + void StuntDouble::setZangle(double zAngle){
566 +  switch (objType)
567 +    {
568 +    case OT_ATOM:
569 +      sprintf( painCave.errMsg,
570 +               "StuntDouble::setZangle was called for a regular atom.\n"
571 +               "\tRegular Atoms don't have zAngles.  Be smarter.\n");
572 +      painCave.isFatal = 1;
573 +      simError();
574 +      break;
575 +    case OT_DATOM:
576 +      ((DirectionalAtom*)this)->setZangle(zAngle);
577 +    break;
578 +    case OT_RIGIDBODY:
579 +      ((RigidBody*)this)->setZangle(zAngle);
580 +    break;
581 +    default:
582 +      sprintf( painCave.errMsg,
583 +               "Unrecognized ObjType (%d) in StuntDouble::setZangle.\n",
584 +               objType );
585 +      painCave.isFatal = 1;
586 +      simError();    
587 +    }
588 + }
589 +
590 + void StuntDouble::addZangle(double zAngle){
591 +  switch (objType)
592 +    {
593 +    case OT_ATOM:
594 +      sprintf( painCave.errMsg,
595 +               "StuntDouble::addZangle was called for a regular atom.\n"
596 +               "\tRegular Atoms don't have zAngles.  Be smarter.\n");
597 +      painCave.isFatal = 1;
598 +      simError();
599 +      break;
600 +    case OT_DATOM:
601 +      ((DirectionalAtom*)this)->addZangle(zAngle);
602 +    break;
603 +    case OT_RIGIDBODY:
604 +      ((RigidBody*)this)->addZangle(zAngle);
605 +    break;
606 +    default:
607 +      sprintf( painCave.errMsg,
608 +               "Unrecognized ObjType (%d) in StuntDouble::addZangle.\n",
609 +               objType );
610 +      painCave.isFatal = 1;
611 +      simError();    
612 +    }
613 + }
614 +
615 + void StuntDouble::addProperty(GenericData* data){
616 +  map<string, GenericData*>::iterator result;
617 +  result = properties.find(data->getID());
618 +  
619 +  //we can't simply use  properties[prop->getID()] = prop,
620 +  //it will cause memory leak if we already contain a propery which has the same name of prop
621 +  
622 +  if(result != properties.end()){
623 +    delete (*result).second;
624 +    (*result).second = data;      
625 +  }
626 +  else
627 +    properties[data->getID()] = data;
628 +
629 +  
630 + }
631 + void StuntDouble::removeProperty(const string& propName){
632 +  map<string, GenericData*>::iterator result;
633 +    
634 +  result = properties.find(propName);
635 +  
636 +  if(result != properties.end()){
637 +    delete result->second;
638 +    properties.erase(result);
639 +    
640 +  }
641 +  
642 + }
643 + GenericData* StuntDouble::getProperty(const string& propName){
644 +  map<string, GenericData*>::iterator result;
645 +  
646 +  
647 +  result = properties.find(propName);
648 +  
649 +  if(result != properties.end())
650 +    return (*result).second;  
651 +  else  
652 +    return NULL;    
653 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines