00001 00020 #ifndef _SIGNALABLE 00021 00022 #define _SIGNALABLE 1 00023 00024 #include <list> 00025 using namespace std; 00026 00027 class NotifyObserver { 00028 public: 00029 virtual void notify(void) { 00030 } 00031 00032 virtual ~NotifyObserver(void) {} 00033 }; 00034 00035 class NotifyEvalObserver { 00036 public: 00037 virtual void notify(double fitness)=0; 00038 00039 virtual ~NotifyEvalObserver(void) {} 00040 }; 00041 00042 00043 class IReset { 00044 public: 00045 virtual ~IReset(void) {} 00046 virtual void reset(void){} 00047 virtual void clear(void){} 00048 }; 00049 00050 class Resetable : public IReset { 00051 private: 00052 list<IReset*> *m_observers; 00053 00054 public: 00055 Resetable(void): m_observers(NULL) {} 00056 virtual ~Resetable(void); 00057 virtual void realReset(void) {} 00058 virtual void realClear(void){} 00062 void appendSignal(IReset *obj); 00063 00067 void clearSignal(void); 00068 00069 void reset(void); 00070 void clear(void); 00071 }; 00072 00073 #endif