Ignore:
Timestamp:
Feb 18, 2010, 1:21:35 PM (16 years ago)
Author:
Tillmann Crueger <crueger@…>
Children:
cbc27f
Parents:
b53a7e
Message:

Added iterator structure that allows iterating over selected atoms in the World.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • molecuilder/src/World.cpp

    rb53a7e ra5471c  
    1212#include "periodentafel.hpp"
    1313#include "Descriptors/AtomDescriptor.hpp"
     14#include "Descriptors/AtomDescriptor_impl.hpp"
    1415
    1516using namespace std;
     
    4647}
    4748
     49/******************************* Iterators ********************************/
     50
     51World::AtomIterator::AtomIterator(AtomDescriptor _descr, World* _world) :
     52    descr(_descr.get_impl()),
     53    world(_world)
     54{
     55  state = world->atoms.begin();
     56  advanceState();
     57}
     58
     59World::AtomIterator::AtomIterator(const AtomIterator& rhs) :
     60    state(rhs.state),
     61    descr(rhs.descr)
     62  {}
     63
     64World::AtomIterator& World::AtomIterator::operator++(){
     65  advanceState();
     66}
     67
     68bool World::AtomIterator::operator==(const AtomIterator& rhs){
     69  return state==rhs.state;
     70}
     71
     72bool World::AtomIterator::operator!=(const AtomIterator& rhs){
     73  return state!=rhs.state;
     74}
     75
     76atom* World::AtomIterator::operator*(){
     77  return (*state).second;
     78}
     79
     80void World::AtomIterator::advanceState(){
     81  while(state!=world->atoms.end() && !descr->predicate(*state))
     82    state++;
     83}
     84
     85World::AtomIterator World::getAtomIter(AtomDescriptor descr){
     86  return AtomIterator(descr,this);
     87}
    4888
    4989/******************************* Singleton Stuff **************************/
Note: See TracChangeset for help on using the changeset viewer.