00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _eoCombinedContinue_h
00026 #define _eoCombinedContinue_h
00027
00028 #include <eoContinue.h>
00029
00041 template< class EOT>
00042 class eoCombinedContinue: public eoContinue<EOT> {
00043 public:
00044
00046 typedef typename EOT::Fitness FitnessType;
00047
00049 eoCombinedContinue( eoContinue<EOT>& _cont)
00050 : eoContinue<EOT> ()
00051 {
00052 continuators.push_back(&_cont);
00053 }
00054
00056 eoCombinedContinue( eoContinue<EOT>& _cont1, eoContinue<EOT>& _cont2)
00057 : eoContinue<EOT> ()
00058 {
00059 continuators.push_back(&_cont1);
00060 continuators.push_back(&_cont2);
00061 }
00062
00063 void add(eoContinue<EOT> & _cont)
00064 {
00065 continuators.push_back(&_cont);
00066 }
00067
00069 void removeLast(void)
00070 {
00071 continuators.pop_back();
00072 }
00074
00075
00078 virtual bool operator() ( const eoPop<EOT>& _pop )
00079 {
00080 for (unsigned i = 0; i < continuators.size(); ++i)
00081 if ( !(*continuators[i])(_pop) ) return false;
00082 return true;
00083 }
00084
00085 virtual std::string className(void) const { return "eoCombinedContinue"; }
00086
00087 private:
00088 std::vector<eoContinue<EOT>*> continuators;
00089 };
00090
00091 #endif
00092