diff --git a/eo/src/eoAlgo.h b/eo/src/eoAlgo.h new file mode 100644 index 000000000..87dcaad2c --- /dev/null +++ b/eo/src/eoAlgo.h @@ -0,0 +1,55 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// eoOp.h +// (c) GeNeura Team, 1998 +/* + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: todos@geneura.ugr.es, http://geneura.ugr.es + */ +//----------------------------------------------------------------------------- + +#ifndef _EOALGO_H +#define _EOALGO_H + +#include // for population + +/** This is a generic class for population-transforming algorithms. There + is only one operator defined, which takes a population and does stuff to + it. It needn't be a complete algorithm, can be also a step of an + algorithm. This class just gives a common interface to linear + population-transforming algorithms. + @author GeNeura Team + @version 0.0 +*/ +template< class EOT > +class eoAlgo { +public: + + /// Dtor + virtual ~eoAlgo() {}; + + /** Run the algorithm on a population. This operation is not constant, + because somebody would want to change stuff in the algorithm each + time it's applied. + * @param _pop is the population that the algorithm is acting on + */ + virtual void operator() ( eoPop& _pop ) = 0; + +}; + + +#endif diff --git a/eo/src/eoEvalFuncPtr.h b/eo/src/eoEvalFuncPtr.h new file mode 100644 index 000000000..cacd5c478 --- /dev/null +++ b/eo/src/eoEvalFuncPtr.h @@ -0,0 +1,50 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// eoOp.h +// (c) GeNeura Team, 1998 +/* + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: todos@geneura.ugr.es, http://geneura.ugr.es + */ +//----------------------------------------------------------------------------- + +#ifndef EOEVALFUNCPTR_H +#define EOEVALFUNCPTR_H + +#include + +/** EOEvalFuncPtr: This class + * takes an existing function pointer and converts it into a evaluation + * function class. That way, old style C or C++ functions can be adapted to EO + * function classes. + */ +template< class EOT > +struct eoEvalFuncPtr: public eoEvalFunc { + + eoEvalFuncPtr( void (* _eval)( EOT& ) ) + : eoEvalFunc(), evalFunc( _eval ) {}; + + /// Effectively applies the evaluation function to an EO + virtual void operator() ( EOT & _eo ) const { + (*evalFunc)( _eo ); + }; + + private: + void (* evalFunc )( EOT& ); +}; + +#endif