Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/World.cpp

    r3839e5 rdc11c9  
    8585
    8686void World::setDomain(const Matrix &mat){
     87  OBSERVE;
    8788  *cell_size = mat;
    8889}
     
    9091void World::setDomain(double * matrix)
    9192{
     93  OBSERVE;
    9294  Matrix M = ReturnFullMatrixforSymmetric(matrix);
    9395  cell_size->setM(M);
     
    100102void World::setDefaultName(std::string name)
    101103{
     104  OBSERVE;
    102105  defaultName = name;
    103106};
     
    231234    atomIdPool_t::iterator iter=atomIdPool.begin();
    232235    atomId_t id = iter->first;
    233     pair<atomId_t,atomId_t> newRange = make_pair(id+1,iter->second);
     236    range<atomId_t> newRange = makeRange(id+1,iter->last);
    234237    // we wont use this iterator anymore, so we don't care about invalidating
    235238    atomIdPool.erase(iter);
    236     if(newRange.first<newRange.second){
     239    if(newRange.first<newRange.last){
    237240      atomIdPool.insert(newRange);
    238241    }
     
    244247
    245248void World::releaseAtomId(atomId_t id){
    246   atomIdPool.insert(make_pair(id,id+1));
     249  atomIdPool.insert(makeRange(id,id+1));
    247250  defragAtomIdPool();
    248251}
     
    250253bool World::reserveAtomId(atomId_t id){
    251254  if(id>=currAtomId ){
    252     pair<atomId_t,atomId_t> newRange = make_pair(currAtomId,id);
    253     if(newRange.first<newRange.second){
     255    range<atomId_t> newRange = makeRange(currAtomId,id);
     256    if(newRange.first<newRange.last){
    254257      atomIdPool.insert(newRange);
    255258    }
     
    260263  // look for a range that matches the request
    261264  for(atomIdPool_t::iterator iter=atomIdPool.begin();iter!=atomIdPool.end();++iter){
    262     if(iter->first>id){
    263       // we have coverd all available ranges... nothing to be found here
     265    if(iter->isBefore(id)){
     266      // we have covered all available ranges... nothing to be found here
    264267      break;
    265268    }
    266269    // no need to check first, since it has to be <=id, since otherwise we would have broken out
    267     if(iter->second > id){
     270    if(!iter->isBeyond(id)){
    268271      // we found a matching range... get the id from this range
    269272
    270273      // split up this range at the point of id
    271       pair<atomId_t,atomId_t> bottomRange = make_pair(iter->first,id);
    272       pair<atomId_t,atomId_t> topRange = make_pair(id+1,iter->second);
     274      range<atomId_t> bottomRange = makeRange(iter->first,id);
     275      range<atomId_t> topRange = makeRange(id+1,iter->last);
    273276      // remove this range
    274277      atomIdPool.erase(iter);
    275       if(bottomRange.first<bottomRange.second){
     278      if(bottomRange.first<bottomRange.last){
    276279        atomIdPool.insert(bottomRange);
    277280      }
    278       if(topRange.first<topRange.second){
     281      if(topRange.first<topRange.last){
    279282        atomIdPool.insert(topRange);
    280283      }
     
    298301    atomIdPool_t::iterator next = iter;
    299302    next++;
    300     if(next!=atomIdPool.end() && (next->first==iter->second)){
     303    if(next!=atomIdPool.end() && (next->first==iter->last)){
    301304      // merge the two ranges
    302       pair<atomId_t,atomId_t> newRange = make_pair(iter->first,next->second);
     305      range<atomId_t> newRange = makeRange(iter->first,next->last);
    303306      atomIdPool.erase(iter);
    304307      atomIdPool.erase(next);
     
    314317    atomIdPool_t::iterator iter = atomIdPool.end();
    315318    iter--;
    316     if(iter->second==currAtomId){
     319    if(iter->last==currAtomId){
    317320      currAtomId=iter->first;
    318321      atomIdPool.erase(iter);
     
    330333    moleculeIdPool_t::iterator iter=moleculeIdPool.begin();
    331334    moleculeId_t id = iter->first;
    332     pair<moleculeId_t,moleculeId_t> newRange = make_pair(id+1,iter->second);
     335    range<moleculeId_t> newRange = makeRange(id+1,iter->last);
    333336    // we wont use this iterator anymore, so we don't care about invalidating
    334337    moleculeIdPool.erase(iter);
    335     if(newRange.first<newRange.second){
     338    if(newRange.first<newRange.last){
    336339      moleculeIdPool.insert(newRange);
    337340    }
     
    343346
    344347void World::releaseMoleculeId(moleculeId_t id){
    345   moleculeIdPool.insert(make_pair(id,id+1));
     348  moleculeIdPool.insert(makeRange(id,id+1));
    346349  defragMoleculeIdPool();
    347350}
     
    349352bool World::reserveMoleculeId(moleculeId_t id){
    350353  if(id>=currMoleculeId ){
    351     pair<moleculeId_t,moleculeId_t> newRange = make_pair(currMoleculeId,id);
    352     if(newRange.first<newRange.second){
     354    range<moleculeId_t> newRange = makeRange(currMoleculeId,id);
     355    if(newRange.first<newRange.last){
    353356      moleculeIdPool.insert(newRange);
    354357    }
     
    359362  // look for a range that matches the request
    360363  for(moleculeIdPool_t::iterator iter=moleculeIdPool.begin();iter!=moleculeIdPool.end();++iter){
    361     if(iter->first>id){
     364    if(iter->isBefore(id)){
    362365      // we have coverd all available ranges... nothing to be found here
    363366      break;
    364367    }
    365368    // no need to check first, since it has to be <=id, since otherwise we would have broken out
    366     if(iter->second > id){
     369    if(!iter->isBeyond(id)){
    367370      // we found a matching range... get the id from this range
    368371
    369372      // split up this range at the point of id
    370       pair<moleculeId_t,moleculeId_t> bottomRange = make_pair(iter->first,id);
    371       pair<moleculeId_t,moleculeId_t> topRange = make_pair(id+1,iter->second);
     373      range<moleculeId_t> bottomRange = makeRange(iter->first,id);
     374      range<moleculeId_t> topRange = makeRange(id+1,iter->last);
    372375      // remove this range
    373376      moleculeIdPool.erase(iter);
    374       if(bottomRange.first<bottomRange.second){
     377      if(bottomRange.first<bottomRange.last){
    375378        moleculeIdPool.insert(bottomRange);
    376379      }
    377       if(topRange.first<topRange.second){
     380      if(topRange.first<topRange.last){
    378381        moleculeIdPool.insert(topRange);
    379382      }
     
    397400    moleculeIdPool_t::iterator next = iter;
    398401    next++;
    399     if(next!=moleculeIdPool.end() && (next->first==iter->second)){
     402    if(next!=moleculeIdPool.end() && (next->first==iter->last)){
    400403      // merge the two ranges
    401       pair<moleculeId_t,moleculeId_t> newRange = make_pair(iter->first,next->second);
     404      range<moleculeId_t> newRange = makeRange(iter->first,next->last);
    402405      moleculeIdPool.erase(iter);
    403406      moleculeIdPool.erase(next);
     
    413416    moleculeIdPool_t::iterator iter = moleculeIdPool.end();
    414417    iter--;
    415     if(iter->second==currMoleculeId){
     418    if(iter->last==currMoleculeId){
    416419      currMoleculeId=iter->first;
    417420      moleculeIdPool.erase(iter);
Note: See TracChangeset for help on using the changeset viewer.