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 1097 by gezelter, Mon Apr 12 20:32:20 2004 UTC vs.
Revision 1187 by chrisfen, Sat May 22 18:16:18 2004 UTC

# Line 271 | Line 271 | void StuntDouble::setJ(double j[3]){
271        painCave.isFatal = 1;
272        simError();    
273      }
274 + }
275 +
276 + void StuntDouble::getQ(double q[4] ){
277 +  switch (objType)
278 +    {
279 +    case OT_ATOM:
280 +      sprintf( painCave.errMsg,
281 +               "StuntDouble::getJ was called for a regular atom.\n"
282 +               "\tRegular Atoms don't have angular momentum.  Be smarter.\n");
283 +      painCave.isFatal = 0;
284 +      simError();
285 +      // Return zeros.
286 +      q[0] = 0;
287 +      q[1] = 0;
288 +      q[2] = 0;
289 +      q[3] = 0;
290 +      break;
291 +    case OT_DATOM:
292 +      ((DirectionalAtom*)this)->getQ(q);
293 +    break;
294 +    case OT_RIGIDBODY:
295 +      ((RigidBody*)this)->getQ(q);
296 +    break;
297 +    default:
298 +      sprintf( painCave.errMsg,
299 +               "Unrecognized ObjType (%d) in StuntDouble::getJ.\n",
300 +               objType );
301 +      painCave.isFatal = 1;
302 +      simError();    
303 +  }
304   }
305  
306 + void StuntDouble::setQ(double q[4] ){
307 +  switch (objType)
308 +    {
309 +    case OT_ATOM:
310 +      sprintf( painCave.errMsg,
311 +               "StuntDouble::setJ was called for a regular atom.\n"
312 +               "\tRegular Atoms don't have angular momentum.  Be smarter.\n");
313 +      painCave.isFatal = 1;
314 +      simError();
315 +      break;
316 +    case OT_DATOM:
317 +      ((DirectionalAtom*)this)->setJ(q);
318 +    break;
319 +    case OT_RIGIDBODY:
320 +      ((RigidBody*)this)->setJ(q);
321 +    break;
322 +    default:
323 +      sprintf( painCave.errMsg,
324 +               "Unrecognized ObjType (%d) in StuntDouble::setJ.\n",
325 +               objType );
326 +      painCave.isFatal = 1;
327 +      simError();    
328 +    }
329 + }
330   void StuntDouble::getTrq(double trq[3]){
331    switch (objType)
332      {
# Line 468 | Line 522 | void StuntDouble::getEulerAngles(double eulers[3]){
522        simError();    
523    }
524   }
525 +
526 + double StuntDouble::getZangle(){
527 +  switch (objType)
528 +    {
529 +    case OT_ATOM:
530 +      sprintf( painCave.errMsg,
531 +               "StuntDouble::getZangle was called for a regular atom.\n"
532 +               "\tRegular Atoms don't have zAngles.  Be smarter.\n");
533 +      painCave.isFatal = 0;
534 +      simError();
535 +      // Return zeros.
536 +      return 0;
537 +      break;
538 +    case OT_DATOM:
539 +      return ((DirectionalAtom*)this)->getZangle();
540 +    break;
541 +    case OT_RIGIDBODY:
542 +      return ((RigidBody*)this)->getZangle();
543 +    break;
544 +    default:
545 +      sprintf( painCave.errMsg,
546 +               "Unrecognized ObjType (%d) in StuntDouble::getZangle.\n",
547 +               objType );
548 +      painCave.isFatal = 1;
549 +      simError();    
550 +      return 0;
551 +  }
552 + }
553 +
554 + void StuntDouble::setZangle(double zAngle){
555 +  switch (objType)
556 +    {
557 +    case OT_ATOM:
558 +      sprintf( painCave.errMsg,
559 +               "StuntDouble::setZangle was called for a regular atom.\n"
560 +               "\tRegular Atoms don't have zAngles.  Be smarter.\n");
561 +      painCave.isFatal = 1;
562 +      simError();
563 +      break;
564 +    case OT_DATOM:
565 +      ((DirectionalAtom*)this)->setZangle(zAngle);
566 +    break;
567 +    case OT_RIGIDBODY:
568 +      ((RigidBody*)this)->setZangle(zAngle);
569 +    break;
570 +    default:
571 +      sprintf( painCave.errMsg,
572 +               "Unrecognized ObjType (%d) in StuntDouble::setZangle.\n",
573 +               objType );
574 +      painCave.isFatal = 1;
575 +      simError();    
576 +    }
577 + }
578 +
579 + void StuntDouble::addZangle(double zAngle){
580 +  switch (objType)
581 +    {
582 +    case OT_ATOM:
583 +      sprintf( painCave.errMsg,
584 +               "StuntDouble::addZangle was called for a regular atom.\n"
585 +               "\tRegular Atoms don't have zAngles.  Be smarter.\n");
586 +      painCave.isFatal = 1;
587 +      simError();
588 +      break;
589 +    case OT_DATOM:
590 +      ((DirectionalAtom*)this)->addZangle(zAngle);
591 +    break;
592 +    case OT_RIGIDBODY:
593 +      ((RigidBody*)this)->addZangle(zAngle);
594 +    break;
595 +    default:
596 +      sprintf( painCave.errMsg,
597 +               "Unrecognized ObjType (%d) in StuntDouble::addZangle.\n",
598 +               objType );
599 +      painCave.isFatal = 1;
600 +      simError();    
601 +    }
602 + }
603 +
604 + void StuntDouble::addProperty(GenericData* data){
605 +  map<string, GenericData*>::iterator result;
606 +  result = properties.find(data->getID());
607 +  
608 +  //we can't simply use  properties[prop->getID()] = prop,
609 +  //it will cause memory leak if we already contain a propery which has the same name of prop
610 +  
611 +  if(result != properties.end()){
612 +    delete (*result).second;
613 +    (*result).second = data;      
614 +  }
615 +  else
616 +    properties[data->getID()] = data;
617 +
618 +  
619 + }
620 + void StuntDouble::removeProperty(const string& propName){
621 +  map<string, GenericData*>::iterator result;
622 +    
623 +  result = properties.find(propName);
624 +  
625 +  if(result != properties.end())
626 +    properties.erase(result);
627 +  
628 + }
629 + GenericData* StuntDouble::getProperty(const string& propName){
630 +  map<string, GenericData*>::iterator result;
631 +  
632 +  
633 +  result = properties.find(propName);
634 +  
635 +  if(result != properties.end())
636 +    return (*result).second;  
637 +  else  
638 +    return NULL;    
639 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines