Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/World.cpp

    re472eab r57f243  
    2525#include "Helpers/Assert.hpp"
    2626#include "Box.hpp"
    27 #include "Matrix.hpp"
     27#include "LinearAlgebra/Matrix.hpp"
    2828#include "defs.hpp"
    2929
     
    4848}
    4949
    50 vector<atom*> World::getAllAtoms(AtomDescriptor descriptor){
     50World::AtomComposite World::getAllAtoms(AtomDescriptor descriptor){
    5151  return descriptor.findAll();
    5252}
    5353
    54 vector<atom*> World::getAllAtoms(){
     54World::AtomComposite World::getAllAtoms(){
    5555  return getAllAtoms(AllAtoms());
    5656}
     
    234234    atomIdPool_t::iterator iter=atomIdPool.begin();
    235235    atomId_t id = iter->first;
    236     pair<atomId_t,atomId_t> newRange = make_pair(id+1,iter->second);
     236    range<atomId_t> newRange = makeRange(id+1,iter->last);
    237237    // we wont use this iterator anymore, so we don't care about invalidating
    238238    atomIdPool.erase(iter);
    239     if(newRange.first<newRange.second){
     239    if(newRange.first<newRange.last){
    240240      atomIdPool.insert(newRange);
    241241    }
     
    247247
    248248void World::releaseAtomId(atomId_t id){
    249   atomIdPool.insert(make_pair(id,id+1));
     249  atomIdPool.insert(makeRange(id,id+1));
    250250  defragAtomIdPool();
    251251}
     
    253253bool World::reserveAtomId(atomId_t id){
    254254  if(id>=currAtomId ){
    255     pair<atomId_t,atomId_t> newRange = make_pair(currAtomId,id);
    256     if(newRange.first<newRange.second){
     255    range<atomId_t> newRange = makeRange(currAtomId,id);
     256    if(newRange.first<newRange.last){
    257257      atomIdPool.insert(newRange);
    258258    }
     
    263263  // look for a range that matches the request
    264264  for(atomIdPool_t::iterator iter=atomIdPool.begin();iter!=atomIdPool.end();++iter){
    265     if(iter->first>id){
    266       // 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
    267267      break;
    268268    }
    269269    // no need to check first, since it has to be <=id, since otherwise we would have broken out
    270     if(iter->second > id){
     270    if(!iter->isBeyond(id)){
    271271      // we found a matching range... get the id from this range
    272272
    273273      // split up this range at the point of id
    274       pair<atomId_t,atomId_t> bottomRange = make_pair(iter->first,id);
    275       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);
    276276      // remove this range
    277277      atomIdPool.erase(iter);
    278       if(bottomRange.first<bottomRange.second){
     278      if(bottomRange.first<bottomRange.last){
    279279        atomIdPool.insert(bottomRange);
    280280      }
    281       if(topRange.first<topRange.second){
     281      if(topRange.first<topRange.last){
    282282        atomIdPool.insert(topRange);
    283283      }
     
    301301    atomIdPool_t::iterator next = iter;
    302302    next++;
    303     if(next!=atomIdPool.end() && (next->first==iter->second)){
     303    if(next!=atomIdPool.end() && (next->first==iter->last)){
    304304      // merge the two ranges
    305       pair<atomId_t,atomId_t> newRange = make_pair(iter->first,next->second);
     305      range<atomId_t> newRange = makeRange(iter->first,next->last);
    306306      atomIdPool.erase(iter);
    307307      atomIdPool.erase(next);
     
    317317    atomIdPool_t::iterator iter = atomIdPool.end();
    318318    iter--;
    319     if(iter->second==currAtomId){
     319    if(iter->last==currAtomId){
    320320      currAtomId=iter->first;
    321321      atomIdPool.erase(iter);
     
    333333    moleculeIdPool_t::iterator iter=moleculeIdPool.begin();
    334334    moleculeId_t id = iter->first;
    335     pair<moleculeId_t,moleculeId_t> newRange = make_pair(id+1,iter->second);
     335    range<moleculeId_t> newRange = makeRange(id+1,iter->last);
    336336    // we wont use this iterator anymore, so we don't care about invalidating
    337337    moleculeIdPool.erase(iter);
    338     if(newRange.first<newRange.second){
     338    if(newRange.first<newRange.last){
    339339      moleculeIdPool.insert(newRange);
    340340    }
     
    346346
    347347void World::releaseMoleculeId(moleculeId_t id){
    348   moleculeIdPool.insert(make_pair(id,id+1));
     348  moleculeIdPool.insert(makeRange(id,id+1));
    349349  defragMoleculeIdPool();
    350350}
     
    352352bool World::reserveMoleculeId(moleculeId_t id){
    353353  if(id>=currMoleculeId ){
    354     pair<moleculeId_t,moleculeId_t> newRange = make_pair(currMoleculeId,id);
    355     if(newRange.first<newRange.second){
     354    range<moleculeId_t> newRange = makeRange(currMoleculeId,id);
     355    if(newRange.first<newRange.last){
    356356      moleculeIdPool.insert(newRange);
    357357    }
     
    362362  // look for a range that matches the request
    363363  for(moleculeIdPool_t::iterator iter=moleculeIdPool.begin();iter!=moleculeIdPool.end();++iter){
    364     if(iter->first>id){
     364    if(iter->isBefore(id)){
    365365      // we have coverd all available ranges... nothing to be found here
    366366      break;
    367367    }
    368368    // no need to check first, since it has to be <=id, since otherwise we would have broken out
    369     if(iter->second > id){
     369    if(!iter->isBeyond(id)){
    370370      // we found a matching range... get the id from this range
    371371
    372372      // split up this range at the point of id
    373       pair<moleculeId_t,moleculeId_t> bottomRange = make_pair(iter->first,id);
    374       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);
    375375      // remove this range
    376376      moleculeIdPool.erase(iter);
    377       if(bottomRange.first<bottomRange.second){
     377      if(bottomRange.first<bottomRange.last){
    378378        moleculeIdPool.insert(bottomRange);
    379379      }
    380       if(topRange.first<topRange.second){
     380      if(topRange.first<topRange.last){
    381381        moleculeIdPool.insert(topRange);
    382382      }
     
    400400    moleculeIdPool_t::iterator next = iter;
    401401    next++;
    402     if(next!=moleculeIdPool.end() && (next->first==iter->second)){
     402    if(next!=moleculeIdPool.end() && (next->first==iter->last)){
    403403      // merge the two ranges
    404       pair<moleculeId_t,moleculeId_t> newRange = make_pair(iter->first,next->second);
     404      range<moleculeId_t> newRange = makeRange(iter->first,next->last);
    405405      moleculeIdPool.erase(iter);
    406406      moleculeIdPool.erase(next);
     
    416416    moleculeIdPool_t::iterator iter = moleculeIdPool.end();
    417417    iter--;
    418     if(iter->second==currMoleculeId){
     418    if(iter->last==currMoleculeId){
    419419      currMoleculeId=iter->first;
    420420      moleculeIdPool.erase(iter);
Note: See TracChangeset for help on using the changeset viewer.