Changes in src/World.cpp [e472eab:57f243]
- File:
-
- 1 edited
-
src/World.cpp (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/World.cpp
re472eab r57f243 25 25 #include "Helpers/Assert.hpp" 26 26 #include "Box.hpp" 27 #include " Matrix.hpp"27 #include "LinearAlgebra/Matrix.hpp" 28 28 #include "defs.hpp" 29 29 … … 48 48 } 49 49 50 vector<atom*>World::getAllAtoms(AtomDescriptor descriptor){50 World::AtomComposite World::getAllAtoms(AtomDescriptor descriptor){ 51 51 return descriptor.findAll(); 52 52 } 53 53 54 vector<atom*>World::getAllAtoms(){54 World::AtomComposite World::getAllAtoms(){ 55 55 return getAllAtoms(AllAtoms()); 56 56 } … … 234 234 atomIdPool_t::iterator iter=atomIdPool.begin(); 235 235 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); 237 237 // we wont use this iterator anymore, so we don't care about invalidating 238 238 atomIdPool.erase(iter); 239 if(newRange.first<newRange. second){239 if(newRange.first<newRange.last){ 240 240 atomIdPool.insert(newRange); 241 241 } … … 247 247 248 248 void World::releaseAtomId(atomId_t id){ 249 atomIdPool.insert(make _pair(id,id+1));249 atomIdPool.insert(makeRange(id,id+1)); 250 250 defragAtomIdPool(); 251 251 } … … 253 253 bool World::reserveAtomId(atomId_t id){ 254 254 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){ 257 257 atomIdPool.insert(newRange); 258 258 } … … 263 263 // look for a range that matches the request 264 264 for(atomIdPool_t::iterator iter=atomIdPool.begin();iter!=atomIdPool.end();++iter){ 265 if(iter-> first>id){266 // we have cover d all available ranges... nothing to be found here265 if(iter->isBefore(id)){ 266 // we have covered all available ranges... nothing to be found here 267 267 break; 268 268 } 269 269 // 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)){ 271 271 // we found a matching range... get the id from this range 272 272 273 273 // 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); 276 276 // remove this range 277 277 atomIdPool.erase(iter); 278 if(bottomRange.first<bottomRange. second){278 if(bottomRange.first<bottomRange.last){ 279 279 atomIdPool.insert(bottomRange); 280 280 } 281 if(topRange.first<topRange. second){281 if(topRange.first<topRange.last){ 282 282 atomIdPool.insert(topRange); 283 283 } … … 301 301 atomIdPool_t::iterator next = iter; 302 302 next++; 303 if(next!=atomIdPool.end() && (next->first==iter-> second)){303 if(next!=atomIdPool.end() && (next->first==iter->last)){ 304 304 // 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); 306 306 atomIdPool.erase(iter); 307 307 atomIdPool.erase(next); … … 317 317 atomIdPool_t::iterator iter = atomIdPool.end(); 318 318 iter--; 319 if(iter-> second==currAtomId){319 if(iter->last==currAtomId){ 320 320 currAtomId=iter->first; 321 321 atomIdPool.erase(iter); … … 333 333 moleculeIdPool_t::iterator iter=moleculeIdPool.begin(); 334 334 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); 336 336 // we wont use this iterator anymore, so we don't care about invalidating 337 337 moleculeIdPool.erase(iter); 338 if(newRange.first<newRange. second){338 if(newRange.first<newRange.last){ 339 339 moleculeIdPool.insert(newRange); 340 340 } … … 346 346 347 347 void World::releaseMoleculeId(moleculeId_t id){ 348 moleculeIdPool.insert(make _pair(id,id+1));348 moleculeIdPool.insert(makeRange(id,id+1)); 349 349 defragMoleculeIdPool(); 350 350 } … … 352 352 bool World::reserveMoleculeId(moleculeId_t id){ 353 353 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){ 356 356 moleculeIdPool.insert(newRange); 357 357 } … … 362 362 // look for a range that matches the request 363 363 for(moleculeIdPool_t::iterator iter=moleculeIdPool.begin();iter!=moleculeIdPool.end();++iter){ 364 if(iter-> first>id){364 if(iter->isBefore(id)){ 365 365 // we have coverd all available ranges... nothing to be found here 366 366 break; 367 367 } 368 368 // 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)){ 370 370 // we found a matching range... get the id from this range 371 371 372 372 // 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); 375 375 // remove this range 376 376 moleculeIdPool.erase(iter); 377 if(bottomRange.first<bottomRange. second){377 if(bottomRange.first<bottomRange.last){ 378 378 moleculeIdPool.insert(bottomRange); 379 379 } 380 if(topRange.first<topRange. second){380 if(topRange.first<topRange.last){ 381 381 moleculeIdPool.insert(topRange); 382 382 } … … 400 400 moleculeIdPool_t::iterator next = iter; 401 401 next++; 402 if(next!=moleculeIdPool.end() && (next->first==iter-> second)){402 if(next!=moleculeIdPool.end() && (next->first==iter->last)){ 403 403 // 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); 405 405 moleculeIdPool.erase(iter); 406 406 moleculeIdPool.erase(next); … … 416 416 moleculeIdPool_t::iterator iter = moleculeIdPool.end(); 417 417 iter--; 418 if(iter-> second==currMoleculeId){418 if(iter->last==currMoleculeId){ 419 419 currMoleculeId=iter->first; 420 420 moleculeIdPool.erase(iter);
Note:
See TracChangeset
for help on using the changeset viewer.
