From 9197e3e5c57c1e067971a62e0636eabf5c1c8252 Mon Sep 17 00:00:00 2001 From: evomarc Date: Tue, 24 Apr 2001 04:56:12 +0000 Subject: [PATCH] eoEvalFuncCounter is now in a separate file --- eo/src/eoEvalFuncCounter.h | 56 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 eo/src/eoEvalFuncCounter.h diff --git a/eo/src/eoEvalFuncCounter.h b/eo/src/eoEvalFuncCounter.h new file mode 100644 index 00000000..fb28de59 --- /dev/null +++ b/eo/src/eoEvalFuncCounter.h @@ -0,0 +1,56 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// eoEvalFuncCounter.h +// (c) Maarten Keijzer, Marc Schoenauer and GeNeura Team, 2000 +/* + 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 + Marc.Schoenauer@polytechnique.fr + mkeijzer@dhi.dk + */ +//----------------------------------------------------------------------------- + +#ifndef eoEvalFuncCounter_H +#define eoEvalFuncCounter_H + +#include +#include + +/** +Counts the number of evaluations actually performed, thus checks first +if it has to evaluate.. etc. +*/ +template class eoEvalFuncCounter : public eoEvalFunc, public eoValueParam +{ + public : + eoEvalFuncCounter(eoEvalFunc& _func, std::string _name = "Eval. ") + : eoValueParam(0, _name), func(_func) {} + + virtual void operator()(EOT& _eo) + { + if (_eo.invalid()) + { + value()++; + func(_eo); + } + } + + private : + eoEvalFunc& func; +}; + +#endif