Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Atom/atom.cpp

    rc32d21 rd05088  
    5858  mol(0)
    5959{
    60   // sign on to global atom change tracker
     60  // note AtomObserver about inserted atom
    6161  AtomObserver::getInstance().AtomInserted(this);
    6262}
     
    6969    mol(0)
    7070{
    71   // sign on to global atom change tracker
     71  // sign on to father atom to be notified when it is removed
     72  father->signOn(this);
     73
     74  // note AtomObserver about inserted atom
    7275  AtomObserver::getInstance().AtomInserted(this);
    7376};
     
    8487atom::~atom()
    8588{
     89  // sign off from possible father
     90  if ((father != this) && (father != NULL))
     91    father->signOff(this);
     92
    8693  removeFromMolecule();
    87   // sign off from global atom change tracker
     94  // note AtomObserver about removed atom
    8895  AtomObserver::getInstance().AtomRemoved(this);
    8996}
     
    125132    return father->GetTrueFather();
    126133  }
    127 };
     134}
     135
     136void atom::setFather(atom * const _father)
     137{
     138  // sign off from old father
     139  if ((father != this) && (father != NULL))
     140    father->signOff(this);
     141
     142  father = _father;
     143  father->signOn(this);
     144}
    128145
    129146/** Sets father to itself or its father in case of copying a molecule.
     
    325342  return atom1->getType()->getAtomicNumber() < atom2->getType()->getAtomicNumber();
    326343}
     344/*
     345void atom::update(Observable *publisher)
     346{}
     347
     348void atom::recieveNotification(Observable *publisher, Notification_ptr notification)
     349{
     350  ASSERT(0, "atom::recieveNotification() - we are not signed on to any notifications.");
     351}
     352*/
     353void atom::subjectKilled(Observable *publisher)
     354{
     355  // as publisher has been half-deallocated (Observable is one of the base classes, hence
     356  // becomes destroyed latest), we cannot senibly cast it anymore.
     357  // Hence, we simply have to check here whether it is NOT one of the other instances
     358  // we are signed on to.
     359  father = this;
     360  // no need to sign off
     361}
Note: See TracChangeset for help on using the changeset viewer.