00001 #ifndef GLBASEFITNESS_H_ 00002 #define GLBASEFITNESS_H_ 00003 #include <NLInterfaceOutput.h> 00004 00005 #include "GLLogicError.h" 00010 class GLBaseFitness : public nlutils::NLInterfaceOutput 00011 { 00012 public: 00016 GLBaseFitness() {}; 00017 00021 virtual ~GLBaseFitness() {}; 00022 00034 virtual void assignTo(GLBaseFitness& result) const 00035 { 00036 throw GLLogicError("GLBaseFitness:assignTo()\n" 00037 "Is not implemented for this class\n"); 00038 } 00039 00044 virtual GLBaseFitness* copy() const = 0; 00045 00050 virtual bool isEqual(const GLBaseFitness* fitness) const = 0; 00051 00057 virtual bool isLess(const GLBaseFitness* fitness) const = 0; 00058 00062 class CompareFitness 00063 { 00064 public: 00069 bool operator()(const GLBaseFitness* left, 00070 const GLBaseFitness* right) const 00071 { return left->isLess(right); } 00072 };//class CompareOrganismsSoft 00073 00074 }; 00075 00080 inline bool operator<(const GLBaseFitness& left, 00081 const GLBaseFitness& right) 00082 { return left.isLess(&right); } 00083 00088 inline bool operator==(const GLBaseFitness& left, 00089 const GLBaseFitness& right) 00090 { return left.isEqual(&right); } 00091 00092 #endif /*GLBASEFITNESS_H_*/