src/ell/NeighborGenerator.hh
Go to the documentation of this file.00001 #ifndef NEIGHBORGENERATOR_HH_ 00002 #define NEIGHBORGENERATOR_HH_ 00003 00004 00005 #include "ell/State.hh" 00006 00007 namespace ell { 00013 class NeighborGenerator 00014 { 00015 public: 00016 00017 virtual ~NeighborGenerator(){}; 00018 00024 virtual State::NeighborListPtr getNeighborList(const State* const s) const = 0; 00025 }; 00026 00033 class NG_Random : public NeighborGenerator 00034 { 00035 protected: 00036 00037 class NeighborList : public State::NeighborList 00038 { 00039 protected: 00041 const State* const origin; 00042 public: 00043 NeighborList(const State* _origin); 00044 00045 virtual ~NeighborList(); 00046 00053 virtual State* first(State::NeighborList::ItState** itstate) const; 00054 00062 virtual State* next( State::NeighborList::ItState* itstate, 00063 State* elem) const; 00064 }; 00065 00066 public: 00067 00073 State::NeighborListPtr getNeighborList(const State* const s) const; 00074 }; 00075 00082 class NG_SuccessiveRandom : public NeighborGenerator 00083 { 00084 public: 00085 00091 State::NeighborListPtr getNeighborList(const State* const s) const; 00092 }; 00093 00100 class NG_Successive : public NeighborGenerator 00101 { 00102 public: 00103 00109 State::NeighborListPtr getNeighborList(const State* const s) const; 00110 }; 00111 00112 } // namespace ell 00113 00114 #endif /*NEIGHBORGENERATOR_HH_*/